Megosztás a következőn keresztül:


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