Partager via


Points de terminaison de service Web basés sur des fichiers WSDL

Mise à jour : novembre 2007

Vous pouvez utiliser une approche pilotée par contrat pour définir le comportement du service. Vous pouvez effectuer cette tâche en créant des points de terminaison fournisseurs de service Web à partir des fichiers WSDL (Web Services Description Language). Vous pouvez également mettre en conformité des points de terminaison fournisseurs de service Web existants avec des fichiers WSDL.

Remarque :

Vous pouvez effectuer ces tâches à l'aide de fichiers .disco. Cette version finale prend en charge uniquement les fichiers WSDL qui contiennent des liaisons WSDL et fichiers .disco uniques, qui référencent des services Web uniques. Pour plus d'informations, consultez Communication entre applications.

Pour plus d'informations, consultez les sections suivantes :

  • Création de points de terminaison de service Web à partir de fichiers WSDL

  • Mettre en conformité des points de terminaison de service Web avec des fichiers WSDL

  • Points de terminaison de service Web basés sur des fichiers WSDL

  • Types personnalisés référencés dans les signatures d'opération

Pour plus d'informations sur la conception de services pilotés par contrat, visitez la page « Contract First Web Services Interoperability » sur MSDN Online à l'adresse https://go.microsoft.com/fwlink/?LinkId=49584.

Création de points de terminaison de service Web à partir de fichiers WSDL

Vous pouvez créer des points de terminaison basés sur WSDL sur les applications et systèmes ASP.NET. Ce point de terminaison apparaît sur l'application ou le système. Il se remplit des signatures d'opération référencées par le fichier WSDL. Ces signatures d'opération apparaissent également dans le fichier de classe de service Web si l'application associée est déjà implémentée. D'autres fichiers de classe peuvent également apparaître dans le projet de l'application si ces signatures référencent des types personnalisés. Pour plus d'informations, consultez Types personnalisés référencés dans les signatures d'opération.

Remarque :

Seules des applications peuvent être implémentées, pas des systèmes.

La création d'un point de terminaison fournisseur de services Web à partir d'un fichier WSDL produit un résultat équivalent à l'utilisation de l'utilitaire en ligne de commande Wsdl.exe avec l'option /server. Pour plus d'informations, consultez :

Mettre en conformité des points de terminaison de service Web avec des fichiers WSDL

Vous pouvez mettre en conformité des points de terminaison fournisseurs de service Web existants avec des fichiers WSDL. Cette action ajoute ou modifie toute signature d'opération existante, en les mettant en conformité avec le fichier WSDL. Cette action peut également affecter des signatures d'opération et des noms de type dans le code si l'application associée est déjà implémentée. Toutefois, les types imbriqués dans des Datasets ne seront pas mis en conformité.

Remarque :

En fait, la mise en conformité d'un point de terminaison sur un membre d'un système met en conformité la définition sous-jacente du point de terminaison. Cette action modifie les utilisations de cette définition dans d'autres systèmes.

Bien qu'aucun code du corps de la méthode ne change, les modifications aux signatures d'opération et aux noms de type peuvent provoquer l'arrêt de la compilation du code du corps de la méthode. Par conséquent, révisez votre code. Identifiez les modifications qui peuvent être requises pour résoudre toute erreur du compilateur. Pour plus d'informations, consultez Modifications de code après la mise en conformité des points de terminaison de service Web avec les fichiers WSDL.

Points de terminaison de service Web basés sur des fichiers WSDL

Un fichier WSDL stipule les spécifications pour fournir et utiliser un service Web. Il agit comme un contrat entre un fournisseur et un consommateur. Les points de terminaison de service Web basés sur la même version d'un fichier WSDL vous permettent également de substituer ces points de terminaison. Pour plus d'informations, consultez Substitution de points de terminaison de service Web.

