pippo87 ha scritto:
Comunque sul client invoco tutti i metodi dall'UI thread poichè gli avevo definiti con la proprietà IsOneWay=true.
ok. Invece, nel server, viene sempre creato un nuovo thread ma con l'attributo
ServiceBehavior e i suoi parametri InstanceContextMode e ConcurrencyMode puoi regolare il numero di thread che possono essere creati contemporaneamente.
Ipotizza di aver configurato il servizio così:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode=ConcurrencyMode.Single)]
public class MyService : IService
In questo modo ammetti una sola istanza (singleton) che viene riutilizzata per ogni utente e, siccome la ConcurrencyMode è impostata a Single, solo un thread alla volta potrà essere creato per quell'istanza. Così crei una sorta di "coda allo sportello" in cui un solo cliente alla volta può essere servito.
Invece, configurandolo così:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Single)]
public class MyService : IService
già fai in modo che il servizio possa servire più richieste contemporaneamente. Il massimo numero di thread creati sarà 1 per utente, quindi immaginati tanti "sportelli" quanti sono i clienti da servire.
Configurato in questo modo:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Multiple)]
public class MyService : IService
ciascun utente potrà eseguire più chiamate contemporanee al servizio. Immaginati che per ogni cliente, allo sportello, ci siano più impiegati in grado di svolgere contemporaneamente le varie richieste di quel cliente.
Comunque, parti da qui:
http://msdn.microsoft.com/en-us/library/ms731193.aspxPoi ci sono altri articoli su Session e Concurrency.
http://msdn.microsoft.com/en-us/library/ms751429.aspxhttp://www.codeproject.com/KB/WCF/Sessions_in_WCF.aspxhttp://msdn.microsoft.com/en-us/library/ms752260.aspxAssicurati che il tuo servizio sia thread-safe prima di usare la ConcurrencyMode.Multiple.
ciao
Modificato da BrightSoul il 28 dicembre 2011 12.41 -