Verktyg för webbtjänstkompilerare
För att stödja tjänstmodellen genererar wsutil.exe huvudet som ska användas på både klient- och tjänstsidan. Den genererar C-proxyfil för klientsidan och C stub-fil för tjänstsidan efter behov.
För att stödja serialiseringgenererar kompilatorn rubriker för elementbeskrivningar för globala elementdefinitioner och all typdefinitionsinformation i proxyfilen som ska användas av serialiseringsmotorn.
Användning
WsUtil.exe [kommandoradsväxlar [switch-options]:]<filnamn>
kommandoradsväxlar
Anger WsUtil.exe kompilatoralternativ. Växlar kan visas i valfri ordning. Streck (-) och snedstreck ('/') behandlas som samma.
Lista över kommandoradsalternativ
- @filename Anger att indatafilen ska behandlas som en svarsfil. Det här alternativet kan användas flera gånger, på valfri plats i argumentlistan.
- /wsdl:<filnamn>:<optional_url> Anger att indatafilen ska behandlas som en wsdl-fil. Flera wsdl-indata tillåts och alla angivna wsdl-filer bearbetas. Optional_url anger platsen där metadata hämtades från. Om ingen optional_url anges genererar Wsutil en unik URL internt. Se även Policy Support.
- /xsd:<filnamn> Anger att indatafilnamnet ska behandlas som en schemafil. Flera xsd-indata tillåts och alla angivna schemafiler bearbetas.
- /wsp:<filnamn>:<optional_url> Anger att indatafilnamnet ska behandlas som principmetadata. Flera wsp-indata tillåts och alla angivna principfiler bearbetas. Optional_url anger platsen där metadata hämtades från. Om ingen optional_url anges genererar Wsutil en unik URL internt. Principfiler ignoreras om flaggan /nopolicy har angetts. Se även Policy Support.
- /nopolicy Inaktivera principbearbetning.
- /out:<dirname> Anger katalognamn för utdatafiler
- /noclient Generera inte stub på klientsidan.
- /noservice Generera inte stub på tjänstsidan.
- /prefix:<sträng> Prepend angiven sträng till alla genererade identifierare.
- /fullname Prepend normaliserade filnamnet till genererade identifierare. Som standard används endast det namn som anges i attributet "name" för att generera identifierare för relaterade beskrivningar.
- /string:<WS_STRING>|<WCHAR*> Som standard genererar wsutil WCHAR* för xsd:strängtyp. Programmet kan använda den här flaggan för att skriva över det beteendet och genererar WS_STRING för xsd:type i stället.
- /help Visa hjälpmeddelande
- /? Samma som /help
- /W:x Felhanteringsalternativ. Kan vara W:0-W:4 | WX
- /nologo Generera inte kompilatorspecifik information om konsolutdata.
- /nostamp Generera inte kompilatorspecifik information om genererade filer.
Kompilatorn genererar som standard följande filer för WSDL-filen eller WSDL som returneras från metadatautbyte:
Klientproxy ({inputfilename}.c)
Service Stub ({inputfilename}.c)
Rubrikfil ({inputfilename}.h)
Roten för det genererade filnamnet är namnet på indatafilen. Ursprungliga filnamnstillägg för indata bevaras för att förhindra filnamnskollision för genererade filer. Som standard genereras klient- och tjänststubbar i samma fil, med stub-kod för tjänsten genererad efter proxykoden.
Kompilatorn genererar som standard följande filer för en XSD-fil för schema som returneras från metadatautbyte:
serialiseringsbeskrivningar ({inputfilename}.c)
Rubrikfil ({inputfilename}.h)
Roten för filnamnet är tjänstnamnet.
Wsutil.exe genererar ett "stämpel"-avsnitt i början av alla genererade filer, som anger kompilatoralternativet, verktygsversionen, kommandoradsalternativet som är tillämpligt osv. Det här avsnittet kan stängas av med alternativet /nostamp för att undvika brus vid jämförelse av genererade filer.
Wsutil stöder inte nedladdning av metadata
Wsutil-kompilatorn fungerar endast från lokala metadatafiler. Verktyget stöder inte nedladdning av metadata från webbtjänster som körs. Utvecklare kan använda andra webbtjänstverktyg som stöds, till exempel svcutil, för att ladda ned metadata till den lokala datorn, inspektera de sparade filerna och skicka filerna till wsutil.exe för kompilering.
Stöd för flera indata-/utdatafiler
WSDL- och XML-scheman tillåter att definitioner inkluderas/importeras från andra namnutrymmen som anges i andra platser/filer. Wsutil stöder flera indata för schema/wsdl/policy och genererar en uppsättning stub/header för varje indatafiler. Wsutil följer inte igenom include- och import-uttrycken. I stället bör programmet skicka in filer som innehåller alla nödvändiga namnområden till wsutil så att verktyget kan lösa alla beroenden under kompilering.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
wsutil genererar tre uppsättningar utdatafiler:
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
Utdatafilformat
För varje utdatafil genererar wsutil externt tillgängliga definitioner i huvudfilen. Förutom C-strukturdefinitioner och stub-funktionsprototyper kapslas alla andra webbtjänstrelaterade definitioner in i en global struktur med namnet med normaliserat filnamn.
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;
Observera att inte alla fält genereras för den globala strukturen. Ett fält på den översta nivån genereras endast när de relaterade definitionerna anges i indatafilen. Till exempel genereras inga fält för meddelande, åtgärder och kontrakt för xsd-filer.
Varningsnivåer och felnivå
På samma sätt som C-kompilatorn stöder WsUtil.exe fyra varningsnivåer och en felnivå:
- WsUtil.exe genererar fel med oåterkalleliga fel, till exempel ogiltig wsdl-fil, ogiltiga kompilatoralternativ osv.
- WsUtil genererar W1-varningar med allvarliga återställningsbara problem. Kompilatorn kan fortsätta, men användaren bör vara medveten om problemet. En W1-varning genereras till exempel om det finns attribut som inte stöds, till exempel vissa WSDL-fasetter, i wsdl som inte påverkar kodgenereringen.
- WsUtil genererar W2-varningar med mindre allvarliga problem. Det finns inga förlorade funktioner, men programutvecklaren kanske vill veta det. Som beteenden som kan skilja sig från andra plattformar.
- WsUtil genererar W3-varningar med minimal påverkan på genererad kod. Till exempel genererar wsutil.exe en W3-varning när normaliserad sträng skiljer sig från den ursprungliga strängen.
- W4-varningen är mer som "informationsvarningar" och WsUtil-problem med W4 i fall som att ignorera dokumentationsattribut i WSDL.
- WX anger att kompilatorn behandlar varningen som ett fel. Till exempel genererar wsutil fel för alla W1-varningar om /W:1 /WX har angetts.
/W:{N} anger vilken varningsnivå som ska genereras. /W:1 innebär att varningar på varningsnivå 1 ska genereras och varningar på varningsnivå 2 och lägre ska maskeras och inte genereras av verktyget.
/fullname
Det här alternativet anger att WsUtil.exe genererar fullständigt namn för identifierare för att undvika potentiell namnkollision. I exempel.xsd har vi till exempel:
<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>
Som standard genererar WsUtil.exe:
typedef struct SimpleStruct {
int a;
int b;
};
Men om kommandoradsalternativet /fullname anges genererar WsUtil.exe följande strukturdefinition i stället:
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Globalisering
Verktyget är språkneutralt och kan lokaliseras till olika språk. Alla felmeddelanden/konsolutdata kan lokaliseras. Kommandoradsalternativen finns dock kvar på engelska.
Miljövariabel
WsUtil.exe använder inga miljövariabler.
Plattformsoberoende
Utdatafiler från WsUtil.exe är plattformsoberoende. Det finns ingen arkitekturberoende kod som genereras i stub; allt som är specifikt för arkitekturen tas hand om av C-kompilatorn. Stub kan användas på alla plattformar som vi stöder.
Beskrivning av wsutil.exe utdata finns i WSDL-stöd för och schemastöd del.