Benchmark de Windows Communication Foundation

Je viens de faire un mini benchmark de Windows Communication Foundation (WCF) pour mon client et je vous propose, dans cet article, de partager les résultats avec vous. Vu 3500  fois

 

Généralité

Description global des tests :

  • Tous les tests ont été réalisés en passant par un service simple
  • Les temps exprimés sont en millisecondes
  • Seul l’appel à la méthode du service est comptabilisé
  • Pour les tests avec WCF coté client, l’appel à la méthode Close() du proxy est fait à chaque appel (sauf dans le test 2)
  • Le basicHttpBinding a été utilisé lors de l’utilisation de WCF
  • L'abréviation WS signifie que l'on n'utilise pas WCF. En gros, sur le client on fait un "Add Web Reference ...". Dans le cas contraire, on fait un "Add Service Reference ..."


Test 1

Description :

  • Ce test compare les performances entre l'utilisation d'un client WCF et WS et un serveur WCF ou WS
  • La dernière colonne indique les temps de réponse lorsque WCF n’est utilisé ni coté client, ni coté serveur (WebService à la mode Framework 1.x)


WS coté client –

WCF coté serveur

WCF coté client –

WCF coté serveur

WS coté client –

WS coté serveur

125

22937

2094

46

250

109

46

250

62

46

250

78

46

250

62

46

281

109

46

265

78


Test 2


Description : ce test reprend exactement le Test 1 mais cette fois-ci, le proxy WCF (donc coté client) n’est pas recréé à chaque fois. Il est gardé en cache (dans une variable globale)


 

WCF coté client –

WCF coté serveur

453

62

93

46

46

46

46


Test 3

Description :

  • Appel après une longue période d’inactivité (plus de 30 minutes).
  • Identique au Test 1


Date des appels

Ordre

WS coté client –

WCF coté serveur

WCF coté client –

WCF coté serveur

15h45

-

484

-

16h31

WCF puis WS

46

16953

17h41

WS puis WCF

62

16875

Conclusion

  • La création du proxy WCF est très gourmande. Si on n'utilise pas de cache l'appel est à peu près 5 fois plus lent que l’appel du même Webservice sans WCF
  • Un overhead très important apparait lors de l’utilisation de WCF de bout en bout lorsque le service n’a pas été invoqué pendant une période prolongée. Il s'agit certainement d'un problème de configuration mais je n'ai toujours pas trouvé la cause. 
  • Le test 1 met en évidence un gain d’à peu près 25% entre un environnement WS coté client – WS coté serveur et WS coté client – WCF coté serveur (en faveur de la deuxième configuration)


Liens utiles :

 


 

Publié le  11/07/2007
Auteur:  Aleks

 

Commentaires

Posté le : 10/09/2007 Par : cravier

Bon bench, les mesures semblent pertinentes.
La sécurité WCF est-elle activée ? Si elle ne l'est pas, c'est un gros warning pour l'utilisation de WCF.

Posté le : 10/09/2007 Par : Aleks

Merci pour le commentaire.
Non aucune sécurité particulière n'était configurer.
Cependant je ne sais pas si il faut voir là un "gros warning" car, biensur que les temps seront moins bon si on ajoute de la sécurité à WCF, mais ça en ajoutera également si on en ajoute au Web Service.
Il faudrait tester, mais il serait même logique que WCF sécurisé soit plus rapide que WS étant donné que c'est Build-in.

Si vous souhaitez ajouter un commentaire vous devez être authentifié.

 

ASP MAGAZINE  ASP-PHP.NET  C²I  CodePPC  CodeS-SourceS  Dotnet-News.com  Tech Head Brothers 

Dotnet-Project.com© tous droits réservés
Webmaster Aleks. Ont collaboré à l'aboutissement de ce projet :
CodeS-SourceS.com, ASP-PHP.Net, DotNet-FR.org, C2i.fr, Newsletter ASP.NET.