ADO.NET Data Services permette di creare un servizio di tipo REST con estrema semplicità, esponendo mediante URI il modello a oggetti di EF.
Se questo non fosse sufficiente, è sempre possibile creare uno o più metodi che prendono il nome di Service Operations.
Il nuovo metodo deve essere dichiarato nel CodeBehind del file svc (la classe che eredita da DataService<T>) e decorato con l'attributo WebGet (System.ServiceModel.Web.WebGetAttribute).
Le uniche limitazioni per il metodo sono sul tipo restituito che può essere un IEnumerable<T>, void, un tipo definito dal servizio, un tipo primitivo o un IQueryable<T>, al fine di supportare ulteriori operazioni di sorting, filtering, paging, ecc..
[WebGet] public int GetGalleryCount() { Return 2; }
Definito il metodo è necessario impostarne le policy di accesso, operazione da compiere nel metodo InizializeService, utilizzando il membro SetServiceOperationAccessRule dell'oggetto IDataServiceConfiguration, passato al metodo come argomento:
public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); config.SetServiceOperationAccessRule("GetGalleryCount ",ServiceOperationRights.All); }
Per richiamare il metodo in Silverlight, una volta istanziato il nostro servizio, utilizziamo il metodo BeginExecute al quale passiamo un nuovo URI costruito utilizzando il nome del metodo.
MyDataService.BeginExecute<int>(new Uri("GetGalleryCount", UriKind.Relative), (asyncResult) => { QueryOperationResponse<int> _i = _productManager.EndExecute<int>(asyncResult) as QueryOperationResponse<int>; if (_i.Error == null) { _totalProductCount = _i.SingleOrDefault(); //fai altro } }, null);
Eventuali parametri richiesti dal metodo sono passati utilizzando querystring.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.