Les 3 modes de concurrence wcf

7
Les 3 modes de concurrence WCF Auteur: Alain BELUT

description

 

Transcript of Les 3 modes de concurrence wcf

Page 1: Les 3 modes de concurrence wcf

Les 3 modes de concurrence WCF Auteur: Alain BELUT

Page 2: Les 3 modes de concurrence wcf

WCF propose 3 modes de Concurrence: Single Multiple Reentrant Single : le MSDN nous dit : L'instance de service est monothread et n'accepte pas d'appels réentrants. Si la propriété InstanceContextMode est Single, et que des messages supplémentaires arrivent pendant que l'instance sert un appel, ces messages doivent attendre jusqu'à ce que le service soit disponible ou jusqu'à expiration de leur délai d'attente.

Reentrant : le MSDN nous dit : L'instance de service est monothread et accepte des appels réentrants. Le service réentrant accepte des appels lorsque vous appelez un autre service ; il vous incombe par conséquent d'assurer la cohérence de l'état de vos objets avant les appels sortants et vous devez confirmer que les données d'opération locales sont valides après des appels sortants. Notez que l'instance de service est déverrouillée uniquement en appelant un autre service sur un canal. Dans ce cas, le service appelé peut réentrer le premier service via un rappel. Si le premier service n'est pas réentrant, la séquence des appels provoque un interblocage.

Multiple : le MSDN nous dit : L'instance de service est multithread. Il n'existe aucune garantie de synchronisation. Comme d'autres threads peuvent modifier votre objet de service n'importe quand, vous devez gérer à tout moment la synchronisation et la cohérence d'état.

01/03/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - [email protected] 2

Page 3: Les 3 modes de concurrence wcf

Pour bien comprendre tout ce qui suit il faut aussi rappeler que par défaut, un service est configuré : InstanciateContextMode.PerCall, ce qui signifie qu'à chaque appel au service une nouvelle instance est créée… et finalement la finesse décrite ici n'est pas visible! Pour pouvoir tester ce qui suit, il faudra utiliser InstanciateContextMode.

Single ou InstanceContextMode.PerSession de sorte qu'une seule instance de service soit mise à disposition.

Pour mieux comprendre ces 3 modes, imaginons que nous avons un client qui fait appel à un service WCF qui lui-même fait appel à un second service WCF.

Le second service WCF va mettre N secondes pour répondre.

(On rappelle que le service WCF 2 prend N secondes pour répondre et qu'il y a donc un délai à ce niveau)

Imaginons qu'un second client fait appel au premier service WCF.

On modifie le paramètre ConcurrencyMode sur le premier service :

01/03/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - [email protected] 3

Page 4: Les 3 modes de concurrence wcf

Cas 1 : ConcurrencyMode.Single (le mode par défaut d'un service WCF)

01/03/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - [email protected] 4

Page 5: Les 3 modes de concurrence wcf

Cas 2 : ConcurrencyMode.Multiple

01/03/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - [email protected] 5

Page 6: Les 3 modes de concurrence wcf

Cas 3 : ConcurrencyMode.Reentrant

01/03/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - [email protected] 6

Page 7: Les 3 modes de concurrence wcf

Le mode Reentrant permet d'obtenir de meilleures performances sans modifier de code. Lorsque ce mode est configuré pour un service, il sera capable d'accepter des nouvelles demandes dès lors qu'il aura fait appel à un autre service.

Cela permet donc de gagner du temps sur les traitements.

Contrairement au mode Multiple vous n'aurez pas à gérer les accès multiples aux objets du service.

Vous pouvez télécharger le code de démonstration fonctionnant sous Visual Studio 2010, FW 4.0 qui illustre le plus simplement du monde ce que nous venons de présenter.

myprojects.zip

01/03/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - [email protected] 7