WCF : Svcutil.exe

di Alessio Leoncini, in WCF,

L'SDK del .NET Framework 3.0 offre alcuni tools utili a velocizzare e semplificare la gestione del codice.
Tra le varie funzioni del tool Svcutil.exe c'è quella di generare una classe "client" che possa fare da proxy al contratto esposto da un servizio.
Tale classe "client" implementa l'interfaccia del contratto ed eredita da System.ServiceModel.ClientBase, tuttavia il costruttore senza parametri non richiama il rispettivo costruttore senza parametri della classe base, come invece avviene per gli altri costruttori con parametri.
Questo comporta che l'istanza della classe "client" debba essere fatta necessariamente specificando come parametro almeno il nome dell'endpoint definito nel file di configurazione, creando di fatto un accoppiamento tra file di configurazione e codice compilato.
Se si modifica il codice della classe "client", forzandolo a richiamare il rispettivo costruttore:

public NomeDelServizioClient() : base() {}

è possibile istanziare tale classe anche senza parametri, riferendosi all'endpoint predefinito o all'unico presente nel file di configurazione.

Perchè ho fatto questo: in fase di studio introduttivo dell'architettura di WCF sento il bisogno di comparare i comportamenti dei bindings predefiniti, dei behaviors ecc.. trovandomi di fatto a modificare il .config molte volte ed ogni volta sono obbligato a modificare il codice del client; modificare il costruttore senza parametri mi ha permesso di sfruttare al meglio la filosofia "only config" ma è chiaro che in un progetto reale, con più servizi e più endpoint, richiamare il costruttore senza parametri genera puntalmente un System.InvalidOperationException .

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese