Strumento del compilatore di servizi Web
Per supportare il modello di servizio, wsutil.exe genera l'intestazione da usare sia sul lato client che sul lato servizio. Genera il file proxy C per il lato client e il file stub C per il lato servizio, in base alle esigenze.
Per supportare serializzazione, il compilatore genera intestazioni per le descrizioni degli elementi per le definizioni di elementi globali e tutte le informazioni di definizione dei tipi nel file proxy da utilizzare dal motore di serializzazione.
Uso
WsUtil.exe [opzioni della riga di comando [switch-options]:]<nome file>
opzioni della riga di comando
Specifica WsUtil.exe opzioni del compilatore. Le opzioni possono essere visualizzate in qualsiasi ordine. Il trattino ('-') e la barra ('/') vengono considerati come uguali.
Elenco delle opzioni della riga di comando
- @filename Specifica che il file di input deve essere considerato come file di risposta. Questa opzione può essere usata più volte, in qualsiasi posizione dell'elenco di argomenti.
- /wsdl:<nome file>:<optional_url> Specifica che il file di input deve essere considerato come file wsdl. Sono consentiti più input wsdl e vengono elaborati tutti i file wsdl specificati. Il optional_url specifica il percorso da cui sono stati recuperati i metadati. Se non viene specificato alcun optional_url, Wsutil genera un URL univoco internamente. Vedere anche supporto dei criteri.
- /xsd:<nome file> Specifica che il nome file di input deve essere considerato come file di schema. Sono consentiti più input xsd e vengono elaborati tutti i file di schema specificati.
- /wsp:<nome file>:<optional_url> Specifica che il nome file di input deve essere considerato come metadati dei criteri. Sono consentiti più input wsp e vengono elaborati tutti i file di criteri specificati. Il optional_url specifica il percorso da cui sono stati recuperati i metadati. Se non viene specificato alcun optional_url, Wsutil genera un URL univoco internamente. I file dei criteri vengono ignorati se viene specificato il flag /nopolicy. Vedere anche supporto dei criteri.
- /nopolicy Disabilita l'elaborazione dei criteri.
- /out:<dirname> specifica il nome della directory per i file di output
- /noclient Non generare lo stub sul lato client.
- /noservice Non generare lo stub sul lato servizio.
- /prefix:<stringa> Anteporre la stringa specificata a tutti gli identificatori generati.
- /fullname Prepend normalized filename to generated identifiers( /fullname Prepend normalized filename to generated identifiers. Per impostazione predefinita, verrà usato solo il nome specificato nell'attributo "name" per generare gli identificatori per le descrizioni correlate.
- /string:<WS_STRING>|<WCHAR*> Per impostazione predefinita, wsutil genera WCHAR* per il tipo xsd:string. L'applicazione può usare questo flag per sovrascrivere tale comportamento e genera WS_STRING per xsd:type.
- /help Visualizza il messaggio della Guida
- /? Uguale a /help
- Opzioni di gestione degli errori /W:x. Potrebbe essere W:0-W:4 | WX
- /nologo Non generare informazioni specifiche del compilatore sull'output della console.
- /nostamp Non generare informazioni specifiche del compilatore sui file generati.
Per impostazione predefinita, il compilatore genera i file seguenti per il file WSDL o WSDL restituiti dallo scambio di metadati:
Proxy client ({inputfilename}.c)
Stub del servizio ({inputfilename}.c)
File di intestazione ({inputfilename}.h)
La radice del nome file generato è il nome del file di input. Le estensioni di file di input originali vengono mantenute per evitare conflitti di nome file per i file generati. Per impostazione predefinita, gli stub client e di servizio vengono generati nello stesso file, con il codice stub del servizio generato dopo il codice proxy.
Per impostazione predefinita, il compilatore genera i file seguenti per un file XSD per lo schema restituito dallo scambio di metadati:
descrizioni di serializzazione ({inputfilename}.c)
File di intestazione ({inputfilename}.h)
La radice del nome file è il nome del servizio.
Wsutil.exe genera una sezione "stamp" all'inizio di tutti i file generati, che indica l'opzione del compilatore, la versione dello strumento, l'opzione della riga di comando applicabile e così via. Questa sezione può essere disattivata usando l'opzione /nostamp per evitare problemi con il confronto dei file generati.
Wsutil non supporta il download dei metadati
Il compilatore Wsutil funziona solo dal file di metadati locale. Lo strumento non supporta il download dei metadati dall'esecuzione di servizi Web. Gli sviluppatori possono usare altri strumenti di servizi Web supportati, ad esempio svcutil, per scaricare i metadati nel computer locale, esaminare i file salvati e passare tali file a wsutil.exe per la compilazione.
Supporto di più file di input/output
WSDL e XML Schema consentono di includere/importare definizioni da altri spazi dei nomi specificati in altri percorsi/file. Wsutil supporta più input di schema/wsdl/policy e genera un set di stub/intestazioni per ogni file di input. Wsutil non segue le istruzioni include e import. Al contrario, l'applicazione deve passare file contenenti tutti gli spazi dei nomi necessari a wsutil in modo che lo strumento possa risolvere tutte le dipendenze durante la compilazione.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
wsutil genera tre set di file di output:
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
Formato del file di output
Per ogni file di output, wsutil genera definizioni disponibili esternamente nel file di intestazione. Oltre alle definizioni di struttura C e ai prototipi di funzione stub, tutte le altre definizioni correlate ai servizi Web vengono incapsulate in una struttura globale denominata con nome file normalizzato.
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;
Si noti che non tutti i campi vengono generati per la struttura globale. Un campo di primo livello viene generato solo quando le definizioni correlate vengono specificate nel file di input. Ad esempio, per i file xsd non vengono generati campi di messaggio, operazioni e contratti.
Livelli di avviso e livello di errore
Analogamente al compilatore C, WsUtil.exe supporta quattro livelli di avviso e un livello di errore:
- WsUtil.exe genera errori con errori irreversibili, ad esempio file wsdl non validi, opzioni del compilatore non valide e così via.
- WsUtil genera avvisi W1 con gravi problemi ripristinabili. Il compilatore può continuare, ma l'utente deve essere a conoscenza del problema. Ad esempio, verrà generato un avviso W1 se sono presenti attributi non supportati, ad esempio alcuni facet WSDL, in wsdl che non influiscono sulla generazione del codice.
- WsUtil genera avvisi W2 con problemi meno gravi. Non c'è alcuna perdita di funzionalità, ma lo sviluppatore di applicazioni potrebbe voler sapere che. Come i comportamenti che potrebbero essere diversi da altre piattaforme.
- WsUtil genera avvisi W3 con un impatto minimo sul codice generato. Ad esempio, wsutil.exe genera un avviso W3 quando la stringa normalizzata è diversa dalla stringa originale.
- L'avviso W4 è più simile agli avvisi "informativi" e WsUtil genera W4 in casi come ignorare l'attributo della documentazione in WSDL.
- WX indica che il compilatore considera l'avviso come errore. Ad esempio, wsutil genera l'errore per tutti gli avvisi W1 se è specificato /W:1 /WX.
/W:{N} specificare il livello di messaggio di avviso da generare. /W:1 indica che gli avvisi di livello 1 devono essere generati e gli avvisi del livello di avviso 2 e inferiore devono essere mascherati e non generati dallo strumento.
/fullname
Questa opzione indica che WsUtil.exe genera il nome completo per gli identificatori per evitare potenziali conflitti di nomi. Ad esempio, in example.xsd abbiamo:
<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>
Per impostazione predefinita, WsUtil.exe genera:
typedef struct SimpleStruct {
int a;
int b;
};
Tuttavia, se si specifica l'opzione della riga di comando /fullname, WsUtil.exe genera invece la definizione di struttura seguente:
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Globalizzazione
Lo strumento è indipendente dalla lingua e può essere localizzato in lingue diverse. Tutti i messaggi di errore/output della console possono essere localizzati. Tuttavia, le opzioni della riga di comando rimangono in inglese.
Variabile di ambiente
WsUtil.exe non usa variabili di ambiente.
Indipendente dalla piattaforma
I file di output di WsUtil.exe sono indipendenti dalla piattaforma. Non è presente alcun codice dipendente dall'architettura generato nello stub; qualsiasi architettura specifica verrà presa in considerazione dal compilatore C. Lo stub può essere usato in tutte le piattaforme supportate.
La descrizione per wsutil.exe output è disponibile in supporto WSDL e schema parte.