Webdienstcompilertool

Zur Unterstützung des Dienstmodells generiert wsutil.exe einen Header, der sowohl auf der Client- als auch auf der Dienstseite verwendet werden soll. Bei Bedarf wird eine C-Proxydatei für clientseitig und eine C-Stubdatei für die Dienstseite generiert.

Zur Unterstützung der Serialisierung generiert der Compiler Header für Elementbeschreibungen für globale Elementdefinitionen und alle Typdefinitionsinformationen in der Proxydatei, die von der Serialisierungs-Engine verwendet werden sollen.

Verbrauch

WsUtil.exe [Befehlszeilenschalter [switch-options]:]<filename>

Befehlszeilenschalter

Gibt WsUtil.exe Compileroptionen an. Schalter können in beliebiger Reihenfolge angezeigt werden. Bindestrich ('-') und Schrägstrich ('/') werden gleich behandelt.

Liste der Befehlszeilenoptionen

  • @filename Gibt an, dass die Eingabedatei als Antwortdatei behandelt werden soll. Diese Option kann mehrmals an beliebigen Stellen in der Argumentliste verwendet werden.
  • /wsdl:<filename>:<optional_url> Gibt an, dass die Eingabedatei als wsdl-Datei behandelt werden soll. Mehrere wsdl-Eingaben sind zulässig, und alle angegebenen wsdl-Dateien werden verarbeitet. Die optional_url gibt den Speicherort an, von dem die Metadaten abgerufen wurden. Wenn keine optional_url angegeben ist, generiert Wsutil intern eine eindeutige URL. Siehe auch Richtlinienunterstützung.
  • /xsd:<filename> Gibt an, dass der Eingabedateiname als Schemadatei behandelt werden soll. Mehrere xsd-Eingaben sind zulässig, und alle angegebenen Schemadateien werden verarbeitet.
  • /wsp:<filename>:<optional_url> Gibt an, dass der Eingabedateiname als Richtlinienmetadaten behandelt werden soll. Mehrere wsp-Eingaben sind zulässig, und alle angegebenen Richtliniendateien werden verarbeitet. Die optional_url gibt den Speicherort an, von dem die Metadaten abgerufen wurden. Wenn keine optional_url angegeben ist, generiert Wsutil intern eine eindeutige URL. Richtliniendateien werden ignoriert, wenn das Flag "/nopolicy" angegeben ist. Siehe auch Richtlinienunterstützung.
  • /nopolicy Deaktivieren Sie die Richtlinienverarbeitung.
  • /out:<dirname> Gibt den Verzeichnisnamen für Ausgabedateien an.
  • /noclient Generieren Sie den clientseitigen Stub nicht.
  • /noservice Generieren Sie den dienstseitigen Stub nicht.
  • /prefix:<string> Stellen Sie allen generierten Bezeichnern die angegebene Zeichenfolge voran.
  • /fullname Der normalisierte Dateiname wird den generierten Bezeichnern vorangestellt. Standardmäßig wird nur der im Attribut "name" angegebene Name verwendet, um Bezeichner für verwandte Beschreibungen zu generieren.
  • /string:<WS_STRING>|< WCHAR*> Standardmäßig generiert wsutil WCHAR* für den xsd:string-Typ. Die Anwendung kann dieses Flag verwenden, um dieses Verhalten zu überschreiben, und generiert stattdessen WS_STRING für xsd:type.
  • /help Hilfenachricht anzeigen
  • /? Identisch mit /help
  • /W:x Fehlerbehandlungsoptionen. Könnte W:0-W:4 sein | WX
  • /nologo Generieren Sie keine compilerspezifischen Informationen zur Konsolenausgabe.
  • /nostamp Generieren Sie keine compilerspezifischen Informationen zu generierten Dateien.

Standardmäßig generiert der Compiler die folgenden Dateien für die WSDL-Datei oder WSDL, die vom Metadatenaustausch zurückgegeben wird:

  • Clientproxy ({inputfilename}.c)

  • Dienststub ({inputfilename}.c)

  • Headerdatei ({inputfilename}.h)

    Der Stamm des generierten Dateinamens ist der Name der Eingabedatei. Die ursprünglichen Eingabedateierweiterungen werden beibehalten, um einen Dateinamenkonflikt für generierte Dateien zu verhindern. Standardmäßig werden Client- und Dienststubs in derselben Datei generiert, wobei dienststub-Code nach dem Proxycode generiert wird.

    Standardmäßig generiert der Compiler die folgenden Dateien für eine XSD-Datei für das Schema, das vom Metadatenaustausch zurückgegeben wird:

  • Serialisierungsbeschreibungen ({inputfilename}.c)

  • Headerdatei ({inputfilename}.h)

    Der Stamm des Dateinamens ist der Dienstname.

Wsutil.exe generiert am Anfang aller generierten Dateien einen Abschnitt "Stamp", der die Compileroption, die Toolversion, die zutreffende Befehlszeilenoption usw. angibt. Dieser Abschnitt kann mithilfe der Option /nostamp deaktiviert werden, um Rauschen beim Vergleichen generierter Dateien zu vermeiden.

Wsutil unterstützt das Herunterladen von Metadaten nicht.

