Webszolgáltatás-fordító eszköz
A szolgáltatásmodell támogatásához wsutil.exe generálja az ügyféloldalon és a szolgáltatásoldalon egyaránt használható fejlécet. C proxyfájlt hoz létre az ügyféloldalhoz, a szolgáltatásoldalhoz pedig C csonkfájlt, szükség szerint.
szerializálásitámogatásához a fordító fejléceket hoz létre a globális elemdefiníciók elemleírásaihoz, valamint a proxyfájlban lévő összes típusdefiníciós információt, amelyet a szerializálási motor használ fel.
Használat
WsUtil.exe [parancssori kapcsolók [kapcsolóbeállítások]:]<fájlnév>
parancssori kapcsolók
WsUtil.exe fordítóbeállításokat adja meg. A kapcsolók bármilyen sorrendben megjelenhetnek. A kötőjel ('-') és a perjel ('/') ugyanúgy lesz kezelve.
Parancssori beállítások listája
- @filename Megadja, hogy a bemeneti fájlt válaszfájlként kell kezelni. Ez a beállítás többször is használható az argumentumlistában szereplő bármely helyen.
- /wsdl:<fájlnév>:<optional_url> Azt határozza meg, hogy a bemeneti fájlt wsdl-fájlként kell kezelni. Több wsdl-bemenet is engedélyezett, és az összes megadott wsdl-fájl feldolgozásra kerül. A optional_url azt a helyet adja meg, ahonnan a metaadatokat lekérte. Ha nincs megadva optional_url, a Wsutil belsőleg létrehoz egy egyedi URL-címet. Lásd még házirendtámogatási.
- /xsd:<fájlnév> Megadja, hogy a bemeneti fájlnevet sémafájlként kell kezelni. Több xsd bemenet engedélyezett, és az összes megadott sémafájl feldolgozásra kerül.
- /wsp:<fájlnév>:<optional_url> Azt határozza meg, hogy a bemeneti fájlnevet szabályzat metaadataiként kell kezelni. Több wsp-bemenet is engedélyezett, és az összes megadott házirendfájl feldolgozásra kerül. A optional_url azt a helyet adja meg, ahonnan a metaadatokat lekérte. Ha nincs megadva optional_url, a Wsutil belsőleg létrehoz egy egyedi URL-címet. A szabályzatfájlok figyelmen kívül lesznek hagyva, ha a /nopolicy jelző meg van adva. Lásd még házirendtámogatási.
- /nopolicy Tiltsa le a szabályzatfeldolgozást.
- /out:<dirname> A kimeneti fájlok könyvtárnevét adja meg
- /noclient Ne hozza létre az ügyféloldali csonkot.
- /noservice Ne hozza létre a szolgáltatásoldali csonkot.
- /előtag:<sztring> Előre megadott sztring az összes generált azonosítóra.
- /fullname Prepend normalized filename to generated identifiers. A rendszer alapértelmezés szerint csak a "name" attribútumban megadott nevet használja a kapcsolódó leírások azonosítóinak létrehozásához.
- /string:<WS_STRING>|<WCHAR*> A wsutil alapértelmezés szerint WCHAR*-t hoz létre xsd:sztringtípushoz. Az alkalmazás ezzel a jelző használatával felülírhatja ezt a viselkedést, és ehelyett WS_STRING generál az xsd:type típushoz.
- /help Súgó megjelenítése üzenet
- /? Ugyanaz, mint a /help
- /W:x Hibakezelési beállítások. Lehet W:0-W:4 | WX
- /nologo Ne hozzon létre fordítóspecifikus információkat a konzol kimenetéről.
- /nostamp Ne hozzon létre fordítóspecifikus információkat a létrehozott fájlokról.
Alapértelmezés szerint a fordító a következő fájlokat hozza létre a WSDL-fájlhoz, vagy a metaadatok cseréjéből visszaadott WSDL-t:
Ügyfélproxy ({inputfilename}.c)
Service Stub ({inputfilename}.c)
Fejlécfájl ({inputfilename}.h)
A létrehozott fájlnév gyökere a bemeneti fájl neve. Az eredeti bemeneti fájlkiterjesztések megmaradnak, hogy megakadályozzák a fájlnév ütközését a létrehozott fájlok esetében. Alapértelmezés szerint az ügyfél- és szolgáltatáscsomópontok ugyanabban a fájlban jönnek létre, a proxykód után létrejövő szolgáltatáscsomópont-kóddal.
A fordító alapértelmezés szerint az alábbi fájlokat hozza létre egy XSD-fájlhoz a metaadatok cseréjéből visszaadott sémához:
szerializálási leírások ({inputfilename}.c)
Fejlécfájl ({inputfilename}.h)
A fájlnév gyökere a szolgáltatásnév.
Wsutil.exe létrehoz egy "stamp" szakaszt az összes létrehozott fájl elején, jelezve a fordítót, az eszköz verzióját, a parancssori lehetőséget stb. Ez a szakasz kikapcsolható a /nostamp beállítással, hogy elkerülje a zajt a létrehozott fájlok összehasonlításával.
A Wsutil nem támogatja a metaadatok letöltését
A Wsutil fordító csak helyi metaadatfájlból működik. Az eszköz nem támogatja a metaadatok letöltését a webszolgáltatások futtatásából. A fejlesztők más támogatott webszolgáltatási eszközökkel( például svcutil) is letölthetik a metaadatokat a helyi gépre, megvizsgálhatják a mentett fájlokat, és átadhatja ezeket a fájlokat a wsutil.exe fordításhoz.
Több bemeneti/kimeneti fájl támogatása
A WSDL- és XML-séma lehetővé teszi a definíciók más helyeken/fájlokban megadott más névterekből való importálását/importálását. A Wsutil több séma-/wsdl-/szabályzatbemenetet támogat, és minden bemeneti fájlhoz létrehoz egy csonkot/fejlécet. A Wsutil nem követi a belefoglalási és importálási utasításokat. Ehelyett az alkalmazásnak olyan fájlokat kell átadnia, amelyek tartalmazzák az összes szükséges névteret, hogy az eszköz feloldhassa az összes függőséget a fordítás során.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
A wsutil három kimeneti fájlt hoz létre:
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
Kimeneti fájlformátum
A wsutil minden kimeneti fájlhoz külsőleg elérhető definíciókat hoz létre a fejlécfájlban. A C struktúradefiníciókon és a csonkfüggvény-prototípusokon kívül a webszolgáltatásokhoz kapcsolódó összes többi definíció egy normalizált fájlnévvel elnevezett globális struktúrába van beágyazva.
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;
Figyelje meg, hogy nem minden mező jön létre a globális struktúrához. A felső szintű mező csak akkor jön létre, ha a kapcsolódó definíciók meg vannak adva a bemeneti fájlban. Például az xsd fájlokhoz nem jön létre üzenet, művelet és szerződés mező.
Figyelmeztetési szintek és hibaszint
A C fordítóhoz hasonlóan a WsUtil.exe négy figyelmeztetési szintet és egy hibaszintet támogat:
- WsUtil.exe helyreállíthatatlan hibákkal(például érvénytelen wsdl-fájl, érvénytelen fordítóbeállítások stb.) kapcsolatos hibákat generál.
- A WsUtil W1-figyelmeztetéseket hoz létre súlyos helyreállítható problémákkal. A fordító tovább tud lépni, de a felhasználónak tisztában kell lennie a problémával. A W1 figyelmeztetés például akkor jön létre, ha a WSDL egyes aspektusaihoz hasonló nem támogatott attribútumok vannak a wsdl-ben, amely nem befolyásolja a kódgenerálást.
- A WsUtil kevésbé súlyos problémákat okozó W2-figyelmeztetéseket hoz létre. A funkciók nem szűnnek meg, de az alkalmazásfejlesztők ezt tudni szeretnék. Hasonló viselkedések, amelyek eltérhetnek a többi platformtól.
- A WsUtil W3-figyelmeztetéseket hoz létre, és minimális hatással van a generált kódra. Például wsutil.exe W3-figyelmeztetést generál, ha a normalizált sztring eltér az eredeti sztringtől.
- A W4-figyelmeztetések inkább "tájékoztató" figyelmeztetések, és a WsUtil W4-es hibája olyan esetekben, mint például a WSDL dokumentációs attribútumának figyelmen kívül hagyása.
- A WX azt jelzi, hogy a fordító hibaként kezeli a figyelmeztetést. Például a wsutil hibát generál az összes W1 figyelmeztetésnél, ha a /W:1 /WX meg van adva.
A /W:{N} adja meg, hogy milyen szintű figyelmeztető üzenetet kell létrehozni. A /W:1 azt jelenti, hogy az 1. figyelmeztetési szintű figyelmeztetéseket kell létrehozni, a 2. és az alatti figyelmeztetéseket pedig maszkoltnak kell lenniük, és nem az eszköznek kell létrehoznia.
/fullname
Ez a beállítás azt jelzi, hogy WsUtil.exe az azonosítók teljes nevét generálja a lehetséges névütközések elkerülése érdekében. Például a example.xsd fájlban a következőkkel rendelkezünk:
<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>
Alapértelmezés szerint WsUtil.exe a következőt hozza létre:
typedef struct SimpleStruct {
int a;
int b;
};
Ha azonban a /fullname parancssori beállítás meg van adva, WsUtil.exe ehelyett a következő struktúradefiníciót hozza létre:
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Globalizáció
Az eszköz nyelvsemleges, és különböző nyelvekre honosítható. Az összes hibaüzenet/konzolkimenet honosítható. A parancssori beállítások azonban továbbra is angolul maradnak.
Környezeti változó
WsUtil.exe nem használ környezeti változókat.
Platformfüggetlen
A WsUtil.exe kimeneti fájljai platformfüggetlenek. A csonkban nem jön létre architektúrafüggő kód; a C fordító gondoskodik minden architektúra-specifikusról. A csonk minden támogatott platformon használható.
A wsutil.exe kimenet leírása WSDL támogatási és sématámogatási részben található.