Channel su netTcpBinding
-
venerdì 3 febbraio 2012 15:35
Ciao a tutti,
ho fatto un servizio WCF che conta il numero dei client commessi, il cui binding è netTcpBinding che esegue una callback. [ServiceContract(Namespace = "Silverlight", CallbackContract = typeof(IDuplexClient))]
Il client sottoscrive l'interfaccia: proxy.ShowMessageReceived += new EventHandler<ShowMessageReceivedEventArgs>(proxy_ShowMessageReceived); e valorizza il numero dei client connessi.
Il tutto funziona ma avrei un paio di domande:
1) Se non sbaglio viene creato un canale tra server e client tipo "cordone ombelicale". Questo quanto è pesante per il server, all'umentare del numero dei client che effettuano una cosa simile?
2) Io dichiaro una variabile a livello di classe di tipo List<T> e la incremento ad ogni client connesso, tale variabile mi viene incrementata. Io mi aspetterei di avere tale variabile vuota ad ogni connessione client ed invece la trovo valorizzata. Come mai?
Grazie anticipate
Tutte le risposte
-
sabato 4 febbraio 2012 00:25
ciao
1) no, non cambia niente per il server perchè la comunicazione è duplex
2) la variabile la dichiari nel client o nel server?
come è impostato il servicebehavior?
è per caso statica?
-
sabato 4 febbraio 2012 10:58
Ciao Pengo11,
You wrote on 03/02/2012 :
1) Se non sbaglio viene creato un canale tra server e client tipo "cordone ombelicale". Questo quanto è pesante per il server, all'umentare del numero dei client che effettuano una cosa simile?
dipende molto da cosa significa "aumentare" quando parli di numero di client, se parliamo di decine non vedo nessun problema se parliamo di centinaia o più allora la cosa è tutto tranne che indolore perchè il server ovviamente per mantenere il "cordone" (scelta di parola mai fu più esatta :-) ) deve mantenere un concetto di "sessione"...cosa che ovviamente pesa "inutilmente" sulle risorse server side se paragonato con un server stateless. In duplex channel ha anche tutta una serie di limitazioni se devi scalare orizzontalmente quindi passare da una singole macchina server a più macchine in balancing perchè, ovviamente, si basa sul concetto di affinity.
se la IList<> la dichiari server side direi che ho risposto anche a quella :-)
.m
--
blog @ //milestone.topics.it- Contrassegnato come risposta Pengo11 lunedì 6 febbraio 2012 09:14
-
domenica 5 febbraio 2012 10:33
Grazie per le risposte!
il mio problema è che da server WCF, dovrò controllare il numero dei client Silverlight5 collegati e da MSDN vedo che gli unici modi per avere un ritorno dal server WCF sono netTcpBinding o pollingDuplexHttpBinding.
Il numero dei client potrebbero essere qualche centinaio direi. Se come dici Mauro la cosa ha un notevole costo, il secondo binding potrebbe migliorare le cose (anche in relazione alla scalabilità)?
GRAZIE
-
domenica 5 febbraio 2012 11:31
Pengo11 wrote:
il mio problema è che da server WCF, dovrò controllare il numero dei client Silverlight5 collegati e da MSDN vedo che gli unici modi per avere un ritorno dal server WCF sono netTcpBinding o pollingDuplexHttpBinding.
Queste cose si fanno col polling di solito, non tenendo una comunicazione aperta solo per sapere quanti client ci sono. È troppo dispendioso di risorse e non scala.
Raffaele Rialdi http://www.iamraf.net
Weblog: http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - http://www.ugidotnet.org/
Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele- Contrassegnato come risposta Pengo11 lunedì 6 febbraio 2012 09:14

