Windows Communication Foundation [Etape 2] - Clients

ImageCalendarCreation   Crée le : 28/11/2010 Calendar   Modifié le : 28/01/2011 ImageOwner   Par : Proteus ImageVisites   Vue : 136 CommentaireCount   Commentaire(s) : 0

Introduction


Dans le précédent article nous avons vu comment créer et déployer un service WCF sur un serveur IIS. Nous avons également vu les différentes problématiques liées à la configuration et au déploiement de ce dernier. Afin que vous puissiez suivre ce tutorial, sachez que je pars du principe que vous avez suivi le précédent article et que vous avez un service WCF opérationnel.

Définition


Un Client est une application qui va se connecter au service distant et consommer / utiliser ces méthodes comme si c’était une classe de votre application. Les seules différences avec une classe standard proviennent de la façon dont vous allez l’appeler (le type de client que vous utilisez (WPF, Webform, Winform, SilverLight) et le fait que ce code ne vous appartient pas et que vous ne pouvez donc pas agir dessus.

Les Types de client


Un Client est une application qui va se connecter au service distant et consommer / utiliser ces méthodes comme ci c’était une classe de votre application. Les seules différences avec une classe standard proviennent de la façon dont vous allez l’appeler (le type de client que vous utilisez (WPF, Webform, Winform, SilverLight) et le fait que ce code ne vous appartient pas et que vous ne pouvez donc pas agir dessus.

Applications Webform, Winform, WPF


Winform, Webform et WPF, même combat. La façon dont vous allez configurer, appeler et consommer votre service est sensiblement identique pour ces 3 types de clients. Pour créer un client qui consomme votre service Web vous procéderez de la façon suivante.

1. Créez un nouveau projet


Comme nous l’avons dit plus haut, vous pouvez créer n’importe quel type de ces 3 projets ici nous avons choisi un projet WPF, mais les étapes sont identiques pour les deux autres.

Alternate

2. Réferencez le Service


Faites un clic droit sur “Référence” et cliquez sur "Ajouter une référence de service". L’adresse demandée par l’interface est celle que vous pouvez avoir sur la fenêtre de test client vous pouvez directement la copier de là bas et la coller. (Comme nous l’avons vu dans le chapitre précédent c’est l’adresse du MEX qui va nous intéresser c’est elle qui stocke les informations relatives aux données de notre service.

Alternate

Changez le Namespace de votre service si besoin. Pour des raisons de test nous allons l’appeler «ServiceReference1». Cliquez sur Ok. Votre application référence maintenant votre Service WCF.

3. Consommez votre WCF


Ici tout ce fait par code. Première chose à faire est ce déclarer un lien entre le service et notre client.

private ServiceReference1.ProteusDataBaseClient MyClient = new ServiceReference1.ProteusDataBaseClient();

Nous avons donc notre variable « MyClient » qui appel notre service WCF. Dans le code si vous saisissez MyClient.GetPersonne () vous voyez que cette méthode est celle que nous avons codée dans notre service qu’elle renvoie un objet de type : « ServiceReference1.PersonneLight[]». Pour faire notre premier test il suffit donc de faire :

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    ServiceReference1.PersonneLight[] MyPersonnes = MyClient.GetNbPersonnes();
    MessageBox.Show(MyPersonnes.Count().ToString());
}

Maintenant compilez le programme. A la compilation, votre application va créer une instance de MyClient pour connecter votre application a votre service. Ensuite quand vous allez appeler la méthode MyClient.GetPersonne(), vous allez demander à votre service de vous renvoyer une réponse qui sera stockée dans un objet dont le type provient également de votre Service WCF. Une fois la réponse envoyée vous pouvez naviguer dans les enregistrements….XXXXXX

Applications SilverLight


Autant l'utilisation de WCF dans des Applications Win, Web ou WPF est utile, autant en SilverLight il devient indispensable. En effet si vous créez un composant SilverLight qui doit accéder à des bases de données l'utilisation d'un WebService devient indispensable. Même s'il existe une approche qui consiste à utiliser des Services RIA pour effectuer ce genre d'opération je resterais sur la vision du WCF, et ce, dans le but d'unifier la communication entre vos différentes applications. Un seul composant pour toutes.

1. Créez un nouveau projet


Créez un nouveau projet de type "Application SilverLight", en ce qui concerne l'hébergement cela n'a pour l'instant aucune importance, décochez la case « Héberger » l'application sur un nouveau site Web.

SilverLightCreation

2. Réferencez le Service


Faites un clic droit sur “Référence” et cliquez sur "Ajouter une référence de service". L’adresse demandée par l’interface est celle que vous pouvez avoir sur la fenêtre de test client vous pouvez directement la copier de là bas et la coller. (Comme nous l’avons vu dans le chapitre précédent c’est l’adresse du MEX qui va nous intéresser c’est elle qui stocke les informations relatives aux données de notre service.

Alternate

Changez le Namespace de votre service si besoin. Pour des raisons de test nous allons l’appeler «ServiceReference1». Cliquez sur Ok. Votre application référence maintenant votre Service WCF.

3. Consommez votre WCF


Nous voici donc dans le vif du sujet. La création de la connexion vers votre service WCF se fait de la même façon que pour les autres types d'application.

private ServiceReference1.ProteusDataBaseClient MyClient = new ServiceReference1.ProteusDataBaseClient();

Les différences de comportement que vous allez rencontrer se font lorsque vous allez accéder aux méthodes qui composaient votre service WCF. Si vous appelez votre "Client" vous allez voir que les méthodes que vous avez exposées n'existent plus sous leurs formes d'origine. Pour chaque méthode vous aurez deux nouveaux Objets, une méthode qui contient le nom de votre méthode + Async et un événement qui contient le nom de votre méthode + Completed.

L'enchainement d'appel sera donc sensiblement différent. Pour effectuer le même travail il vous faudra :

  1. Vous abonnez à l'événement de votre méthode.
  2. Appeler votre méthode.

Quand le service aura terminé de préparer les données, il déclenchera l'événement auquel vous vous êtes abonné en fournissant l'objet de votre demande dans le Paramètre "e" (Result). C'est donc dans votre événement que vous devrez insérer vos lignes de codes qui traiteront vos objets.

4. La gestion des erreurs


Quand vous allez compiler votre application SilverLight, prêtez une attention particulière aux opérations inter-domaine si vous vous heurtez à ce problème réferez vous au topique "Problèmes" sur ce site. Si vous rencontrez une erreur qui ne figure pas dans la liste du topique réservé à cet effet n'hésitez pas à m'envoyer un email

Editer le Message Supprimer le Message ContactMe   Contactez-moi


Laisser un commentaire