Der Wsutil-Compiler funktioniert nur aus einer lokalen Metadatendatei. Das Tool unterstützt das Herunterladen von Metadaten aus ausgeführten Webdiensten nicht. Entwickler können andere unterstützte Webdiensttools wie svcutil verwenden, um Metadaten auf den lokalen Computer herunterzuladen, die gespeicherten Dateien zu überprüfen und diese Dateien zur Kompilierung an wsutil.exe zu übergeben.

Unterstützung mehrerer Eingabe-/Ausgabedateien

Das WSDL- und XML-Schema ermöglicht das Einschließen/Importieren von Definitionen aus anderen Namensräumen, die an anderen Speicherorten/Dateien angegeben sind. Wsutil unterstützt mehrere Schema-/wsdl-/Richtlinieneingaben und generiert einen Stub-/Headersatz für jede Eingabedatei. Wsutil folgt nicht den include- und import-Anweisungen. Stattdessen sollte die Anwendung Dateien mit allen erforderlichen Namespaces an wsutil übergeben, damit das Tool während der Kompilierung alle Abhängigkeiten auflösen kann.

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

wsutil generiert drei Sätze von Ausgabedateien:

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

Format der Ausgabedatei

Für jede Ausgabedatei generiert wsutil extern verfügbare Definitionen in der Headerdatei. Mit Ausnahme von C-Strukturdefinitionen und Stubfunktionsprototypen werden alle anderen webdienstbezogenen Definitionen in einer globalen Struktur mit dem Namen normalisierter Datei gekapselt.

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;

Beachten Sie, dass nicht alle Felder für die globale Struktur generiert werden. Ein Feld der obersten Ebene wird nur generiert, wenn die zugehörigen Definitionen in der Eingabedatei angegeben sind. Beispielsweise werden für xsd-Dateien keine Nachrichten-, Vorgangs- und Vertragsfelder generiert.

Warnstufen und Fehlerstufe

Ähnlich wie beim C-Compiler unterstützt WsUtil.exe vier Warnstufen und eine Fehlerstufe:

  • WsUtil.exe generiert Fehler mit nicht behebbaren Fehlern, z. B. ungültige wsdl-Datei, ungültige Compileroptionen usw.
  • WsUtil generiert W1-Warnungen mit schwerwiegenden wiederherstellbaren Problemen. Der Compiler kann weiterhin ausgeführt werden, aber der Benutzer sollte sich des Problems bewusst sein. Beispielsweise wird eine W1-Warnung generiert, wenn nicht unterstützte Attribute wie einige WSDL-Facetten in wsdl vorhanden sind, die sich nicht auf die Codegenerierung auswirken.
  • WsUtil generiert W2-Warnungen mit weniger schwerwiegenden Problemen. Es geht nicht an Funktionalität verloren, aber Anwendungsentwickler möchten das vielleicht wissen. Wie Verhaltensweisen, die sich von anderen Plattformen unterscheiden können.
  • WsUtil generiert W3-Warnungen mit minimalen Auswirkungen auf generierten Code. Beispielsweise generiert wsutil.exe eine W3-Warnung, wenn sich die normalisierte Zeichenfolge von der ursprünglichen Zeichenfolge unterscheidet.
  • Die W4-Warnung ähnelt eher "Informationswarnungen", und WsUtil gibt W4 aus, wenn das Dokumentationsattribut in WSDL ignoriert wird.
  • WX gibt an, dass der Compiler warnungen als Fehler behandelt. Beispielsweise generiert wsutil einen Fehler für alle W1-Warnungen, wenn /W:1 /WX angegeben ist.

/W:{N} gibt an, welche Ebene der Warnmeldung generiert werden soll. /W:1 bedeutet, dass Warnungen der Warnstufe 1 generiert werden sollten, und Warnungen der Warnungsstufe 2 und niedriger sollten maskiert und nicht vom Tool generiert werden.

/Fullname

Diese Option gibt an, dass WsUtil.exe den vollständigen Namen für Bezeichner generiert, um potenzielle Namenskonflikte zu vermeiden. In "example.xsd" haben wir beispielsweise Folgendes:

<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>

Standardmäßig generiert WsUtil.exe Folgendes:

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

Wenn jedoch die Befehlszeilenoption /fullname angegeben ist, generiert WsUtil.exe stattdessen die folgende Strukturdefinition:

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

Globalisierung

Das Tool ist sprachneutral und kann in verschiedene Sprachen lokalisiert werden. Alle Fehlermeldungen/Konsolenausgabe können lokalisiert werden. Die Befehlszeilenoptionen bleiben jedoch auf Englisch.

Umgebungsvariable

WsUtil.exe verwendet keine Umgebungsvariablen.

Plattformunabhängig

Ausgabedateien von WsUtil.exe sind plattformunabhängig. Im Stub wird kein architekturabhängiger Code generiert. Alle architekturspezifischen Elemente werden vom C-Compiler übernommen. Der Stub kann auf allen von uns unterstützten Plattformen verwendet werden.

Eine Beschreibung für wsutil.exe Ausgabe finden Sie unter WSDL-Unterstützung und Schemaunterstützung .