Les 3 modes de concurrence wcf

2 218 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 218
Sur SlideShare
0
Issues des intégrations
0
Intégrations
790
Actions
Partages
0
Téléchargements
15
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Les 3 modes de concurrence wcf

  1. 1. Les 3 modes de concurrence WCF Auteur: Alain BELUT
  2. 2. WCF propose 3 modes de Concurrence: Single Multiple Reentrant Single : le MSDN nous dit : Linstance de service est monothread et naccepte pas dappels réentrants. Si la propriété InstanceContextMode est Single, et que des messages supplémentaires arrivent pendant que linstance sert un appel, ces messages doivent attendre jusquà ce que le service soit disponible ou jusquà expiration de leur délai dattente. Reentrant : le MSDN nous dit : Linstance 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 dassurer la cohérence de létat de vos objets avant les appels sortants et vous devez confirmer que les données dopération locales sont valides après des appels sortants. Notez que linstance 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 nest pas réentrant, la séquence des appels provoque un interblocage. Multiple : le MSDN nous dit : Linstance de service est multithread. Il nexiste aucune garantie de synchronisation. Comme dautres threads peuvent modifier votre objet de service nimporte 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 - contact@novencia.com 2
  3. 3. 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 nest pas visible! Pour pouvoir tester ce qui suit, il faudra utiliser InstanciateContextMode. Single ou InstanceContextMode.PerSession de sorte quune 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 quil y a donc un délai à ce niveau) Imaginons quun 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 - contact@novencia.com 3
  4. 4. Cas 1 : ConcurrencyMode.Single (le mode par défaut dun 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 - contact@novencia.com 4
  5. 5. Cas 2 : ConcurrencyMode.Multiple01/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 - contact@novencia.com 5
  6. 6. Cas 3 : ConcurrencyMode.Reentrant01/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 - contact@novencia.com 6
  7. 7. Le mode Reentrant permet dobtenir de meilleures performances sans modifier de code. Lorsque ce mode est configuré pour un service, il sera capable daccepter des nouvelles demandes dès lors quil aura fait appel à un autre service. Cela permet donc de gagner du temps sur les traitements. Contrairement au mode Multiple vous naurez 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.zip01/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 - contact@novencia.com 7

×