Hulpprogramma voor webservicecompilatie
Ter ondersteuning van het servicemodel genereert wsutil.exe header die moet worden gebruikt in zowel client- als servicezijde. Het genereert indien nodig een C-proxybestand voor clientzijde en C stub-bestand voor de servicezijde.
Ter ondersteuning van serialisatiegenereert de compiler headers voor elementbeschrijvingen voor globale elementdefinities en alle typedefinitiegegevens in het proxybestand die door de serialisatie-engine moeten worden gebruikt.
Gebruik
WsUtil.exe [opdrachtregelopties [switch-options]:]<bestandsnaam>
opdrachtregelopties
Hiermee geeft u WsUtil.exe compileropties. Schakelopties kunnen in elke volgorde worden weergegeven. Streepje ('-') en slash ('/') worden als hetzelfde behandeld.
Lijst met opdrachtregelopties
- @filename Geeft aan dat het invoerbestand moet worden behandeld als een antwoordbestand. Deze optie kan meerdere keren worden gebruikt, op elke plaats in de lijst met argumenten.
- /wsdl:<bestandsnaam>:<optional_url> Geeft aan dat het invoerbestand moet worden behandeld als een wsdl-bestand. Er zijn meerdere wsdl-invoer toegestaan en alle opgegeven wsdl-bestanden worden verwerkt. De optional_url geeft de locatie aan van waaruit de metagegevens zijn opgehaald. Als er geen optional_url is opgegeven, genereert Wsutil intern een unieke URL. Zie ook beleidsondersteuning.
- /xsd:<bestandsnaam> Geeft aan dat de invoerbestand moet worden behandeld als een schemabestand. Er zijn meerdere XSD-invoer toegestaan en alle opgegeven schemabestanden worden verwerkt.
- /wsp:<bestandsnaam>:<optional_url> Geeft aan dat de invoerbestand moet worden behandeld als beleidsmetagegevens. Meerdere wsp-invoer is toegestaan en alle opgegeven beleidsbestanden worden verwerkt. De optional_url geeft de locatie aan van waaruit de metagegevens zijn opgehaald. Als er geen optional_url is opgegeven, genereert Wsutil intern een unieke URL. Beleidsbestanden worden genegeerd als /nopolicy vlag is opgegeven. Zie ook beleidsondersteuning.
- /nopolicy Beleidsverwerking uitschakelen.
- /out:<dirname> Geeft mapnaam op voor uitvoerbestanden
- /noclient genereer de stub aan de clientzijde niet.
- /noservice Genereer de stub aan de servicezijde niet.
- /voorvoegsel:<tekenreeks> opgegeven tekenreeks vooraf aan alle gegenereerde id's.
- /fullname Genormaliseerde bestandsnaam voor gegenereerde id's. Standaard wordt alleen de naam die is opgegeven in het kenmerk 'name' gebruikt voor het genereren van id's voor gerelateerde beschrijvingen.
- /string:<WS_STRING>|<WCHAR*> Standaard genereert wsutil WCHAR* voor het type xsd:string. De toepassing kan deze vlag gebruiken om dat gedrag te overschrijven en genereert in plaats daarvan WS_STRING voor xsd:type.
- /help Help-bericht weergeven
- /? Hetzelfde als /help
- /W:x Foutafhandelingsopties. Kan W:0-W:4 zijn | WX
- /nologo Genereer geen specifieke informatie over de compiler in de console-uitvoer.
- /nostamp Genereer geen specifieke compilerinformatie over gegenereerde bestanden.
De compiler genereert standaard de volgende bestanden voor het WSDL-bestand of WSDL die worden geretourneerd door metagegevensuitwisseling:
Clientproxy ({inputfilename}.c)
Service Stub ({inputfilename}.c)
Headerbestand ({inputfilename}.h)
De hoofdmap van de gegenereerde bestandsnaam is de naam van het invoerbestand. Oorspronkelijke bestandsextensies voor invoer blijven behouden om conflicten tussen bestandsnaamen voor gegenereerde bestanden te voorkomen. Client- en service-stubs worden standaard gegenereerd in hetzelfde bestand, waarbij service-stub-code wordt gegenereerd na de proxycode.
Standaard genereert de compiler de volgende bestanden voor een XSD-bestand voor het schema dat wordt geretourneerd door metagegevensuitwisseling:
serialisatiebeschrijvingen ({inputfilename}.c)
Headerbestand ({inputfilename}.h)
De hoofdmap van de bestandsnaam is de servicenaam.
Wsutil.exe genereert een sectie 'stempel' aan het begin van alle gegenereerde bestanden, waarmee de compileroptie, de toolversie, de opdrachtregeloptie van toepassing zijn, enzovoort wordt aangegeven. Deze sectie kan worden uitgeschakeld met behulp van de optie /nostamp om ruis te voorkomen met het vergelijken van gegenereerde bestanden.
Wsutil biedt geen ondersteuning voor het downloaden van metagegevens
Wsutil-compiler werkt alleen vanuit het lokale metagegevensbestand. Het hulpprogramma biedt geen ondersteuning voor het downloaden van metagegevens van het uitvoeren van webservices. Ontwikkelaars kunnen andere ondersteunde webservicehulpprogramma's, zoals svcutil, gebruiken om metagegevens te downloaden naar de lokale computer, de opgeslagen bestanden te inspecteren en deze bestanden door te geven aan wsutil.exe voor compilatie.
Ondersteuning voor meerdere invoer-/uitvoerbestanden
Met WSDL en XML-schema kunt u definities opnemen/importeren uit andere naamruimten die zijn opgegeven in andere locatie/bestanden. Wsutil ondersteunt meerdere schema-/wsdl/policy-invoer en genereert één set stub/headers voor elke invoerbestanden. Wsutil volgt de insluitings- en importinstructies niet. In plaats daarvan moet de toepassing bestanden met alle benodigde naamruimten doorgeven aan wsutil, zodat het hulpprogramma alle afhankelijkheden tijdens de compilatie kan oplossen.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
wsutil genereert drie sets uitvoerbestanden:
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
Uitvoerbestandsindeling
Voor elk uitvoerbestand genereert wsutil extern beschikbare definities in het headerbestand. Behalve C-structuurdefinities en stub-functieprototypes worden alle andere webservicesgerelateerde definities ingekapseld in een globale structuur met de naam genormaliseerde bestandsnaam.
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;
U ziet dat niet alle velden worden gegenereerd voor de globale structuur. Er wordt alleen een veld op het hoogste niveau gegenereerd wanneer de gerelateerde definities zijn opgegeven in het invoerbestand. Er worden bijvoorbeeld geen velden voor berichten, bewerkingen en contracten gegenereerd voor xsd-bestanden.
Waarschuwingsniveaus en foutniveau
Net als bij C-compiler ondersteunt WsUtil.exe vier waarschuwingsniveaus en één foutniveau:
- WsUtil.exe fouten genereert met onherstelbare fouten, zoals ongeldig wsdl-bestand, ongeldige compileropties, enzovoort.
- WsUtil genereert W1-waarschuwingen met ernstige herstelbare problemen. De compiler kan doorgaan, maar de gebruiker moet op de hoogte zijn van het probleem. Er wordt bijvoorbeeld een W1-waarschuwing gegenereerd als er niet-ondersteunde kenmerken zijn, zoals sommige WSDL-facetten, in wsdl die geen invloed hebben op het genereren van code.
- WsUtil genereert W2-waarschuwingen met minder ernstige problemen. Er is geen functionaliteit verloren gegaan, maar toepassingsontwikkelaars willen dat misschien weten. Net als gedrag dat mogelijk anders is dan andere platforms.
- WsUtil genereert W3-waarschuwingen met minimale impact op gegenereerde code. wsutil.exe bijvoorbeeld een W3-waarschuwing genereert wanneer genormaliseerde tekenreeks verschilt van de oorspronkelijke tekenreeks.
- W4-waarschuwing lijkt meer op 'informatieve' waarschuwingen en WsUtil-probleem W4 in gevallen zoals het negeren van het documentatiekenmerk in WSDL.
- WX geeft aan dat de compiler de waarschuwing als fout behandelt. Wsutil genereert bijvoorbeeld een fout voor alle W1-waarschuwingen als /W:1 /WX is opgegeven.
/W:{N} geeft op welk waarschuwingsniveau moet worden gegenereerd. /W:1 betekent dat waarschuwingen op waarschuwingsniveau 1 moeten worden gegenereerd en dat waarschuwingen van waarschuwingsniveau 2 en lager moeten worden gemaskeerd en niet door het hulpprogramma moeten worden gegenereerd.
/fullname
Deze optie geeft aan dat WsUtil.exe volledige naam voor id's genereert om mogelijke naamconflicten te voorkomen. In voorbeeld.xsd hebben we bijvoorbeeld:
<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>
Standaard WsUtil.exe genereert:
typedef struct SimpleStruct {
int a;
int b;
};
Maar als de opdrachtregeloptie /fullname is opgegeven, genereert WsUtil.exe in plaats daarvan de volgende structuurdefinitie:
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Globalisering
Het hulpprogramma is taalneutraal en kan worden gelokaliseerd in verschillende talen. Alle foutberichten/console-uitvoer kunnen worden gelokaliseerd. De opdrachtregelopties blijven echter in het Engels.
Omgevingsvariabele
WsUtil.exe maakt geen gebruik van omgevingsvariabelen.
Platformonafhankelijk
Uitvoerbestanden van WsUtil.exe zijn platformonafhankelijk. Er is geen architectuurafhankelijke code gegenereerd in de stub; alles wat specifiek is voor architectuur wordt verzorgd door de C-compiler. De stub kan worden gebruikt op alle platforms die we ondersteunen.
Beschrijving voor wsutil.exe-uitvoer vindt u in WSDL-ondersteuning en Schema-ondersteuning onderdeel.