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.
Visual Studio fournit des outils pour travailler avec Windows Communication Foundation (WCF) et WCF Data Services, technologies Microsoft pour la création d’applications distribuées. Cet article fournit une présentation des services du point de vue de Visual Studio. Pour obtenir la documentation complète, consultez WCF Data Services 4.5.
Windows Communication Foundation (WCF) est une infrastructure unifiée permettant de créer des applications distribuées sécurisées, fiables, traitées et interopérables. Il remplace les technologies de communication entre processus plus anciennes, telles que les services web ASMX, .NET Remoting, Enterprise Services (Distributed Component Object Model (DCOM)) et La file d’attente de messages Microsoft (MSMQ). WCF réunit les fonctionnalités de toutes ces technologies sous un modèle de programmation unifié. Cette approche simplifie l’expérience de développement d’applications distribuées.
Services de données WCF
WCF Data Services est une implémentation de la norme de protocole Open Data (Open Data Protocol (OData)). WCF Data Services vous permet d’exposer des données tabulaires sous la forme d’un ensemble d’API REST, ce qui vous permet de retourner des données à l’aide de commandes HTTP standard telles que GET, POST, PUTet DELETE. Côté serveur, ASP.NET API web remplace wcf Data Services pour la création de nouveaux services OData. La bibliothèque cliente WCF Data Services continue d’être un bon choix pour consommer des services OData dans une application .NET à partir de Visual Studio (Project>Add Service Reference). Pour plus d’informations, consultez WCF Data Services 4.5.
Modèle de programmation WCF
Le modèle de programmation WCF est basé sur la communication entre deux entités : un service WCF et un client WCF. Le modèle de programmation est encapsulé dans l'espace de noms System.ServiceModel dans .NET.
Service WCF
Un service WCF est basé sur une interface qui définit un contrat entre le service et le client. Le service est marqué avec un ServiceContractAttribute attribut, comme indiqué dans le code suivant :
Vous définissez des fonctions ou des méthodes exposées par un service WCF en les marquant avec un OperationContractAttribute attribut.
Vous pouvez également exposer des données sérialisées en marquant un type composite avec un DataContractAttribute attribut, ce qui active la liaison de données dans un client.
Une fois qu’une interface et ses méthodes sont définies, elles sont encapsulées dans une classe qui implémente l’interface. Une seule classe de service WCF peut implémenter plusieurs contrats de service.
Un service WCF est exposé pour être consommé via un point de terminaison. Le point de terminaison fournit le seul moyen de communiquer avec le service. Vous ne pouvez pas accéder au service via une référence directe, comme vous le faites pour d'autres classes.
Le point de terminaison se compose d’une adresse, d’une liaison et d’un contrat. L’adresse définit l’emplacement du service, tel qu’une URL, une adresse FTP (File Transfer Protocol) ou un réseau ou un chemin local. Une liaison définit la façon dont vous communiquez avec le service. Les liaisons WCF fournissent un modèle polyvalent pour spécifier un protocole tel que HTTP ou FTP avec un mécanisme de sécurité tel que l’authentification Windows ou les noms d’utilisateur et les mots de passe. Un contrat inclut les opérations exposées par la classe de service WCF.
Plusieurs points de terminaison peuvent être exposés pour un seul service WCF. Cette approche permet à différents clients de communiquer avec le même service de différentes manières. Par exemple, un service bancaire peut fournir un point de terminaison pour les employés et un autre pour les clients externes, où chacun utilise une adresse, une liaison ou un contrat différents.
Client WCF (WCF client)
Un client WCF se compose d’un proxy qui permet à une application de communiquer avec un service WCF et un point de terminaison qui correspond à un point de terminaison défini pour le service. Le proxy est généré côté client dans le fichier app.config et inclut des informations sur les types et méthodes exposés par le service. Pour les services qui exposent plusieurs points de terminaison, le client peut sélectionner celui qui convient le mieux à ses besoins, par exemple pour communiquer via HTTP et utiliser l’authentification Windows.
Une fois qu’un client WCF a été créé, vous référencez le service dans votre code comme vous le faites n’importe quel autre objet. Par exemple, pour appeler la méthode indiquée précédemment, vous écrivez du GetData code semblable à l’exemple suivant :
private void button1_Click(System.Object sender, System.EventArgs e)
{
ServiceReference1.Service1Client client = new
ServiceReference1.Service1Client();
string returnString;
returnString = client.GetData(textBox1.Text);
label1.Text = returnString;
}
Outils WCF dans Visual Studio
Visual Studio fournit des outils pour vous aider à créer des services WCF et des clients WCF. Pour plus d’informations, consultez Procédure pas à pas : création d’un service WCF simple dans Windows Forms.
Créer et tester des services WCF
Vous pouvez utiliser les modèles WCF Visual Studio comme base pour créer rapidement votre propre service. Vous pouvez ensuite utiliser l’hôte automatique du service WCF et le client de test WCF pour déboguer et tester le service. Ces outils fournissent un cycle de débogage et de test rapide et pratique, et éliminent la nécessité de s’engager sur un modèle d’hébergement à un stade précoce.
Modèles WCF
Les modèles WCF Visual Studio fournissent une structure de classe de base pour le développement de services. Plusieurs modèles WCF sont disponibles dans la boîte de dialogue Ajouter un nouveau projet , notamment les projets de bibliothèque de services WCF, les sites web de service WCF et les modèles d’éléments de service WCF.
Lorsque vous sélectionnez un modèle, les fichiers sont ajoutés pour un contrat de service, une implémentation de service et une configuration de service. Tous les attributs nécessaires sont déjà ajoutés, créant un type de service « Hello World » simple et vous n’avez pas besoin d’écrire de code. Vous pouvez ajouter du code pour fournir des fonctions et des méthodes pour votre service réel, mais les modèles fournissent la base de base.
Pour plus d’informations, consultez les modèles WCF Visual Studio.
Hôte de service WCF
Lorsque vous démarrez le débogueur Visual Studio (en sélectionnant F5) pour un projet de service WCF, l’outil Hôte de service WCF est automatiquement démarré pour héberger le service localement. L’outil énumère les services d’un projet de service WCF, charge la configuration du projet et instancie un hôte pour chaque service trouvé.
L’outil vous aide à tester un service WCF sans écrire de code supplémentaire ou valider sur un hôte spécifique pendant le développement. Pour plus d’informations, consultez l’hôte de service WCF (WcfSvcHost.exe).
WCF Test Client
L’outil client de test WCF vous permet d’entrer des paramètres de test, d’envoyer l’entrée à un service WCF et d’afficher la réponse du service. L’outil offre une expérience de test de service pratique lorsque vous la combinez avec l’hôte de service WCF. L’emplacement de l’outil est Common7\IDE sous le dossier d’installation de Visual Studio.
Lorsque vous sélectionnez F5 pour déboguer un projet de service WCF, le client de test WCF s’ouvre et affiche une liste de points de terminaison de service définis dans le fichier de configuration. Vous pouvez tester les paramètres et démarrer le service, et répéter ce processus pour tester et valider en continu votre service. Pour plus d’informations, consultez le client de test WCF (WcfTestClient.exe).
Accéder aux services WCF dans Visual Studio
Visual Studio simplifie la tâche de création de clients WCF en générant automatiquement un proxy et un point de terminaison pour les services que vous ajoutez dans la boîte de dialogue Ajouter une référence de service . Toutes les informations de configuration nécessaires sont ajoutées au fichier app.config . La plupart du temps, tout ce que vous devez faire est d’instancier le service pour commencer à l’utiliser.
Dans la boîte de dialogue Ajouter une référence de service , vous spécifiez l’adresse d’un service ou recherchez un service défini dans votre solution. Le système retourne une liste de services et d’opérations fournis par les services. Vous pouvez également définir l’espace de noms pour référencer les services dans le code.
Dans la boîte de dialogue Configurer les références de service, vous personnalisez la configuration d’un service. Vous pouvez modifier l’adresse d’un service, spécifier le niveau d’accès, le comportement asynchrone et les types de contrats de message, et configurer la réutilisation des types.
Point de terminaison de service
Certains services WCF exposent plusieurs points de terminaison via lesquels les clients peuvent communiquer avec le service. Un service peut exposer un point de terminaison qui utilise une liaison HTTP avec un nom d’utilisateur et une sécurité de mot de passe et un deuxième point de terminaison qui utilise FTP avec l’authentification Windows. Le premier point de terminaison est utilisé par les applications pour accéder au service en dehors d’un pare-feu, tandis que la seconde peut être utilisée dans un intranet.
Dans ce scénario, vous spécifiez le paramètre endpointConfigurationName avec le constructeur pour une référence de service.
Remarque
Les instructions dans cet article illustrent la version la plus récente de l’expérience de développement interactif (IDE) disponible dans Visual Studio. Votre ordinateur peut afficher des noms ou des emplacements différents pour certains des éléments de l’interface utilisateur. Il se peut que vous utilisiez une autre version de Visual Studio ou d’autres paramètres d’environnement. Pour plus d’informations, consultez Personnaliser l’IDE.
Sélectionner le point de terminaison de service
Sélectionnez un point de terminaison de service en procédant comme suit :
Ajoutez une référence à un service WCF en cliquant avec le bouton droit sur le nœud du projet dans l’Explorateur de solutions et en sélectionnant Ajouter une référence de service.
Dans l’Éditeur de code, ajoutez un constructeur pour la référence de service. Remplacez
ServiceReferencepar l’espace de noms de la référence de service, puis remplacezService1Clientpar le nom du service.
Lorsque vous entrez le code, une liste IntelliSense s’affiche, qui comprend les surcharges pour le constructeur. Sélectionnez la surcharge
endpointConfigurationName As String.Après avoir sélectionné la surcharge, entrez
="<ServiceEndpoint>", où<ServiceEndpoint>est le nom du service de point de terminaison que vous souhaitez utiliser.Conseil / Astuce
Les noms des points de terminaison disponibles sont définis dans le fichier app.config .
Rechercher des points de terminaison disponibles pour le service WCF
Pour rechercher les points de terminaison disponibles pour un service WCF, procédez comme suit :
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le fichier app.config du projet qui contient la référence du service, puis sélectionnez Ouvrir. Le fichier s’ouvre dans l’Éditeur de code.
Recherchez la
<Client>balise dans le fichier.Dans la
<Client>section de balise, recherchez une balise imbriquée qui commence par<Endpoint>.Lorsque la référence de service fournit plusieurs points de terminaison, il existe deux balises ou plus
<Endpoint>.Dans la définition de
<EndPoint>balise, recherchez lename="<ServiceEndpoint>"paramètre (où<ServiceEndpoint>représente un nom de point de terminaison pour le service). Cette valeur est le nom du point de terminaison de service qui peut être transmis à la surchargeendpointConfigurationName As Stringd’un constructeur comme référence de service.
Appeler des méthodes de service de manière asynchrone
La plupart des méthodes des services WCF peuvent être appelées de façon synchrone ou asynchrone. Lorsque vous appelez une méthode de façon asynchrone, votre application peut continuer à fonctionner pendant l’appel de la méthode. Cette approche est utile lorsque le système fonctionne sur une connexion lente.
Lorsqu’une référence de service est ajoutée à un projet, la configuration par défaut consiste à appeler des méthodes de manière synchrone. Vous pouvez modifier le comportement pour appeler des méthodes de manière asynchrone dans la boîte de dialogue Configurer la référence du service .
L’option est définie par service . Si une méthode pour un service est appelée de façon asynchrone, toutes les méthodes doivent être appelées de façon asynchrone.
Remarque
Les instructions dans cet article illustrent la version la plus récente de l’expérience de développement interactif (IDE) disponible dans Visual Studio. Votre ordinateur peut afficher des noms ou des emplacements différents pour certains des éléments de l’interface utilisateur. Il se peut que vous utilisiez une autre version de Visual Studio ou d’autres paramètres d’environnement. Pour plus d’informations, consultez Personnaliser l’IDE.
Appeler une méthode de façon asynchrone
Pour appeler une méthode de service de façon asynchrone, procédez comme suit :
Dans l’Explorateur de solutions, sélectionnez la référence du service.
Sélectionnez Project>Configure Service Reference.
Dans la boîte de dialogue Configurer la référence du service , cochez la case Générer des opérations asynchrones .
Lier des données retournées par le service
Vous pouvez lier des données retournées par un service WCF à un contrôle tout comme vous liez n’importe quelle autre source de données à un contrôle. Lorsque vous ajoutez une référence à un service WCF, si le service contient des types composites qui retournent des données, ils sont automatiquement ajoutés à la fenêtre Sources de données .
Lier le contrôle au champ de données retourné par le service WCF
Pour lier un contrôle à un champ de données unique retourné par un service WCF, procédez comme suit :
Sélectionnez Données>Afficher les sources de données. La fenêtre Sources de données s’ouvre.
Dans la fenêtre Sources de données , développez le nœud de votre référence de service. Tous les types composites retournés par le service s’affichent.
Développez un nœud de type et affichez les champs de données du type.
Sélectionnez un champ et développez la liste déroulante pour afficher la liste des contrôles disponibles pour le type de données.
Sélectionnez le type de contrôle auquel vous souhaitez établir une liaison.
Faites glisser le champ sur un formulaire. Le contrôle est ajouté au formulaire avec des composants BindingSource et BindingNavigator.
Répétez les étapes 4 à 6 et liez tous les autres champs.
Liez un contrôle au type composite retourné par un service WCF
Pour lier un contrôle à un type composite retourné par un service WCF, procédez comme suit :
Sélectionnez Data>Afficher les sources de données. La fenêtre Sources de données s’ouvre.
Dans la fenêtre Sources de données , développez le nœud de votre référence de service. Tous les types composites retournés par le service s’affichent.
Sélectionnez un nœud pour un type et développez la liste déroulante pour afficher la liste des options disponibles.
Sélectionnez DataGridView et affichez les données dans une grille, ou sélectionnez Détails et affichez les données à l’aide de contrôles individuels.
Faites glisser le nœud sur le formulaire. Les contrôles sont ajoutés au formulaire avec les composants BindingSource et BindingNavigator.
Configurer des services pour réutiliser des types existants
Lorsqu’une référence de service est ajoutée à un projet, tous les types définis dans le service sont générés dans le projet local. Dans de nombreux cas, cette approche crée des types en double lorsqu’un service utilise des types .NET courants ou lorsque des types sont définis dans une bibliothèque partagée.
Pour éviter ce problème, les types dans les assemblys référencés sont partagés par défaut. Si vous souhaitez désactiver le partage de type pour un ou plusieurs assemblys, modifiez les paramètres de la boîte de dialogue Configurer les références de service .
Désactiver le partage de type dans un assembly
Vous pouvez désactiver le partage de types dans un assembly unique en procédant comme suit :
Dans l’Explorateur de solutions, sélectionnez la référence du service.
Sélectionnez Project>Configure Service Reference.
Dans la boîte de dialogue Configurer les références de service, cochez la case Réutiliser les types dans les assemblées référencées spécifiées.
Cochez la case pour chaque assembly dans lequel vous souhaitez activer le partage de types. Pour désactiver le partage de type pour un assembly, laissez la case à cocher désactivée.
Désactivez le partage de type dans tous les assemblys
Vous pouvez également désactiver le partage de types dans tous les assemblys en procédant comme suit :
Dans l’Explorateur de solutions, sélectionnez la référence du service.
Sélectionnez Project>Configure Service Reference.
Dans la boîte de dialogue Configurer les références de service , désactivez la case à cocher Réutiliser les types dans les assemblys référencés .
Explorer des concepts similaires
Les articles suivants décrivent les concepts et procédures liés aux services WCF et aux services de données WCF.
| Titre | Descriptif |
|---|---|
| Procédure pas à pas : créer un service WCF de base dans Windows Forms | Fournit une démonstration pas à pas de la création et de l’utilisation des services WCF dans Visual Studio. |
| Procédure pas à pas : Créer un service de données WCF avec WPF et Entity Framework | Fournit une démonstration pas à pas de la création et de l’utilisation de WCF Data Services dans Visual Studio. |
| Utiliser les outils de développement WCF | Décrit comment créer et tester des services WCF dans Visual Studio. |
| Guide pratique pour ajouter, mettre à jour ou supprimer une référence de service de données WCF | Décrit comment utiliser la boîte de dialogue Ajouter une référence de service pour rechercher wcf Data Services dans la solution. |
| Dépanner les références de service | Présente certaines erreurs courantes qui peuvent se produire avec des références de service et comment les empêcher. |
| Déboguer les services WCF | Décrit les problèmes de débogage courants et les techniques que vous pouvez rencontrer lors du débogage des services WCF. |
| Procédure pas à pas : Créer une application de données à plusieurs niveaux | Fournit des instructions pas à pas pour la création d’un jeu de données typé et la séparation du code TableAdapter et du jeu de données en plusieurs projets. |
| Consultez la boîte de dialogue Configurer la référence de service | Décrit les éléments de l’interface utilisateur de la boîte de dialogue Configurer la référence du service . |
Contenu connexe
- Outils de données Visual Studio pour .NET
- Espace de noms System.ServiceModel
- Espace de noms System.Data.Services