Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’exemple ChannelFactory montre comment une application cliente peut créer un canal avec la ChannelFactory classe au lieu d’un client généré. Cet exemple est basé sur le guide de démarrage qui implémente un service de calculatrice.
Remarque
La procédure d’installation et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.
Cet exemple utilise la ChannelFactory<TChannel> classe pour créer un canal vers un point de terminaison de service. En règle générale, pour créer un canal vers un point de terminaison de service, vous générez un type client avec l’outil utilitaire de métadonnées ServiceModel (Svcutil.exe) et créez une instance du type généré. Vous pouvez également créer un canal à l’aide de la ChannelFactory<TChannel> classe, comme illustré dans cet exemple. Le service créé par l’exemple de code suivant est identique au service dans la mise en route.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");
WSHttpBinding binding = new WSHttpBinding();
ChannelFactory<ICalculator> factory = new
ChannelFactory<ICalculator>(binding, address);
ICalculator channel = factory.CreateChannel();
Importante
Si vous exécutez cet exemple dans un scénario inter-ordinateurs, vous devez remplacer « localhost » dans le code précédent par le nom complet de l’ordinateur exécutant le service. Cet exemple n’utilise pas la configuration pour définir l’adresse du point de terminaison. Cette opération doit donc être effectuée dans le code.
Une fois le canal créé, les opérations de service peuvent être appelées comme avec un client généré.
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = channel.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
Pour fermer le canal, il doit d’abord être converti vers une interface IClientChannel. Cela est dû au fait que le canal généré est déclaré dans l’application cliente à l’aide de l’interface ICalculator , qui a des méthodes comme Add et Subtract non Close. La Close méthode provient de l’interface ICommunicationObject .
// Close the channel.
((IClientChannel)client).Close();
Lorsque vous exécutez l’exemple, les demandes et réponses de l’opération s’affichent dans la fenêtre de la console cliente. Appuyez sur Entrée dans la fenêtre cliente pour arrêter l’application cliente.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Pour configurer, générer et exécuter l’exemple
Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.
Pour générer l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples. Notez que cet exemple n’active pas la publication de métadonnées. Vous devez d’abord activer la publication de métadonnées pour cet exemple pour régénérer le type de client.
Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, conformez-vous aux instructions figurant dans la rubrique Exécution des exemples Windows Communication Foundation.
Pour exécuter l'exemple sur plusieurs ordinateurs
Remplacez « localhost » dans le code suivant par le nom complet de l’ordinateur exécutant le service.
EndpointAddress address = new EndpointAddress("http://localhost/servicemodelsamples/service.svc");