WCF e Overload dei metodi

Per chi come me è abituato a lavorare col pradigma OOP ed approccia per la prima volta ad una architettura a servizi, nel definire i suoi contratti, se ne avrà necessità, creerà vari Overload dei suoi metodi. Ebbene quando proverà ad esporre il suo servizio con WCF, si ritroverà un errore dovuto al fatto che l'Overload dei metodi non è supportato; questo perchè nel creare il file WSDL per la descrizione del servizio, gli OperationContract vengono identificati col loro nome, impedendo di fatto di avere due operation con lo stesso nome.

WCF mette comunque a disposizione un meccanismo per aggirare questo problema; è sufficiente specificare il parametro Name all'interno dell'attributo OperationContract che decora il metodo in overload. Per fare un esempio: supponiamo di avere all'interno del nostro servizio due metodi GetSuppliers che ci ritornano una lista di suppliers; se codifichiamo il nostro contratto in questo modo

[OperationContract(Name = "GetAllSuppliers")] List<Suppliers> GetSuppliers(); [OperationContract(Name = "GetSuppliersPaged")] List<Suppliers> GetSuppliers(int pageNumber, int pageSize);

otteremo un Servizio con due overload del metodo GetSuppliers: il client che accederà a questi metodi dovrà utilizzare invece il nome specificato nel parametro Name.

Personalmente, a conti fatti, preferisco non usare overload e batezzare i metodi in modo univoco direttamente all'interno del servizio.

 

Matteo

Technorati Tag:

Print | posted @ lunedì 27 ottobre 2008 01:03

Comments have been closed on this topic.