web-dev-qa-db-fra.com

Comment utiliser un fichier WSDL pour créer un service WCF (ne pas effectuer d'appel)

J'ai un ancien fichier WSDL et je souhaite créer un serveur basé sur ce fichier WSDL.

Le WSDL est généré à partir d’un ASMX (je suppose mais je ne suis pas sûr).

Comment puis-je atteindre cet objectif ?


question originale où le PO pensait avoir besoin de créer un client basé sur le WSDL.

94
Raha

Avec svcutil, vous pouvez créer des interfaces et des classes (contrats de données) à partir du WSDL.

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

Cela créera un fichier appelé "your.cs" en C # (ou "your.vb" dans VB.NET) qui contient tous les éléments nécessaires.

Maintenant, vous devez créer une classe "MyService" qui implémentera l'interface de service (IServiceInterface) - ou les plusieurs interfaces de service - et il s'agit de votre instance de serveur.

Désormais, une classe en elle-même n’aide pas encore - vous devez héberger le service quelque part. Vous devez soit créer votre propre instance ServiceHost qui héberge le service, configurer des points de terminaison, etc. - ou vous pouvez héberger votre service dans IIS.

110
marc_s

Il existe de bonnes ressources si vous savez quoi rechercher. Essayez "Contrat d'abord" et WCF. ou "WSDL First" et WCF.

Voici une sélection:

41
Cheeso

Utilisez svcutil.exe avec le /sc _ commutateur pour générer les contrats WCF. Cela créera un fichier de code que vous pourrez ajouter à votre projet. Il contiendra toutes les interfaces et les types de données dont vous avez besoin pour créer votre service. Modifiez l'emplacement de sortie à l'aide de la touche /o switch, ou vous pouvez trouver le fichier dans le dossier où vous avez exécuté svcutil.exe. Le langage par défaut est C # mais je pense (je ne l’ai jamais essayé) que vous devriez pouvoir changer cela en utilisant /l:vb.

svcutil /sc "WSDL file path"

Si votre fichier WSDL est compatible avec des fichiers XSD, transmettez-les en tant qu'arguments après le fichier WSDL.

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

Créez ensuite une nouvelle classe correspondant à votre service et implémentez l'interface de contrat que vous venez de créer.

29
Dennis Calla

Vous pouvez utiliser svcutil.exe pour générer le code client. Cela inclurait la définition du contrat de service et des éventuels contrats de données et contrats de défaillance requis.

Ensuite, supprimez simplement le code client: les classes qui implémentent les contrats de service. Vous devrez ensuite les implémenter vous-même, dans votre service.

7
John Saunders

À l'aide de l'outil "Ajouter une référence de service" dans Visual Studio, vous pouvez insérer l'adresse en tant que:

fichier: ///path/to/wsdl/file.wsdl

Et cela se chargera correctement.

3
Vagner Gon