> Tech > Comment ajouter un service WCF ?

Comment ajouter un service WCF ?

Tech - Par Renaud ROSSET - Publié le 26 mars 2012
email

Q. Dans les applications Silverlight antérieures, je créais mes services WCF (Windows Communication Foundation) en ajoutant un nouvel élément de service WCF à mon projet Web et en introduisant le code sous-jacent. Cela a entraîné des problèmes de test et de débogage de mes configurations de service. Existe-t-il un meilleur moyen pour ajouter un service WCF ?

R. Les approches pour créer un service WCF sont nombreuses, mais la méthode décrite ici facilite le dépannage de problèmes et exploite les avantages des options de configuration WCF allégées disponibles dans Visual Studio 2010.

Le plus simple pour ajouter un service à votre application Silverlight consiste à ajouter un élément de service WCF au projet d’application Web de votre solution Silverlight. Lorsque vous ajoutez un service nommé TestServiceCB, Visual Studio crée une interface avec un exemple de définition de service :

[ServiceContract]
public interface ITestServiceCB
{
    [OperationContract]
    void DoWork();
}

Par ailleurs, Visual Studio ajoute un fichier TestServiceCB.svc avec le code sous-jacent suivant, lequel implémente l’interface de service :

public class TestServiceCB : ITestServiceCB {
    public void DoWork() {
    }
}

Si vous sélectionnez TestServiceCB.svc et choisissez « View In Browser » dans le menu contextuel, le navigateur s’ouvre en accédant à l’URL localhost:55778/TestServiceCB.svc et affiche une page d’informations concernant le service. Notez que le port, 55778 dans cette URL, différera pour votre environnement.

Cette solution fonctionne pour des services tout simples, mais peut ne pas convenir à des services complexes intégrant des niveaux métier et d’accès aux données, et nécessitant des tests unitaires et d’intégration. Il sera aussi plus difficile de déployer le service au moyen d’un autre hôte que votre application Web. Pour ce type de situation, une structure de projet telle que celle visible sur la figure 2 sera plus appropriée.

Avec cette approche, toutes les interfaces et classes servant à implémenter le service sont contenues dans un projet de bibliothèque de service distinct. Le projet Web continue d’héberger le service et fait appel aux classes dans la bibliothèque de service selon les besoins. Un ou plusieurs projets de test sont créés en vue de tester directement les classes dans la bibliothèque de service, ce qui réduit la probabilité de problèmes et vous donne un moyen de débogage qui contourne le client. C’est extrêmement important dans l’univers Silverlight et WCF, car toutes les exceptions dans votre service retournent des erreurs SOAP génériques contenant, par défaut, peu voire aucune information de diagnostic.

Pour créer cette structure, ajoutez une nouvelle bibliothèque de service WCF à votre solution Silverlight. Par défaut, Visual Studio ajoute une classe d’interface nommée IService1.cs et une classe de service intitulée Service1.cs à votre projet de bibliothèque de service. Elles sont analogues aux classes d’interface et de code sous-jacent créées lorsque vous ajoutez un service WCF directement à votre application Web. Vous devez modifier le nom de l’interface d’interface et de la classe de service afin de refléter le nom du service. Par exemple, un service intitulé TestService peuvent contenir l’interface ITestService suivante :

[ServiceContract]
public interface ITestService
{
    [OperationContract]
    DateInformation GetFutureDate(ref ServiceContext context, 
     int futureDays);
}

Et une classe de service correspondante pour implémenter le service :

public class TestService : ITestService {
    public DateInformation GetFutureDate(
     ref ServiceContext context, int futureDays) {
        return null;
    }
}

Pour héberger votre service dans l’application Web correspondante de votre application Silverlight, il faut ajouter une référence au projet de bibliothèque de service et créer un fichier TestService.svc.

Vous devez d’abord ajouter le fichier sous forme de fichier texte et changer son préfixe. Ajoutez la balise suivante au fichier TestService.svc :

‹%@ ServiceHost Language= »C# » Debug= »true » Service = « MyTest-
Service.TestService » %>

Il est nécessaire de configurer votre service dans le fichier Web.config de l’application Web. L’équipe WCF a beaucoup travaillé à la réduction de la complexité des configurations WCF dans Microsoft .NET Framework 4 en employant les valeurs par défaut pour la majorité des liaisons.

D’un point de vue technique, cela signifie qu’il est inutile d’ajouter des informations de configuration pour le service, mais dans le cadre du développement, certains remplacements de configuration peuvent être utiles. Ajoutez ce qui suit à votre fichier Web.config :

‹system.serviceModel>
‹behaviors>
‹serviceBehaviors>
‹behavior>
‹serviceMetadata httpGetEnabled= »true »/>
‹serviceDebug includeExceptionDetailInFaults=  
« false »/>
‹/behavior>
‹/serviceBehaviors>
‹/behaviors>
‹serviceHostingEnvironment multipleSiteBindingsEn
abled= »true » />
‹/system.serviceModel>

La balise Metadata du service indique à WCF de publier les métadonnées utilisées lorsque vous ajoutez une référence de service dans votre application Silverlight. Sur votre machine locale, Visual Studio affecte automatiquement une adresse à votre service. Pour le déploiement en production, il faudra ajouter des informations de configuration supplémentaires afin de spécifier l’URL effective pour votre service. Notez que Visual Studio crée une section de configuration dans le fichier App.config de votre projet de bibliothèque de service, mais WCF ignore ces informations de configuration.

Test des configurations de service

Vous êtes maintenant prêt à tester la mise en place correcte de votre service. Premièrement, testez la création appropriée de votre fichier de configuration en sélectionnant le fichier SVC dans l’Explorateur de solution (Solution Explorer), puis en cliquant avec le bouton droit de la souris et en sélectionnant « View in a Browser ». Le navigateur doit afficher une page d’informations concernant votre service. Notez l’URL générée automatiquement.

Pour vérifier que votre service peut effectivement être appelé, Visual Studio fournir l’outil WCF Test Client. Pour démarrer l’outil, ouvrez une invite de commandes Visual Studio et saisissez la commande wcftestclient. Lorsque la fenêtre d’outil s’affiche, ajoutez votre service en sélectionnant File | Add Service et en fournissant l’URL notée lorsque vous avez ouvert le fichier SVC dans le navigateur. A partir de Test Client, vous pouvez appeler chacune de vos méthodes de service avec les données de test et voir les résultats. WCF Test Client est visible sur la figure 3.

A ce stade, vous avez terminé la plomberie côté serveur pour votre service. Vous pouvez étendre votre service en ajoutant des opérations, ainsi que des couches métier et d’accès aux données selon vos besoins. J’ajoute systématiquement un projet de test de service afin de tester la bibliothèque de service. Cette approche se révèle généralement payante ultérieurement car elle m’évite des pertes de temps et des frustrations au moment de diagnostiquer des problèmes de service via l’application client Silverlight.

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 26 mars 2012