Frédéric Colin
WCF : L’extensibilité par la pratique – L’exemple
Dans le précédent volet, je vous ai expliqué une partie des fondamentaux de l’extensibilité WCF. Je vous ai aussi décrit le fonctionnel d’un exemple plus complet que je vais maintenant concevoir et développer pour illustrer l’invocation d’opération.
Par Frédéric Colin publié le 13/09/2009 à 22:18, lu 1796 fois, 9 pages
 3 | Implémentation de la solution
La solution mise en œuvre est donc classiquement composée des projets suivants :
 
/content/9e0f12af-1850-46bd-aef3-086b984f980c/image5.jpeg
 
Pour arriver à automatiser au maximum l’exécution, j’ai mis en place la mécanique de compilation suivante :
  • La compilation du projet « THB.Sample.DataContracts » recopie la dll générée dans le répertoire « THB.Sample.Host\Contracts » du processus porteur.
  • La compilation des projets « THB.Sample.Service » et « THB.Sample.Service2 » recopie les dll générées dans le répertoire « THB.Sample.Host\Assemblies » du processus porteur.
  • La compilation du projet « THB.Sample.Host » recopie son répertoire « Assemblies » dans le répertoire « Assemblies » de la cible de compilation.
  • La compilation du projet « THB.Sample.Host » recopie le contenu de son répertoire « Contracts » directement dans le répertoire cible de compilation.
Cela me permet ainsi de définir le répertoire cible contenant les Assemblies à exposer et de ne pas avoir à me soucier des chemins d’accès des dépendances lors de l’exécution en « debug » ou en « release » de la solution à partir de Visual Studio.
Les deux Assemblies métier à exposer « THB.Sample.Service » et « THB.Sample.Service2 » n’ont absolument aucune complexité particulière. Je me contenterai donc de fournir ici les diagrammes de classe correspondant en indiquant que tout est finalement codé en dur dedans.
Pour « THB.Sample.Service » : cette Assembly permet de tester les cas simples (surcharges de méthodes, paramètres simples, tableaux, fonctions, procédures, etc.).
 
/content/9e0f12af-1850-46bd-aef3-086b984f980c/image6.png
 
Pour « THB.Sample.Service2 » : cette Assembly permet de se rapprocher de cas plus orientés métier renvoyant ou acceptant en paramètres des classes de contrats de données éventuellement composées.
 
/content/9e0f12af-1850-46bd-aef3-086b984f980c/image7.png
 
Voici le diagramme de classe utilisé comme contrat de données par l’Assembly précédente :
 
/content/9e0f12af-1850-46bd-aef3-086b984f980c/image8.png
 
Au niveau de la notion de contrats de données, nous nous servirons simplement de la possibilité qu’a WCF (depuis le SP1 du Framework 3.5), de gérer les objets de type POCO et donc non marqués comme étant des contrats de données. En d’autres termes, il n’y aura rien à faire sur ce sujet là et c’est une bonne chose !
 
» Démarrer une discussion