Ferramenta 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 à serialização, o compilador gera cabeçalhos para descrições de elemento 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 [switch-options]:]<filename>
opções 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 iguais.
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:<filename>:<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 Suporte a políticas.
- /xsd:<filename> 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:<filename>:<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 Suporte a políticas.
- /nopolicy Desabilitar 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.
- /prefix:<string> Prepend cadeia de caracteres especificada para todos os identificadores gerados.
- /fullname Prepend nome de arquivo normalizado para identificadores gerados. 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 gera 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 de 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 cliente e serviço são gerados no mesmo arquivo, com o código 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ídos com a comparação de arquivos gerados.
O Wsutil não dá suporte ao download de metadados
O compilador Wsutil funciona somente no 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 com suporte, como svcutil, para baixar metadados para o 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 acompanha as instruções include e import. Em vez disso, o aplicativo deve passar arquivos que contenham todos os namespaces necessários para wsutil, de modo que a ferramenta possa resolve todas as dependências durante a compilação.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
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 do 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 a serviços Web são encapsuladas em uma estrutura global chamada 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á 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 WsUtil W4 em casos como ignorar o atributo de documentação no WSDL.
- WX indica que o compilador trata o aviso como erro. Por exemplo, 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 a fim de evitar uma possível colisão de nomes. 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:
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Globalização
A ferramenta é neutra em termos de 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 nenhuma variável de ambiente.
Independente de 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 às quais damos suporte.
A descrição de wsutil.exe saída pode ser encontrada na parte de suporte do WSDL e suporte ao esquema .