Condividi tramite


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 la serializzazione, il compilatore genera intestazioni per le descrizioni degli elementi per le definizioni di elementi globali e tutte le informazioni sulla definizione dei tipi nel file proxy da utilizzare dal motore di serializzazione.

Utilizzo

WsUtil.exe [command-line-switch [switch-options]:]<nome del file>

commutatori da riga di comando

Specifica le opzioni del compilatore WsUtil.exe. Le opzioni possono essere visualizzate in qualsiasi ordine. Il trattino ('-') e la barra ('/') vengono trattati come lo stesso.

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 nell'elenco degli argomenti.
  • /wsdl:filename>:<<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 la posizione in cui sono stati recuperati i metadati. Se non viene specificato alcun optional_url, Wsutil genera un URL univoco internamente. Vedere anche Supporto criteri.
  • /xsd:<filename> Specifica che il nome file di input deve essere considerato come file di schema. Sono consentiti più input xsd e tutti i file di schema specificati vengono elaborati.
  • /wsp:filename>:<<optional_url> Specifica che il nome del 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 la posizione in cui sono stati recuperati i metadati. Se non viene specificato alcun optional_url, Wsutil genera un URL univoco internamente. I file di criteri vengono ignorati se viene specificato il flag /nopolicy. Vedere anche Supporto criteri.
  • /nopolicy Disabilita l'elaborazione dei criteri.
  • /out:<dirname> Specifica il nome della directory per i file di output
  • /noclient Non generare lo stub lato client.
  • /noservice Non generare lo stub lato servizio.
  • /prefix:<string> Prepend stringa specificata a tutti gli identificatori generati.
  • /fullname Prepend Nome file normalizzato per gli identificatori generati. Per impostazione predefinita, verrà usato solo il nome specificato nell'attributo "name" per generare 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
  • /W:x Opzioni di gestione degli errori. 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 impedire la collisione tra 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 il rumore 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 da servizi Web in esecuzione. Gli sviluppatori possono usare altri strumenti di servizio 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 consente di includere/importare definizioni da altri spazi dei nomi specificati in altri percorsi/file. Wsutil supporta più input di schema/wsdl/criteri e genera un set di stub/intestazione per ogni file di input. Wsutil non segue le istruzioni di inclusione e importazione. L'applicazione deve invece passare file contenenti tutti gli spazi dei nomi necessari per 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

Tipi di 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 funzioni 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, nessun messaggio, operazioni e campi contratti vengono generati per i file xsd.

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 non recuperabili, 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 di codice.
  • WsUtil genera avvisi W2 con problemi meno gravi. Non esiste 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 problema W4 nei casi come l'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 quale livello di messaggio di avviso deve essere generato. /W:1 indica che gli avvisi di livello 1 devono essere generati e gli avvisi del livello di avviso 2 e seguenti 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 collisioni di nomi. Ad esempio, in esempio.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;
};

Se tuttavia viene specificata 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 esiste 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 parte di supporto dello schema .