Webdienstcompilertool
Zur Unterstützung des Dienstmodells generiert wsutil.exe Kopfzeilen, die sowohl client- als auch dienstseitig verwendet werden. Es generiert C-Proxydatei für clientseitige und C-Stubdatei für dienstseitige Anforderungen.
Um Serialisierungzu unterstützen, generiert der Compiler Header für Elementbeschreibungen für globale Elementdefinitionen und alle Typdefinitionsinformationen in der Proxydatei, die vom Serialisierungsmodul verwendet werden sollen.
Verwendung
WsUtil.exe [Befehlszeilenschalter [switch-options]:]<Dateinamen>
Befehlszeilenoptionen
Gibt WsUtil.exe Compileroptionen an. Schalter können in beliebiger Reihenfolge angezeigt werden. Strich ('-') und Schrägstrich ('/') werden genauso behandelt.
Liste der Befehlszeilenoptionen
- @filename Gibt an, dass die Eingabedatei als Antwortdatei behandelt werden soll. Diese Option kann mehrmals in der Argumentliste verwendet werden.
- /wsdl:<Dateiname>:<optional_url> Gibt an, dass die Eingabedatei als wsdl-Datei behandelt werden soll. Es sind mehrere wsdl-Eingaben zulässig, und alle angegebenen wsdl-Dateien werden verarbeitet. Die optional_url gibt den Speicherort an, von dem die Metadaten abgerufen wurden. Wenn kein optional_url angegeben ist, generiert Wsutil intern eine eindeutige URL. Siehe auch Richtlinienunterstützung.
- /xsd:<Dateinamen> Gibt an, dass der Eingabedateiname als Schemadatei behandelt werden soll. Es sind mehrere XSD-Eingaben zulässig, und alle angegebenen Schemadateien werden verarbeitet.
- /wsp:<Dateinamen>:<optional_url> Gibt an, dass der Eingabedateiname als Richtlinienmetadaten behandelt werden soll. Es sind mehrere wsp-Eingaben zulässig, und alle angegebenen Richtliniendateien werden verarbeitet. Die optional_url gibt den Speicherort an, von dem die Metadaten abgerufen wurden. Wenn kein optional_url angegeben ist, generiert Wsutil intern eine eindeutige URL. Richtliniendateien werden ignoriert, wenn das Flag "/nopolicy" angegeben ist. Siehe auch Richtlinienunterstützung.
- /nopolicy: Richtlinienverarbeitung deaktivieren.
- /out:<Dirname> Gibt den Verzeichnisnamen für Ausgabedateien an.
- /noclient Generieren Sie den clientseitigen Stub nicht.
- /noservice Generieren Sie den dienstseitigen Stub nicht.
- /prefix:<Zeichenfolge> vordefinierte Zeichenfolge an alle generierten Bezeichner.
- /fullname Prepend normalisierter Dateiname für generierte Bezeichner. 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 xsd:string-Typ. Die Anwendung kann dieses Flag verwenden, um dieses Verhalten zu überschreiben und stattdessen WS_STRING für "xsd:type" zu generieren.
- /help – Hilfemeldung anzeigen
- /? Identisch mit /help
- /W:x Fehlerbehandlungsoptionen. Könnte W:0-W:4 | WX
- /nologo Generieren Sie keine compilerspezifischen Informationen für die 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 werden:
Clientproxy ({inputfilename}.c)
Dienst-Stub ({inputfilename}.c)
Headerdatei ({inputfilename}.h)
Der Stamm des generierten Dateinamens ist der Eingabedateiname. Ursprüngliche Eingabedateierweiterungen bleiben erhalten, um dateinamenkonflikte für generierte Dateien zu verhindern. Standardmäßig werden Client- und Dienststumbs in derselben Datei generiert, wobei Dienst-Stubcode 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 "Stempel"-Abschnitt, der die Compileroption, die Toolversion, die anwendbare 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.
Wsutil Compiler funktioniert nur aus der lokalen Metadatendatei. Das Tool unterstützt das Herunterladen von Metadaten aus ausgeführten Webdiensten nicht. Entwickler können andere unterstützte Webservicetools 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 für mehrere Eingabe-/Ausgabedateien
WSDL und XML-Schema ermöglichen das Einschließen/Importieren von Definitionen aus anderen Namenzeichen, die an anderen Speicherorten/Dateien angegeben sind. Wsutil unterstützt mehrere Schema-/wsdl/Richtlinieneingaben und generiert einen Satz von Stub/Headern für jede Eingabedatei. Wsutil folgt nicht den Einschließen- und Importanweisungen. Stattdessen sollte die Anwendung Dateien mit allen erforderlichen Namespaces an wsutil übergeben, sodass das Tool alle Abhängigkeiten während der Kompilierung 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
Ausgabedateiformat
Für jede Ausgabedatei generiert wsutil extern verfügbare Definitionen in der Headerdatei. Abgesehen von C-Strukturdefinitionen und Stubfunktionsprototypen werden alle anderen webdienstbezogenen Definitionen in einer globalen Struktur mit normalisiertem Dateinamen 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 werden. Beispielsweise werden keine Nachrichten-, Operations- und Vertragsfelder für XSD-Dateien generiert.
Warnungsstufen 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 weiter ausgeführt werden, aber der Benutzer sollte das Problem kennen. Beispielsweise wird eine W1-Warnung generiert, wenn nicht unterstützte Attribute wie einige WSDL-Facets in wsdl vorhanden sind, die sich nicht auf die Codegenerierung auswirken.
- WsUtil generiert W2-Warnungen mit weniger schwerwiegenden Problemen. Es ist keine Funktionalität verloren gegangen, aber der Anwendungsentwickler möchte dies möglicherweise wissen. Wie Verhalten, die sich möglicherweise von anderen Plattformen unterscheiden.
- WsUtil generiert W3-Warnungen mit minimalen Auswirkungen auf generierten Code. Beispielsweise generiert wsutil.exe eine W3-Warnung, wenn sich normalisierte Zeichenfolge von der ursprünglichen Zeichenfolge unterscheidet.
- W4-Warnungen sind eher "Informationswarnungen" und WsUtil-Problem W4 in Fällen wie das Ignorieren des Dokumentationsattributs in WSDL.
- WX gibt an, dass der Compiler Warnungen als Fehler behandelt. wsutil generiert z. B. Fehler für alle W1-Warnungen, wenn /W:1 /WX angegeben ist.
/W:{N} gibt an, welche Warnstufe generiert werden soll. /W:1 bedeutet, dass Warnungen der Warnstufe 1 generiert werden sollten, und Warnungen der Warnstufe 2 und darunter sollten maskiert und nicht vom Tool generiert werden.
/fullname
Diese Option gibt an, dass WsUtil.exe 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 in Englisch.
Umgebungsvariable
WsUtil.exe verwendet keine Umgebungsvariablen.
Plattformunabhängig
Ausgabedateien von WsUtil.exe sind plattformunabhängig. Es gibt keinen architekturabhängigen Code, der im Stub generiert wird; alle spezifischen Architekturen werden vom C-Compiler behandelt. Der Stub kann auf allen von uns unterstützten Plattformen verwendet werden.
Beschreibung für wsutil.exe Ausgabe finden Sie unter WSDL-Unterstützung und Schemaunterstützung Teil.