AppFabric – Faut il l’utiliser pour écrire une couche de service ?
Avec l’arrivé de AppFabric, il est désormais simple d’héberger des workflow Worflow Foundation dans IIS.
Afin de communiquer avec l’extérieur, un Workflow peut utiliser les composants ReceiveRequest et SendRequest, ces composants utilisent WCF pour dialoguer. Il est donc tentant d’écrire sa couche de service en utilisant AppFabric.
Je me suis intéressé à cette question.
D’un point de vue performance, j’ai réalisé un service WCF classique et un service WCF utilisant WF. Ces 2 services réalisent la même chose. Ils ne font rien d’intéressant, je souhaitais juste connaitre le surcout lié à WF.
Vous trouverez ci-dessous le code utilisé.
Service WCF classique :

Service WF :

Et voici le code utilisé pour mesurer les performances :

Les tests sont multithreadés pour simuler une forte charge.
J’ai exécuté le code sur ma machine (8Go de ram, 8 cœurs) en utilisant IIS7.5 (Windows 7). Les 2 tests se sont effectués à la suite, dans les mêmes conditions.
Avec la configuration par défaut, j’obtiens les résultats suivant :
- Service WCF classique : 3.5 secondes
- Service WF classique : 6.3 secondes
Sans surprise, la solution utilisant WF est plus lente. Par contre, le delta est conséquent : +80%. J’ai alors vérifié la configuration du service au niveau IIS, et désactivé le Monitoring.

Après avoir refait un test, les résultats sont les suivant :
- Service WCF classique : 3.5 secondes
- Service WF classique : 4.5 secondes
La différence de performance est alors réduite, la surcouche WF ne coute plus que 30%.
Nous avons vu que d’un point de vue technique, l’écart de performance est faible. Si le service n’est pas critique en terme de performance, ce choix est tout à fait envisageable.
D’un point de vue fonctionnelle, il faut se demander si l’on a vraiment besoin de Workflow Foundation ou si les services WCF classique suffisent. Voici les questions que l’on peut se poser ?
- Allez-vous utiliser les composants de Workflow Foundation ? ou créer une activité personnalisée qui contiendra tout votre code ?
- Vos workflow ont-ils une vie ? Accèderez-vous plusieurs fois à vos Workflow ?
- Allez-vous persister vos Workflows ?
- Allez-vous surveiller vos Workflows ? (monitoring)
Si vous répondez non à toutes ces questions, le choix de Workflow Foundation avec AppFabric n’est peut-être pas nécessaire pour vos besoins, sinon, ce choix est envisageable.
Et vous ? Qu’en pensez-vous ? Dans quelle contexte avez-vous utilisé AppFabric ?