La définition de liaison WSDL dans un fichier WSDL décrit les opérations offertes par un service Web. Le point de terminaison fournisseur de service Web représente cette liaison WSDL. Si l'application ASP.NET associée active la génération de fichiers WSDL, Visual Studio génère un nouveau fichier WSDL pour chaque service Web sur cette application (une fois que l'application est implémentée). Visual Studio utilise également ce fichier WSDL pour générer des références Web pour les applications consommateur de service Web associées (une fois qu'elles sont implémentées). Pour plus d'informations, consultez Comment : contrôler la génération de fichiers WSDL pour les services Web ASP.NET.

Après la publication du fichier WSDL pour un service Web, chaque modification apportée à la définition d'un service Web est considérée comme une nouvelle liaison WSDL.

Conseil :

Si vous modifiez la définition de service Web, modifiez le nom de liaison WSDL, l'espace de noms de liaison WSDL ou les deux. La modification d'une définition de service Web sans modifier son espace de noms ou son nom de liaison WSDL peut masquer le fait que le service Web n'est plus compatible avec des applications connectées ou connectées précédemment. La valeur par défaut pour le nom du service WSDL et le nom de liaison WSDL est "WebServiceN" où "N" représente un nombre ordinal. Cependant, une fois l'application implémentée, la suppression du nom de liaison WSDL dans le fichier de classe de service Web remplace la valeur par défaut par "WebServiceNSoap". La valeur par défaut de l'espace de noms de service WSDL et l'espace de noms de liaison WSDL est "http://tempuri.org". La description de service WSDL et les propriétés d'emplacement de liaison WSDL n'ont pas de valeur par défaut. La valeur par défaut pour le nom de liaison WSDL est "WebServiceN".

Lorsque vous modifiez le nom de liaison ou l'espace de noms de liaison WSDL sur un point de terminaison fournisseur de service Web non implémenté, les propriétés correspondantes des points de terminaison consommateurs connectés et non implémentés sont mises à jour automatiquement ou au moment de leur reconnexion. Cependant, lorsque vous modifiez ces propriétés sur un point de terminaison fournisseur de services Web implémenté, les points de terminaison consommateurs de services Web implémentés et connectés peuvent ne pas être mis à jour immédiatement. Toutefois, vous pouvez mettre à jour ces propriétés manuellement pour ces points de terminaison consommateurs.

Types personnalisés référencés dans les signatures d'opération

Les signatures d'opération dans un point de terminaison de service Web peuvent référencer des classes CLR qui gèrent la sérialisation XML pour les types XML complexes référencés dans le fichier WSDL classent ou les fichiers de schéma XML connexes. Si l'application associée n'est pas encore implémentée, Visual Studio génère des fichiers de code pour ces classes au moment de l'implémentation. Il génère ces fichiers avec le service Web et les fichiers de projet d'application correspondants. Si l'application est déjà implémentée, il ajoute au projet existant des fichiers de code pour ces classes. Pour plus d'informations, consultez Vue d'ensemble des applications ASP.NET dans les diagrammes d'application.

Remarque :

Lorsque vous copiez un point de terminaison de service Web basé sur WSDL sur une autre application, Visual Studio copie uniquement les signatures d'opération. Si l'application de destination est déjà implémentée, il ne copie pas les fichiers de code pour les classes CLR supplémentaires. Si l'application de destination n'est pas encore implémentée, il ne générera pas les fichiers de code pour ces classes au moment de l'implémentation. Pour éviter cette situation, créez des points de terminaison à partir du même fichier WSDL ou .disco utilisé pour les points de terminaison que vous souhaitez copier.

Dans certains schémas XML, la classe de service Web et les classes de sérialisation des données exigent des attributs de sérialisation supplémentaires pour vérifier que la mise en forme du code XML est correcte. Toutefois, les points de terminaison fournisseurs de services Web créés basés sur WSDL prennent uniquement en charge un jeu restreint de ces attributs de sérialisation. Dans de rares cas, le fichier WSDL généré pour les points de terminaison de service Web et les messages XML résultants peuvent ne pas être cohérents avec le fichier WSDL d'origine ayant servi à créer le point de terminaison fournisseur de service Web.

Conseil :

Si ces problèmes se produisent, utilisez l'utilitaire Wsdl.exe pour générer la classe de service Web et les classes de sérialisation des données au lieu de créer un point de terminaison fournisseur de service Web à partir d'un fichier WSDL. Toutefois, vous devrez ajouter manuellement à votre projet le code généré et créer le fichier .asmx requis. Un point de terminaison fournisseur de service Web correct apparaît ensuite. Cela vous permet d'utiliser le concepteur pour modifier le point de terminaison.

La liste suivante contient des informations complémentaires sur la prise en charge de ces attributs de sérialisation :

  • Ces attributs de sérialisation XML sont ajoutés aux classes générées pour les types XML complexes : SerializableAttribute, SoapTypeAttribute, XmlIncludeAttribute, XmlRootAttribute et XmlTypeAttribute.

  • Ces attributs de sérialisation XML sont ajoutés aux champs de classe : XmlAnyAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlChoiceIdentifierAttribute, XmlElementAttribute, XmlEnumAttribute, XmlIgnoreAttribute, XmlNamespaceDeclarationsAttribute et XmlTextAttribute.

  • Les attributs de sérialisation ne sont pas appliqués au type de retour pour les méthodes Web.

  • Les attributs de sérialisation ne sont pas appliqués aux paramètres des méthodes Web.

  • Les attributs de sérialisation codés SOAP suivants ne sont pas appliqués à ces classes : SoapElementAttribute, SoapIgnoreAttribute, SoapAttributeAttribute, SoapAttributeOverrides, SoapAttributes, SoapEnumAttribute et SoapIncludeAttribute.

  • Les arguments d'attribut qui requièrent un type XML complexe sont générés comme un type String avec le nom qualifié complet du type. Cela provoquera une erreur du compilateur qui devra être résolue.

    Par exemple, <XmlIncludeAttribute(GetType("ClassName"))> en Visual Basic est généré comme <XmlIncludeAttribute("ClassName")>, alors que [XmlIncludeAttribute(typeof("ClassName"))] dans Visual C# est généré comme [XmlIncludeAttribute("ClassName")].

Voir aussi

Tâches

Comment : ajouter des points de terminaison à des applications

Comment : mettre en conformité les points de terminaison de service Web avec les fichiers WSDL

Concepts

Vue d'ensemble des points de terminaison dans des applications