.NET, Architecture, ALM, Cloud

Publicité

Intégrer Unity Application Block à vos services WCF

Pour faire suite au billet Contrôler l'instanciation de vos services WCF, vous trouverez à cette adresse la description d'une librairie utilitaire pour intégrer Unity Application Block à vos services WCF :


 - Télécharger la librairie et son code source

 

Cette librairie va tout d'abord vous apporter un InstanceProvider WCF (activable par configuration en tant que ServiceBehavior) permettant à WCF de faire appel à votre container unity pour instancier les services.

Mais ce n'est pas tout... En effet, vous aurez la possibilité pour chacun de vos services de définir un LifeTimeManager Unity liés au contexte WCF fournit par la libraire :


  - "UnityOperationContextLifetimeManager" : L'instance de votre service sera crée à chaque appel d'opération
  - "UnityInstanceContextLifetimeManager" : L'instance de votre service sera crée suivant le contexte de votre instance par défaut par session ("PerSession"). Vous aurez donc une instance par session utilisateur. Si les sessions ne sont pas supporté par votre binding (par exemple basicHttpBinding), l'instance sera recréée à chaque appel d'opération.
  - "UnityContextChannelLifetimeManager" : L'instance de votre service sera crée lors de l'initialisation du channel.
  - "UnityServiceHostBaseLifetimeManager" : L'instance de votre service sera crée lors de l'initialisation du hoster WCF côté serveur.


Ces LifeTimeManagers ont été réalisé à partir du pattern  IExtensibleObject<T> permettant d'ajouter des extensions sur les objets WCF "ServiceHostBase", "InstanceContext", "OperationContext" et "IContextChannel".

Une extension "UnityWcfExtension" a donc été implémenté pour enregistrer, récupérer et libérer une instance, extension sur laquelle se greffe nos objets extensibles (Host, Channel, Operation et Instance) :

 

extension

Le LifeTimeManager de base WCF fait donc appel à l'extension pour implémenter le mécanisme de récupération d'instance, extension récupérée  à l'aide des classes filles ("UnityOperationContextLifetimeManager"...) :

 

lifetimemanager

 

Cette librairie va donc vous permettre facilement par configuration de lier votre container unity au mécanisme d'instanciation de WCF et définir la durée de vie de vos services (hoster serveur, session, channel, opération).

 

 

Publicité
Retour à l'accueil
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
M
<br /> <br /> No problem :)<br /> <br /> <br /> <br />
Répondre
M
<br /> <br /> Merci pour l'info, je cherchais ça depuis longtemps, je suis tombé par hazard sur votre blog que je trouve très instructif.<br /> <br /> <br /> <br />
Répondre