Partager via


Outil compilateur de services web

Pour prendre en charge le modèle de service, wsutil.exe génère l’en-tête à utiliser côté client et côté service. Il génère le fichier proxy C côté client et le fichier stub C pour le côté service, selon les besoins.

Pour prendre en charge de sérialisation, le compilateur génère des en-têtes pour les descriptions d’éléments pour les définitions d’éléments globaux et toutes les informations de définition de type dans le fichier proxy à consommer par le moteur de sérialisation.

Usage

WsUtil.exe [commutateurs de ligne de commande [switch-options] :]<nom de fichier>

commutateurs de ligne de commande

Spécifie WsUtil.exe options du compilateur. Les commutateurs peuvent apparaître dans n’importe quel ordre. Les tirets ('-') et les barres obliques ('/') sont traités comme identiques.

Liste des options de ligne de commande

  • @filename Spécifie que le fichier d’entrée doit être traité comme un fichier réponse. Cette option peut être utilisée plusieurs fois, à n’importe quel endroit de la liste d’arguments.
  • /wsdl :<nom de fichier>:<optional_url> Spécifie que le fichier d’entrée doit être traité comme un fichier wsdl. Plusieurs entrées wsdl sont autorisées et tous les fichiers wsdl spécifiés sont traités. Le optional_url spécifie l’emplacement à partir duquel les métadonnées ont été récupérées. Si aucune optional_url n’est spécifiée, Wsutil génère une URL unique en interne. Consultez également de support de stratégie.
  • /xsd :<nom de fichier> Spécifie que le nom de fichier d’entrée doit être traité comme un fichier de schéma. Plusieurs entrées xsd sont autorisées et tous les fichiers de schéma spécifiés sont traités.
  • /wsp :<nom de fichier>:<optional_url> Spécifie que le nom de fichier d’entrée doit être traité comme des métadonnées de stratégie. Plusieurs entrées wsp sont autorisées et tous les fichiers de stratégie spécifiés sont traités. Le optional_url spécifie l’emplacement à partir duquel les métadonnées ont été récupérées. Si aucune optional_url n’est spécifiée, Wsutil génère une URL unique en interne. Les fichiers de stratégie sont ignorés si l’indicateur /nopolicy est spécifié. Consultez également de support de stratégie.
  • /nopolicy Désactive le traitement des stratégies.
  • /out :<nom dirname> Spécifie le nom du répertoire pour les fichiers de sortie
  • /noclient Ne génère pas le stub côté client.
  • /noservice Ne générez pas le stub côté service.
  • /prefix :<chaîne> chaîne spécifiée à toutes les identificateurs générés.
  • /fullname Prepend normalized filename to generated identifiers. Par défaut, seul le nom spécifié dans l’attribut « name » sera utilisé pour générer des identificateurs pour les descriptions associées.
  • /string :<WS_STRING>|<WCHAR*> Par défaut, wsutil génère WCHAR* pour le type xsd :string. L’application peut utiliser cet indicateur pour remplacer ce comportement et générer WS_STRING pour xsd :type à la place.
  • /help Display help help message
  • /? Identique à /help
  • Options de gestion des erreurs /W :x. Peut être W :0-W :4 | WX
  • /nologo Ne générez pas d’informations spécifiques du compilateur sur la sortie de la console.
  • /nostamp Ne générez pas d’informations spécifiques au compilateur sur les fichiers générés.

Par défaut, le compilateur génère les fichiers suivants pour le fichier WSDL ou WSDL retourné par l’échange de métadonnées :

  • Proxy client ({inputfilename}.c)

  • Stub de service ({inputfilename}.c)

  • Fichier d’en-tête ({inputfilename}.h)

    La racine du nom de fichier généré est le nom du fichier d’entrée. Les extensions de fichier d’entrée d’origine sont conservées pour empêcher la collision de nom de fichier pour les fichiers générés. Par défaut, les stubs client et de service sont générés dans le même fichier, avec le code stub de service généré après le code proxy.

    Par défaut, le compilateur génère les fichiers suivants pour un fichier XSD pour le schéma retourné par l’échange de métadonnées :

  • descriptions de sérialisation ({inputfilename}.c)

  • Fichier d’en-tête ({inputfilename}.h)

    La racine du nom de fichier est le nom du service.

Wsutil.exe génère une section « tampon » au début de tous les fichiers générés, indiquant l’option du compilateur, la version de l’outil, l’option de ligne de commande applicable, etc. Cette section peut être désactivée à l’aide de l’option /nostamp pour éviter le bruit avec la comparaison des fichiers générés.

Wsutil ne prend pas en charge le téléchargement des métadonnées

Le compilateur Wsutil fonctionne uniquement à partir du fichier de métadonnées local. L’outil ne prend pas en charge le téléchargement des métadonnées à partir des services web en cours d’exécution. Les développeurs peuvent utiliser d’autres outils de service web pris en charge, comme svcutil, pour télécharger des métadonnées sur une machine locale, inspecter les fichiers enregistrés et transmettre ces fichiers à wsutil.exe pour la compilation.

Prise en charge de plusieurs fichiers d’entrée/sortie

