Se si definiscono sia il client che il servizio, non è necessario utilizzare le classi di generazione WSDL. Spostare gli oggetti condivisi in un assembly separato e fare riferimento a entrambi i progetti client e server. Quando crei il riferimento al servizio, c'è un'opzione "avanzata" (che credo sia attiva per impostazione predefinita) che riutilizza qualsiasi classe nota dal WSDL invece di generarne di nuove.
Ancora meglio, se si sposta il contratto di servizio nella libreria condivisa, non è nemmeno necessario creare il riferimento del servizio, è sufficiente chiamare lo ChannelFactory
direttamente ed eliminare l'intera classe proxy generata automaticamente.
Ho una dimostrazione su come fare entrambe le cose sul mio blog: http://blog.kutulu.org/2012/03/proxy-free-wcf-ditching-proxy.html
Se è assolutamente necessario di utilizzare il WSDL del servizio (ad esempio, non si ha il controllo sul lato del servizio e potrebbe cambiare su di te), quindi puoi estendere le classi parziali che VS crea (come hai suggerito). La maggior parte delle classi generate automaticamente da VS in questi giorni sono classi parziali appositamente per rendere possibile questo tipo di estensione. Lo svantaggio, ovviamente, è che nulla garantisce che i metodi aggiuntivi di classe parziale del client e del server siano gli stessi. Lo considererei sicuramente l'ultima opzione.
fonte
2012-06-01 12:38:27
WCF genererà una classe proxy lato client che ha la stessa ** firma XML ** se serializzata/deserializzata, ma che NON ** "propagherà" alcun metodo (solo rigorosamente dati - proprietà pubbliche della classe)) dal server al client. –
che vedo ma come raggiungere il mio obiettivo? – levi