Comment utiliser un fichier WSDL pour créer un service WCF (pas un 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 objective ?


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

En utilisant 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 différentes interfaces de service – et ceci est votre instance de serveur.

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

Si vous savez quoi chercher, il existe de bonnes ressources. Essayez “Contract First” et WCF. ou “WSDL First” et WCF.

Voici une sélection:

  • Présentation de base du développement WSDL-First avec WCF et SvcUtil.exe .
  • WSCF – Un complément gratuit à Visual Studio permettant la conception de Contract-First avec WCF
    • Introduction à WSCF
    • Une visite guidée de l’utilisation de WSCF
    • La page du projet WSCF sur CodePlex (WSCF est maintenant open source)
  • Article sur la conception du WSDL “WCF-Friendly”

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

 svcutil /sc "WSDL file path" 

Si votre fichier WSDL contient des fichiers XSD compatibles, transmettez-les comme arguments après le 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.

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

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

À 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 ça va charger correctement.