Ho un'applicazione WPF che finora è stata solo client, ma ora sto lavorando per suddividerla in un lato client e server. In questo lavoro sto introducendo WCF per la comunicazione client-server. La mia applicazione ha diversi progetti e sono necessari riferimenti di servizio da più di uno di questi.Struttura dell'applicazione utilizzando WCF
Lo sforzo iniziale nel fare la separazione è fare tutto "in modo diretto". Tutti i progetti che devono comunicare con un servizio ricevono un riferimento al servizio, e così anche il progetto principale dell'applicazione WPF - per ottenere l'app.config lì. Trovo che questo si trasformi in un casino piuttosto rapidamente, e non riesco a immaginare che questa sia la tipica architettura usata dalle persone? Ho anche riscontrato problemi con il fatto che ognuno dei riferimenti al servizio genera una nuova implementazione delle classi DataContract - quindi non esiste una comprensione comune delle classi DataContract su più progetti. Ho alcune classi ViewModel in un progetto e un altro progetto che installa alcuni ViewModel. Mi piacerebbe passare l'oggetto ricevuto dal servizio, ma non posso come la rappresentazione generata lato client dell'oggetto ricevuto differisce in ogni progetto.
Quindi, c'è un modo consigliato di strutturare tali separazioni client/server utilizzando WCF? O principi da seguire? Sto pensando a un progetto Proxy comune utilizzato sul lato client che esegue la comunicazione con i servizi, avvolge i dati ricevuti e restituisce i dati su un modulo ben noto alle librerie client. Dovrebbe dare solo un riferimento al servizio, e credo che mi occorresse solo App.config nel progetto wpfApp? Ha senso ciò?
Grazie per la risposta molto bella!Alcune domande: Avere un host di servizio è necessario avviare sia l'host che il client all'avvio della tua app? O c'è un modo per aggirare questo? Per quanto riguarda i proxy client - quale preferiresti? Manuale impl suona più coerente in quanto non si ha a che fare con riferimenti di servizio che non sono aggiornati. – stiank81
@bambuska: certo, è necessario avviare sia l'host del servizio che il client da testare; selezionare "lanciare più progetti" in Visual Studio per ottenere questo risultato: è possibile avviare sia l'host del servizio che il client quando si preme F5. –
Proxy client: mi piace il controllo totale che ho quando eseguo l'implementazione manuale dei proxy client - questo ** richiede ** anche se posso condividere il contratto tra server e client (poiché l'installazione manuale dei proxy client deve avere accesso –