WCF ChannelFactory vs Referenze di servizio auto-generate in azienda?

2

Sono consapevole che ci sono state molte discussioni su questo argomento, ma sono ancora confuso su cosa sia meglio per l'ambiente SOA di enterpise. Fondamentalmente, si tratta di un sistema SOA con alcuni servizi Web WCF e alcune applicazioni WPF desktop, che stanno cambiando in modo dinamico.

Opzione 1:

Distribuisci ciascun servizio con mex endpoint. Implementare il proxy in ogni client con client auto-generato / scoperto. Ogni volta che il servizio viene modificato aprirò l'app del client, aggiornerò i riferimenti del servizio e la distribuirò.

Opzione 2:

Per ogni servizio (nel repository del servizio) implementa il progetto Proxy , con il client implementato manully che utilizza ChannelFactory . Quindi, sposta questo Proxy nel nuget dell'azienda. Quindi ... ogni volta che voglio usare questo servizio nell'app WPF, estrarrò il pacchetto nuget. Quando cambierà il servizio WCF aggiornerò la libreria Proxy, la spingerò su nuget. E aggiornalo dall'app WPF.

Quindi in pratica, nuget vs svcutil?

    
posta Ish Thomas 01.05.2018 - 05:04
fonte

1 risposta

3

Direi Opzione 2 perché è più gestibile e pulito.

Puoi creare un wrapper generico e avere la strategia di implementazione personalizzata e di gestione delle eccezioni * in un unico posto, pubblicata come nuget e può essere facilmente utilizzata da qualsiasi client.

* Ad esempio quello che sto attualmente utilizzando si occupa anche della trasformazione in appropriati codici di stato http sul server web in base a vari FaultException<T> ricevuti dal server delle applicazioni che ha esposto i servizi WCF.

Ecco come normalmente facciamo : il servizio e il client sono parte della stessa soluzione (ovviamente il modello di implementazione è diverso per il servizio di base csproj e l'applicazione client). Il client WCF è pubblicato come parte della libreria di base e viene riferito dall'applicazione client e poiché il servizio e l'applicazione client fanno parte della stessa soluzione, è possibile fare riferimento a file .cs correlati al contratto di dati come file di collegamento. Anche questo è un modello abbastanza standard per le applicazioni aziendali e niente di mia invenzione:)

    
risposta data 01.05.2018 - 05:35
fonte