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.
Après avoir créé un service, l’étape suivante consiste à créer un proxy client WCF. Une application cliente utilise le proxy client WCF pour communiquer avec le service. Les applications clientes importent généralement les métadonnées d’un service pour générer du code client WCF qui peut être utilisé pour appeler le service.
Les étapes de base de la création d’un client WCF sont les suivantes :
Compilez le code de service.
Générez le proxy du client WCF.
Instanciez le proxy client WCF.
Le proxy client WCF peut être généré manuellement à l’aide de l’outil Utilitaire de métadonnées du modèle de service (SvcUtil.exe) pour plus d’informations, consultez l’outil Utilitaire de métadonnées ServiceModel (Svcutil.exe). Le proxy client WCF peut également être généré dans Visual Studio à l’aide de la fonctionnalité Ajouter une référence de service . Pour générer le proxy client WCF à l’aide de l’une ou l’autre méthode, le service doit être en cours d’exécution. Si le service est auto-hébergé, vous devez gérer le serveur. Si le service est hébergé dans IIS/WAS, vous n’avez pas besoin d’effectuer d’autres opérations.
Outil utilitaire de métadonnées ServiceModel
L’outil Utilitaire de métadonnées ServiceModel (Svcutil.exe) est un outil en ligne de commande permettant de générer du code à partir de métadonnées. L’utilisation suivante est un exemple de commande de base Svcutil.exe.
Svcutil.exe <service's Metadata Exchange (MEX) address or HTTP GET address>
Vous pouvez également utiliser Svcutil.exe avec des fichiers WSDL (Web Services Description Language) et XML Schema Definition Language (XSD) sur le système de fichiers.
Svcutil.exe <list of WSDL and XSD files on file system>
Le résultat est un fichier de code qui contient le code client WCF que l’application cliente peut utiliser pour appeler le service.
Vous pouvez également utiliser l’outil pour générer des fichiers de configuration.
Svcutil.exe <file1 [,file2]>
Si un seul nom de fichier est donné, il s’agit du nom du fichier de sortie. Si deux noms de fichiers sont donnés, le premier fichier est un fichier de configuration d’entrée dont le contenu est fusionné avec la configuration générée et écrit dans le deuxième fichier. Pour plus d’informations sur la configuration, consultez Configuration de liaisons pour les services.
Importante
Les demandes de métadonnées non sécurisées présentent certains risques de la même façon que toute demande réseau non sécurisée : si vous n’êtes pas certain que le point de terminaison avec lequel vous communiquez est celui avec lequel il est dit, les informations que vous récupérez peuvent être des métadonnées à partir d’un service malveillant.
Ajouter une référence de service dans Visual Studio
Une fois le service en cours d’exécution, cliquez avec le bouton droit sur le projet qui contiendra le proxy du client WCF, puis sélectionnez Ajouter une>référence de service. Dans la boîte de dialogue Ajouter une référence de service, tapez l’URL du service que vous souhaitez appeler, puis cliquez sur le bouton Atteindre . La boîte de dialogue affiche une liste de services disponibles à l’adresse que vous spécifiez. Double-cliquez sur le service pour afficher les contrats et les opérations disponibles, spécifiez un espace de noms pour le code généré, puis cliquez sur le bouton OK .
Exemple :
L’exemple de code suivant montre un contrat de service créé pour un service.
// Define a service contract.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
// Other methods are not shown here.
}
' Define a service contract.
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples")> _
Public Interface ICalculator
<OperationContract()> _
Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
' Other methods are not shown here.
End Interface
L’outil utilitaire de métadonnées ServiceModel et l’ajout d’une référence de service dans Visual Studio génèrent la classe cliente WCF suivante. La classe hérite de la classe générique ClientBase<TChannel> et implémente l’interface ICalculator . L’outil génère également l’interface ICalculator (non affichée ici).
public partial class CalculatorClient : System.ServiceModel.ClientBase<ICalculator>, ICalculator
{
public CalculatorClient()
{}
public CalculatorClient(string endpointConfigurationName) :
base(endpointConfigurationName)
{}
public CalculatorClient(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{}
public CalculatorClient(string endpointConfigurationName,
System.ServiceModel.EndpointAddress remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{}
public CalculatorClient(System.ServiceModel.Channels.Binding binding,
System.ServiceModel.EndpointAddress remoteAddress) :
base(binding, remoteAddress)
{}
public double Add(double n1, double n2)
{
return base.Channel.Add(n1, n2);
}
}
Partial Public Class CalculatorClient
Inherits System.ServiceModel.ClientBase(Of ICalculator)
Implements ICalculator
Public Sub New()
MyBase.New
End Sub
Public Sub New(ByVal endpointConfigurationName As String)
MyBase.New(endpointConfigurationName)
End Sub
Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As String)
MyBase.New(endpointConfigurationName, remoteAddress)
End Sub
Public Sub New(ByVal endpointConfigurationName As String,
ByVal remoteAddress As System.ServiceModel.EndpointAddress)
MyBase.New(endpointConfigurationName, remoteAddress)
End Sub
Public Sub New(ByVal binding As System.ServiceModel.Channels.Binding,
ByVal remoteAddress As System.ServiceModel.EndpointAddress)
MyBase.New(binding, remoteAddress)
End Sub
Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
Implements ICalculator.Add
Return MyBase.Channel.Add(n1, n2)
End Function
End Class
Utilisation du client WCF
Pour utiliser le client WCF, créez une instance du client WCF, puis appelez ses méthodes, comme indiqué dans le code suivant.
// Create a client object with the given client endpoint configuration.
CalculatorClient calcClient = new CalculatorClient("CalculatorEndpoint");
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = calcClient.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
' Create a client object with the given client endpoint configuration.
Dim calcClient As CalculatorClient = _
New CalculatorClient("CalculatorEndpoint")
' Call the Add service operation.
Dim value1 As Double = 100.00D
Dim value2 As Double = 15.99D
Dim result As Double = calcClient.Add(value1, value2)
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result)
Débogage d'exceptions levées par un Client
De nombreuses exceptions levées par un client WCF sont provoquées par une exception sur le service. Quelques exemples :
SocketException: une connexion existante a été fermée de force par l’hôte distant.
CommunicationException: la connexion sous-jacente a été fermée de façon inattendue.
CommunicationObjectAbortedException: La connexion de socket a été interrompue. Cela peut être dû à une erreur de traitement de votre message, à un délai d’expiration de réception dépassé par l’hôte distant ou à un problème de ressource réseau sous-jacent.
Lorsque ces types d’exceptions se produisent, la meilleure façon de résoudre le problème consiste à activer le suivi côté service et à déterminer l’exception qui s’est produite là-bas. Pour plus d’informations sur le suivi, consultez Suivi et utilisation du suivi pour résoudre les problèmes de votre application.
Voir aussi
- Guide pratique pour créer un client
- Guide pratique pour accéder aux services avec un contrat Duplex
- Procédure : appeler des opérations de service WCF de façon asynchrone
- Comment faire : accéder aux services avec les contrats One-Way et Request-Reply
- Guide pratique pour accéder à un service WSE 3.0
- Présentation du code client généré
- Guide pratique pour améliorer le temps de démarrage des applications clientes WCF à l’aide du xmlSerializer
- Spécification du comportement de Run-Time client
- Configuration des comportements des clients