Crad's .NET Blog

L'UGIblog di Marco De Sanctis
posts - 190, comments - 457, trackbacks - 70

[WCF] Condividere la medesima class library tra server e client

Windows Communication Foundation permette, in maniera estremamente semplice, di utilizzare tipi complessi sia come parametri di un servizio che come valori di ritorno: basta che essi siano marcati o con l'attributo DataContract o Serializable:

[DataContract] public class MyClass { // codice.... } [ServiceContract] public interface IMyService { [OperationContract] string MyMethod(MyClass parameter); }

Il comportamento di default di svcutil.exe, in fase di generazione del proxy per l'accesso al servizio da parte del client, è quello di creare una classe omonima di MyClass e con i medesimi membri pubblici. Nel caso in cui MyClass sia definita in un assembly referenziato sia dal service che dal client, è tuttavia possibile fare in modo che entrambi questi attori condividano lo stesso tipo, utilizzando il parametro /reference (o la sua versione breve /r) di svcutil.exe. Supponendo che il nome dell'assembly in questione sia CommonTypes, ad esempio, possiamo scrivere:

svcutil.exe /out:"MyServiceClient.cs" /language:csharp "http://serviceUrl/service.svc" /r:"CommonTypes.dll"

Technorati tags: ,

Print | posted on lunedì 2 aprile 2007 17:03 | Filed Under [ .Net 3.0 ]

Powered by:
Powered By Subtext Powered By ASP.NET