Le schéma WSDL et XML permet d’inclure/importer des définitions à partir d’autres espaces de noms spécifiés dans d’autres emplacements/fichiers. Wsutil prend en charge plusieurs entrées de schéma/wsdl/policy et génère un ensemble de stub/header pour chaque fichier d’entrée. Wsutil ne suit pas les instructions include et import. Au lieu de cela, l’application doit transmettre des fichiers contenant tous les espaces de noms nécessaires à wsutil afin que l’outil puisse résoudre toutes les dépendances pendant la compilation.

WsUtil.exe /xsd :stockquote.xsd /wsdl :stockquote.wsdl /wsdl :stockquoteservice.wsdl

wsutil génère trois jeux de fichiers de sortie :

  • stockquote.xsd.c stockquote.xsd.h
  • stockquote.wsdl.c stockquote.wsdl.h
  • stockquoteservice.wsdl.h stockquoteservices.wsdl.c

Format de fichier de sortie

Pour chaque fichier de sortie, wsutil génère des définitions disponibles en externe dans le fichier d’en-tête. Autres que les définitions de structure C et les prototypes de fonction stub, toutes les autres définitions liées aux services web sont encapsulées dans une structure globale nommée avec un nom de fichier normalisé.

typedef struct _stockquote_wsdl {
  struct {
  ... // list of WS_STRUCT_DESCRIPTION for all global complex types.
  } globalTypes;
  struct {
  ... // WS_ELEMENT_DESCRIPTION for all global elements.
  } globalElements;
  struct {
  ...
  } messages;
  struct {
  ...
  } contracts;
} _stockquote_wsdl;

EXTERN_C _stockquote_wsdl stockquote_wsdl;

Notez que tous les champs ne sont pas générés pour la structure globale. Un champ de niveau supérieur est généré uniquement lorsque les définitions associées sont spécifiées dans le fichier d’entrée. Par exemple, aucun champ de message, d’opérations et de contrats n’est généré pour les fichiers xsd.

Niveaux d’avertissement et niveau d’erreur

Comme pour le compilateur C, WsUtil.exe prend en charge quatre niveaux d’avertissement et un niveau d’erreur :

  • WsUtil.exe génère des erreurs avec des échecs irrécupérables, comme le fichier wsdl non valide, les options du compilateur non valides, etc.
  • WsUtil génère des avertissements W1 avec des problèmes récupérables graves. Le compilateur peut continuer, mais l’utilisateur doit être conscient du problème. Par exemple, un avertissement W1 est généré s’il existe des attributs non pris en charge, comme certaines facettes WSDL, dans wsdl qui n’affectent pas la génération de code.
  • WsUtil génère des avertissements W2 avec des problèmes moins graves. Il n’y a pas de perte de fonctionnalités, mais le développeur d’applications peut vouloir le savoir. Comme les comportements qui peuvent être différents d’autres plateformes.
  • WsUtil génère des avertissements W3 avec un impact minimal sur le code généré. Par exemple, wsutil.exe génère un avertissement W3 lorsque la chaîne normalisée est différente de la chaîne d’origine.
  • L’avertissement W4 est plus semblable aux avertissements « informationnels » et WsUtil émet W4 dans des cas comme ignorer l’attribut de documentation dans WSDL.
  • WX indique que le compilateur traite l’avertissement comme une erreur. Par exemple, wsutil génère une erreur pour tous les avertissements W1 si /W :1 /WX est spécifié.

/W :{N} spécifiez le niveau de message d’avertissement à générer. /W :1 signifie que les avertissements de niveau d’avertissement 1 doivent être générés, et les avertissements du niveau d’avertissement 2 et inférieur doivent être masqués et non générés par l’outil.

/fullname

Cette option indique que WsUtil.exe génère un nom complet pour les identificateurs afin d’éviter toute collision de noms potentielle. Par exemple, dans example.xsd, nous avons :

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://Example.org" 
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" targetNamespace="http://Example.org" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
 <wsdl:types>
  <xs:element name="SimpleStruct">
   <xs:complexType>
    <xs:sequence>
     <xs:element name="a" type="xs:int" />
     <xs:element name="b" type="xs:int" />
    </xs:sequence>
   </xs:complexType>
  </xs:element>
 </wsdl:types>
</wsdl:definitions>

Par défaut, WsUtil.exe génère :

typedef struct SimpleStruct {
  int a;
  int b;
};

Toutefois, si l’option de ligne de commande /fullname est spécifiée, WsUtil.exe génère à la place la définition de structure suivante :

typedef struct exmaple_xsd_SimpleStruct {
  int a;
  int b;
};

Mondialisation

L’outil est neutre en langue et peut être localisé dans différentes langues. Tous les messages d’erreur/sortie de la console peuvent être localisés. Toutefois, les options de ligne de commande restent en anglais.

Variable d’environnement

WsUtil.exe n’utilise aucune variable d’environnement.

Indépendant de la plateforme

Les fichiers de sortie de WsUtil.exe sont indépendants de la plateforme. Il n’existe aucun code dépendant de l’architecture généré dans le stub ; toute architecture spécifique sera prise en charge par le compilateur C. Le stub peut être utilisé dans toutes les plateformes que nous prenons en charge.

La description de la sortie wsutil.exe est disponible dans prise en charge de WSDL et prise en charge du schéma partie.