Ferramenta do Compilador de Serviço Web
Para dar suporte ao modelo de serviço, wsutil.exe gera o cabeçalho a ser usado no lado do cliente e do serviço. Ele gera o arquivo proxy C para o lado do cliente e o arquivo stub C para o lado do serviço, conforme necessário.
Para dar suporte a de serialização, o compilador gera cabeçalhos para descrições de elementos para definições de elemento global e todas as informações de definição de tipo no arquivo proxy a serem consumidas pelo mecanismo de serialização.
Uso
WsUtil.exe [comutadores de linha de comando [opções de opção]:]<nome de arquivo>
comutadores de linha de comando
Especifica WsUtil.exe opções do compilador. As opções podem aparecer em qualquer ordem. Traço ('-') e barra ('/') são tratados como o mesmo.
Lista de opções de linha de comando
- @filename Especifica que o arquivo de entrada deve ser tratado como um arquivo de resposta. Essa opção pode ser usada várias vezes, em qualquer lugar na lista de argumentos.
- /wsdl:<>de nome de arquivo:<optional_url> Especifica que o arquivo de entrada deve ser tratado como um arquivo wsdl. Várias entradas wsdl são permitidas e todos os arquivos wsdl especificados são processados. O optional_url especifica o local do qual os metadados foram recuperados. Se nenhuma optional_url for especificada, o Wsutil gerará uma URL exclusiva internamente. Consulte também de Suporte à Política.
- /xsd:<nome de arquivo> Especifica que o nome do arquivo de entrada deve ser tratado como um arquivo de esquema. Várias entradas xsd são permitidas e todos os arquivos de esquema especificados são processados.
- /wsp:<>de nome de arquivo:<optional_url> Especifica que o nome do arquivo de entrada deve ser tratado como metadados de política. Várias entradas wsp são permitidas e todos os arquivos de política especificados são processados. O optional_url especifica o local do qual os metadados foram recuperados. Se nenhuma optional_url for especificada, o Wsutil gerará uma URL exclusiva internamente. Os arquivos de política serão ignorados se o sinalizador /nopolicy for especificado. Consulte também de Suporte à Política.
- /nopolicy Desabilitar o processamento de política.
- /out:<dirname> Especifica o nome do diretório para arquivos de saída
- /noclient Não gere o stub do lado do cliente.
- /noservice Não gere o stub do lado do serviço.
- /prefixo:<cadeia de caracteres> cadeia de caracteres especificada prepend para todos os identificadores gerados.
- /fullname Prepend normalized filename to generated identifiers. Por padrão, somente o nome especificado no atributo "name" será usado para gerar identificadores para descrições relacionadas.
- /string:<WS_STRING>|<WCHAR*> Por padrão, o wsutil gera WCHAR* para o tipo xsd:string. O aplicativo pode usar esse sinalizador para substituir esse comportamento e gerar WS_STRING para xsd:type.
- /help Exibir mensagem de ajuda
- /? O mesmo que /help
- /W:x Opções de tratamento de erro. Pode ser W:0-W:4 | WX
- /nologo Não gere informações específicas do compilador na saída do console.
- /nostamp Não gere informações específicas do compilador em arquivos gerados.
Por padrão, o compilador gera os seguintes arquivos para o arquivo WSDL ou WSDL retornado da troca de metadados:
Proxy do cliente ({inputfilename}.c)
Stub de Serviço ({inputfilename}.c)
Arquivo de cabeçalho ({inputfilename}.h)
A raiz do nome do arquivo gerado é o nome do arquivo de entrada. As extensões de arquivo de entrada originais são preservadas para evitar a colisão de nome de arquivo para arquivos gerados. Por padrão, os stubs de serviço e cliente são gerados no mesmo arquivo, com o código do stub de serviço gerado após o código proxy.
Por padrão, o compilador gera os seguintes arquivos para um arquivo XSD para o esquema retornado da troca de metadados:
descrições de serialização ({inputfilename}.c)
Arquivo de cabeçalho ({inputfilename}.h)
A raiz do nome do arquivo é o nome do serviço.
Wsutil.exe gera uma seção "stamp" no início de todos os arquivos gerados, indicando a opção do compilador, a versão da ferramenta, a opção de linha de comando aplicável etc. Esta seção pode ser desativada usando a opção /nostamp para evitar ruído com a comparação de arquivos gerados.
O Wsutil não dá suporte ao download de metadados
O compilador Wsutil funciona somente do arquivo de metadados local. A ferramenta não dá suporte ao download de metadados da execução de serviços Web. Os desenvolvedores podem usar outras ferramentas de serviço Web compatíveis, como o svcutil, para baixar metadados no computador local, inspecionar os arquivos salvos e passar esses arquivos para wsutil.exe para compilação.
Suporte a vários arquivos de entrada/saída
O esquema WSDL e XML permite incluir/importar definições de outros espaços de nome especificados em outros locais/arquivos. O Wsutil dá suporte a várias entradas de esquema/wsdl/política e gera um conjunto de stub/cabeçalho para cada arquivo de entrada. O Wsutil não segue as instruções de inclusão e importação. Em vez disso, o aplicativo deve passar arquivos que contêm todos os namespaces necessários para o wsutil, de modo que a ferramenta possa resolver todas as dependências durante a compilação.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
o wsutil gera três conjuntos de arquivos de saída:
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
Formato de arquivo de saída
Para cada arquivo de saída, o wsutil gera definições externamente disponíveis no arquivo de cabeçalho. Além de definições de estrutura C e protótipos de função stub, todas as outras definições relacionadas aos serviços Web são encapsuladas em uma estrutura global nomeada com nome de arquivo normalizado.
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;
Observe que nem todos os campos são gerados para a estrutura global. Um campo de nível superior é gerado somente quando as definições relacionadas são especificadas no arquivo de entrada. Por exemplo, nenhum campo de mensagem, operações e contratos é gerado para arquivos xsd.
Níveis de aviso e nível de erro
Semelhante ao compilador C, WsUtil.exe dá suporte a quatro níveis de aviso e um nível de erro:
- WsUtil.exe gera erros com falhas irrecuperáveis, como arquivo wsdl inválido, opções de compilador inválidas etc.
- O WsUtil gera avisos W1 com sérios problemas recuperáveis. O compilador pode continuar, mas o usuário deve estar ciente do problema. Por exemplo, um aviso W1 será gerado se houver atributos sem suporte, como algumas facetas WSDL, no wsdl que não afetam a geração de código.
- O WsUtil gera avisos W2 com problemas menos graves. Não há nenhuma perda de funcionalidade, mas o desenvolvedor de aplicativos pode querer saber disso. Como comportamentos que podem ser diferentes de outras plataformas.
- O WsUtil gera avisos W3 com impacto mínimo no código gerado. Por exemplo, wsutil.exe gera um aviso W3 quando a cadeia de caracteres normalizada é diferente da cadeia de caracteres original.
- O aviso W4 é mais como avisos "informativos" e o problema W4 do WsUtil em casos como ignorar o atributo de documentação no WSDL.
- O WX indica que o compilador trata o aviso como erro. Por exemplo, o wsutil gerará um erro para todos os avisos W1 se /W:1 /WX for especificado.
/W:{N} especifique qual nível de mensagem de aviso deve ser gerado. /W:1 significa que avisos de nível de aviso 1 devem ser gerados e avisos de nível de aviso 2 e inferior devem ser mascarados e não gerados pela ferramenta.
/fullname
Essa opção indica que WsUtil.exe gera nome completo para identificadores para evitar possíveis colisões de nome. Por exemplo, em example.xsd temos:
<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>
Por padrão, WsUtil.exe gera:
typedef struct SimpleStruct {
int a;
int b;
};
Mas se a opção de linha de comando /fullname for especificada, WsUtil.exe gerará a seguinte definição de estrutura em vez disso:
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Globalização
A ferramenta é neutra em linguagem e pode ser localizada em idiomas diferentes. Todas as mensagens de erro/saída do console podem ser localizadas. No entanto, as opções de linha de comando permanecem em inglês.
Variável de ambiente
WsUtil.exe não usa variáveis de ambiente.
Independente da plataforma
Os arquivos de saída de WsUtil.exe são independentes da plataforma. Não há nenhum código dependente de arquitetura gerado no stub; qualquer arquitetura específica será cuidada pelo compilador C. O stub pode ser usado em todas as plataformas que oferecemos suporte.
A descrição da saída wsutil.exe pode ser encontrada em de suporte do WSDL e parte de suporte ao esquema.