2. Création d’un service WCF
WCF est une technologie de plus en plus présente sur tous les grands projets
d’entreprise.
Ainsi connaître son fonctionnement et savoir réaliser des services devient plus
qu’une simple nécessité.
Cet article a pour but de montrer la création d’un service basique.
Afin que cela soit à la portée de tout le monde une base d’exemple SQL de
Microsoft sera employée.
Et comme j’ai déjà beaucoup parlé, on va plutôt passer à quelque chose de plus
concret.
Principe de WCF
Le but de WCF est de rendre disponible des informations à plusieurs clients si
ceux-ci ont les droits nécessaires pour accéder à ces informations.
Du point de vu technique, cela se traduit par le fait d’exposer une ou plusieurs
méthodes d’un objet à travers un réseau afin que des applications tierces
puissent les utiliser.
24/01/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. Création d’un projet WCF
Tout d’abord il faudra ouvrir Visual Studio (dans mon cas VS 2010) et aller créer un
nouveau projet :
Fichier > Nouveau > Projet
De la nous allons dans C# > WCF > Application du service WCF, le nommer et faire OK
24/01/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. Regardons ce qu’il a créé :
Nous pouvons voir que nous avons :
• le fichier de configuration (Web.config)
• une classe pour le service (Service1.svc)
• l’interface pour cette classe (IService1.cs)
Pour montrer exactement comment ces classes sont créées nous allons les
supprimer dans un premier temps. Du coup Service1.svc et IService1.cs partent à la
poubelle (clic droit sur chaque et ensuite supprimer)
24/01/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. Importation de données et création d’une connexion SQL
En ce qui concerne les données nécessaires pour alimenter le service je me suis servi
de la base SQL d’exemple de Microsoft. Vous pouvez la télécharger ici.
Une fois le téléchargement finis lancez-le .MSI et la fenêtre suivante va s’ouvrir à vous:
A la fin de l’installation vous devez ouvrir le répertoire où les donnes ont été
extraites (dans mon cas C:SQL Server 2000 Sample Databases)
24/01/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. Voici à quoi il ressemble le contenu de ce dossier.
Ouvrir ensuite le fichier intpubs.sql in VS.
Faire un clic droit et Exécuter.
La base contenant les données nécessaires vient d’être
rajoutée et alimenté en SQL.
Nous allons maintenant rendre cette base accessible
depuis Visual Studio.
Ajout d’une référence vers une base en Visual Studio
Ouvrir l’Explorateur de serveurs en Visual studio (Outils > Se connecter au serveur).
Ajoutez ensuite une nouvelle connexion: Connexion de données clic droit > Ajouter
une connexion
24/01/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. Dans la fenêtre suivante sélectionnez une connexion de type « Fichier de base de
données » si vous souhaitez utiliser la base d’exemple SQL que je viens d’importer.
Une fois que vous avez testez la
connexion faire OK.
La nouvelle connexion apparaitra dans
l’onglet Explorateur de serveurs.
Les données étant maintenant
disponibles il est nécessaire de créer
les méthodes d’accès.
Dans un but de simplicité et rapidité,
Entity Framework 4.0 a été utilisé.
24/01/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
8. Création des accès vers la base de données – Entity Framework 4.0
Allez sur le projet récemment créée.
Click droit : Ajouter > Nouvel Elément.
Dans la fenêtre qui s’ouvre allez sur Données et sélectionnez l’ ADO.NET Entity Data
Model
Nommez-le (PubsEntityModel dans mon cas) et cliquez sur Ajouter.
24/01/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 8
9. Dans la fenêtre suivante sélectionnez « Générer à partir de la base de données »
24/01/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 9
10. Et finalement rajoutez dans la fenêtre suivante la base de données précédemment
référencé dans l’Explorateur de serveurs.
Cliquez sur Suivant.
24/01/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 10
11. Cochez ensuite le check box Tables ainsi que la premier check box tout en dessous.
Nommez le modèle de base de données PubsModel.
24/01/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 11
12. Faire terminer. Et le modèle de base de données importé est le suivant :
24/01/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 12
13. Si vous souhaitez voir ce qu’il a été généré par Entity Framework il suffit de jeter un
coup d’œil dans le ficher PubsEntityModel.Designer.cs
Pour rester simple je vais m’en servir uniquement de 2 tables afin de montrer
comment créer un service WCF : les tables employee et job.
24/01/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 13
14. Création des éléments WCF
Un service WCF se base sur 3 points majeurs, connu dans le monde informatique
comme l’ ABC de ce gendre de service :
• A – addresse : n’importe quel service WCF doit avoir une adresse qui spécifie la
location de celui-ci afin qu’il puisse expose aux clients.
• B – liaison (binding en anglais) – spécifie comment le service est rendu accessible,
par quel type de protocole. Plusieurs protocoles sont envisageables : HTTP, TCP,
NamedPipe, Peer2Perr, MSMQ.
• C – contrat – utilisé pour spécifier ce que le service fait (quelles informations sont
fournies aux applications clientes
Cette partie est principalement dédie à la création du service avec les méthodes qui
sont exposées aux clients et aussi leur implémentation.
24/01/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 14
15. Ajout d’un service
Rien de plus simple :
allez sur la solution et faites click droit > Ajouter > Nouvel Elément
24/01/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 15
16. Ensuite sur Web sélectionnez Service WCF ; nommez le CompanyService et faites
Ajouter.
Nous remarquerons que 2 fichiers ont été rajoutés dans la solution :
un CompanyService.svc et un ICompanyService.cs.
L’interface ICompanyService contient la définition
( avec leur signature) des méthodes qui seront
exposées aux applications clientes.
La classe CompanyService.svc.cs contient
l’implémentation de ces méthodes.
24/01/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 16
17. Ajouter les DataContract
Comme certains d’entre vous se doutes bien nous n’allons pas exposer le contenu des
tables sql tel quel, juste certains éléments seront visibles aux applications client.
Les éléments qui sont exposées portent le nom de data contract (ou contrat de
données).
Pour créer un contrat de données il n’y a rien de mystique :
il faut tout simplement rajouter des classes c#.
Une que nous allons nommer Employee.cs et une autre que nous allons nommer
Job.cs
24/01/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 17
18. Dans la classe Employee nous allons mettre le code suivant :
24/01/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 18
19. Définir le contrat du service
Ajouter le code suivant dans ICompanyService
Ceux-ci sont les méthodes du service qui seront disponible aux applications clientes.
24/01/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 19
20. Implémenter les méthodes du service
Ajouter le code suivant dans la classe CompanyServices.svc.cs
24/01/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 20
21. 24/01/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 21
22. Architecture finale de la solution et fichier de configuration
Voici l’architecture de votre projet si vous avez suivi
correctement ce qu’il a été indiqué dans cet article.
Nous remarquerons facilement que la solution reste
simple, sans des arborescences compliquées.
Pour finir il faudra juste s’assurer que le fichier de
configuration est bien propre.
Pour cela ouvrez Web.config et supprimez les références vers le Service1 car ceux-
ci ne font que rendre la configuration illisible.
24/01/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 22
23. A la fin de cette manipulation la partie service de votre configuration doit être :
24/01/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 23
24. Exécution du service
Pour rendre les choses simples un WCF Test client a été utilisé.
Un autre article beaucoup plus complet sera dédié à la création d’un vrai
client.
Pour tester notre service c’est bien simple : Ctrl + F5
24/01/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 24
25. Il suffit ensuite de cliquer sur une des méthodes et dans la fenêtre de gauche fournir
les paramètres (si nécessaire).
Ensuite, dans la fenêtre de droite cliquer sur Invoke.
Voici le résultat pour la méthode GetAllJobs().
24/01/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 25
26. Conclusion
Cet article se veut une introduction simple aux services WCF.
Cela permet de comprendre rapidement le fonctionnement de ce gendre le service et
de pouvoir en monter un très rapidement.
24/01/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 26