Programmation au niveau du canal client
Cette rubrique décrit comment écrire une application cliente Windows Communication Foundation (WCF) sans utiliser la classe System.ServiceModel.ClientBase et son modèle objet associé.
Envoi des messages
Pour pouvoir envoyer des messages, puis recevoir et traiter les réponses, vous devez procéder comme suit :
- Créez une liaison.
- Générez une fabrication de canal.
- Créez un canal.
- Envoyez une demande et lisez la réponse.
- Fermez tous les objets de canal.
Création d'une liaison
À l'instar de la procédure de réception de messages (consultez Programmation de service au niveau du canal), la première étape pour envoyer des messages consiste à créer une liaison. Cet exemple crée une nouvelle liaison System.ServiceModel.Channels.CustomBinding et ajoute System.ServiceModel.Channels.HttpTransportBindingElement à sa collection Elements.
Génération de ChannelFactory
Au lieu de créer System.ServiceModel.Channels.IChannelListener, nous créons cette fois System.ServiceModel.ChannelFactory en appelant System.ServiceModel.ChannelFactory.CreateFactory sur la liaison où le paramètre de type est System.ServiceModel.Channels.IRequestChannel. Les écouteurs de canal sont utilisés par le côté qui attend les messages entrants et les fabrications de canaux le sont par le côté qui initialise la communication pour créer un canal. À l'instar des écouteurs de canal, les fabrications de canaux doivent d'abord être ouvertes avant de pouvoir être utilisées.
Création d'un canal
Nous appelons ensuite System.ServiceModel.ChannelFactory.CreateChannel pour créer IRequestChannel. Cet appel prend l'adresse du point de terminaison avec lequel nous souhaitons communiquer en utilisant le nouveau canal créé. Après avoir capté un canal, nous appelons Open sur celui-ci afin qu'il soit prêt pour la communication. Selon la nature du transport, cet appel à Open peut initialiser une connexion avec le point de terminaison cible ou peut ne rien faire du tout sur le réseau.
Envoi d'une demande et lecture de la réponse
Une fois un canal ouvert, nous pouvons créer un message et utiliser la méthode Request du canal pour envoyer la demande et attendre le retour de la réponse. Cette méthode retourne un message de réponse permettant de connaître la réponse du point de terminaison.
Fermeture des objets
Pour éviter la fuite des ressources, nous fermons les objets utilisés dans les communications lorsqu'ils ne sont plus nécessaires.
L'exemple de code suivant illustre un client de base utilisant la fabrication de canal pour envoyer un message et lire la réponse.