2010-10-26 10 views

risposta

2

Ciò dipende in una certa misura dalle vostre esigenze. Aprire un canale è costoso, relativamente parlando. È consigliabile che la classe che esegue le chiamate remote implementa IDisposable, che effettui una chiamata a ClientFactory.CreateChannel una volta, utilizzi i canali in tutte le chiamate di metodo e chiuda il canale quando viene chiamato il metodo Dispose. Detto questo, se l'intervallo tra le chiamate ai metodi che chiamano a un servizio remoto è lungo (più lungo del timeout di inattività predefinito sul canale che è 10 minuti), fare un ClientFactory.CreateChannel non è particolarmente dannoso, ma direi sarebbe ancora meglio percorrere la strada IDisposable e incapsulare l'uso della classe con la parola chiave 'using'

+0

In realtà: creare il canale è piuttosto leggero - la creazione di ChannelFactory è ciò che è piuttosto "pesante" sulle prestazioni ... –

+0

@marc_s: Penso che dipenda, se il canale per esempio ha sicurezza su di esso, la sicurezza la negoziazione ha luogo ogni volta che un socket viene aperto al servizio, questo può causare un notevole allungamento della chiamata al metodo, imho. –

+0

@marc_s non hanno migliorato la creazione di ChannelFactory? O almeno sono sicuro di aver letto che hanno migliorato la creazione dopo la prima volta. Aggiornamento: http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx – MattC

0

creando un nuovo canale per ogni chiamata di metodo in cattiva pratica "generalmente".

Duplex servizio WCF

la creazione di un singolo canale e di utilizzarlo fino a quando non v'è alcuna necessità di comunicare con il server più/o il canale viene chiuso.

Dopo aver creato il canale, prima di effettuare qualsiasi chiamata al server, è consigliabile controllare lo stato del canale (Errore, apertura, chiusura).

Registrazione del canale chiuso/Si consiglia di verificare gli eventi di errore immmediatley quando si verifica. in modo da poter intraprendere le azioni necessarie o/e creare nuovamente il canale con lo stesso riferimento all'oggetto del canale dell'oggetto.

Per normale servizio WCF

Creare il proxy pattern, per creare/riutilizzare/re creano, la gestione degli errori di canale e lo smaltimento. imposta il timeout di inattività appropriato insieme alla configurazione appropriata del proxy del client WCF che si adatta meglio alla tua soluzione.

Carica sempre test !!!!

Problemi correlati