Herramienta del compilador de servicios web
Para admitir el modelo de servicio, wsutil.exe genera el encabezado que se usará en el lado cliente y servicio. Genera el archivo de proxy C para el lado cliente y el archivo de código auxiliar de C para el lado del servicio, según sea necesario.
Para admitir la serialización, el compilador genera encabezados para descripciones de elementos para definiciones de elementos globales y toda la información de definición de tipo en el archivo proxy que va a consumir el motor de serialización.
Uso
WsUtil.exe [command-line-switches [switch-options]:]<filename>
modificadores de línea de comandos
Especifica WsUtil.exe opciones del compilador. Los modificadores pueden aparecer en cualquier orden. Los guiones ('-') y la barra diagonal ('/') se tratan como los mismos.
Lista de opciones de línea de comandos
- @filename Especifica que el archivo de entrada debe tratarse como un archivo de respuesta. Esta opción se puede usar varias veces, en cualquier lugar de la lista de argumentos.
- /wsdl:<filename>:<optional_url> Especifica que el archivo de entrada debe tratarse como un archivo wsdl. Se permiten varias entradas wsdl y se procesan todos los archivos wsdl especificados. El optional_url especifica la ubicación desde la que se recuperaron los metadatos. Si no se especifica ningún optional_url, Wsutil genera internamente una dirección URL única. Consulte también Compatibilidad con directivas.
- /xsd:<filename> Especifica que el nombre de archivo de entrada debe tratarse como un archivo de esquema. Se permiten varias entradas xsd y se procesan todos los archivos de esquema especificados.
- /wsp:filename>:<<optional_url> Especifica que el nombre de archivo de entrada debe tratarse como metadatos de directiva. Se permiten varias entradas wsp y se procesan todos los archivos de directiva especificados. El optional_url especifica la ubicación desde la que se recuperaron los metadatos. Si no se especifica ningún optional_url, Wsutil genera internamente una dirección URL única. Los archivos de directiva se omiten si se especifica la marca /nopolicy. Consulte también Compatibilidad con directivas.
- /nopolicy Deshabilite el procesamiento de directivas.
- /out:<dirname> Especifica el nombre del directorio para los archivos de salida.
- /noclient No genere el código auxiliar del lado cliente.
- /noservice No genere el código auxiliar del lado del servicio.
- /prefix:<string> Anteponer la cadena especificada a todos los identificadores generados.
- /fullname Anteponer el nombre de archivo normalizado a los identificadores generados. De forma predeterminada, solo se usará el nombre especificado en el atributo "name" para generar identificadores para descripciones relacionadas.
- /string:<WS_STRING>|< WCHAR*> De forma predeterminada, wsutil genera WCHAR* para el tipo xsd:string. La aplicación puede usar esta marca para sobrescribir ese comportamiento y genera WS_STRING para xsd:type en su lugar.
- /help Mostrar mensaje de ayuda
- /? Igual que /help
- /W:x Opciones de control de errores. Podría ser W:0-W:4 | WX
- /nologo No genere información específica del compilador en la salida de la consola.
- /nostamp No genere información específica del compilador sobre los archivos generados.
De forma predeterminada, el compilador genera los siguientes archivos para el archivo WSDL o WSDL devuelto desde el intercambio de metadatos:
Proxy de cliente ({inputfilename}.c)
Código auxiliar de servicio ({inputfilename}.c)
Archivo de encabezado ({inputfilename}.h)
La raíz del nombre de archivo generado es el nombre de archivo de entrada. Las extensiones de archivo de entrada originales se conservan para evitar la colisión de nombres de archivo para los archivos generados. De forma predeterminada, los códigos auxiliares de cliente y servicio se generan en el mismo archivo, con código auxiliar de servicio generado después del código proxy.
De forma predeterminada, el compilador genera los siguientes archivos para un archivo XSD para el esquema devuelto desde el intercambio de metadatos:
descripciones de serialización ({inputfilename}.c)
Archivo de encabezado ({inputfilename}.h)
La raíz del nombre de archivo es el nombre del servicio.
Wsutil.exe genera una sección de "stamp" al principio de todos los archivos generados, lo que indica la opción del compilador, la versión de la herramienta, la opción de línea de comandos aplicable, etc. Esta sección se puede desactivar mediante la opción /nostamp para evitar ruido con la comparación de archivos generados.
Wsutil no admite la descarga de metadatos
El compilador Wsutil solo funciona desde el archivo de metadatos local. La herramienta no admite la descarga de metadatos de servicios web en ejecución. Los desarrolladores pueden usar otras herramientas de servicios web compatibles, como svcutil, para descargar metadatos en la máquina local, inspeccionar los archivos guardados y pasar esos archivos a wsutil.exe para su compilación.
Compatibilidad con varios archivos de entrada y salida
El esquema WSDL y XML permite incluir o importar definiciones de otros espacios de nombres especificados en otras ubicaciones o archivos. Wsutil admite varias entradas de esquema,wsdl/policy y genera un conjunto de código auxiliar o encabezado para cada archivo de entrada. Wsutil no sigue las instrucciones include e import. En su lugar, la aplicación debe pasar archivos que contengan todos los espacios de nombres necesarios a wsutil para que la herramienta pueda resolver todas las dependencias durante la compilación.
WsUtil.exe /xsd:stockquote.xsd /wsdl:stockquote.wsdl /wsdl:stockquoteservice.wsdl
wsutil genera tres conjuntos de archivos de salida:
- stockquote.xsd.c stockquote.xsd.h
- stockquote.wsdl.c stockquote.wsdl.h
- stockquoteservice.wsdl.h stockquoteservices.wsdl.c
Formato del archivo de salida
Para cada archivo de salida, wsutil genera definiciones disponibles externamente en el archivo de encabezado. Aparte de las definiciones de estructura C y los prototipos de función de código auxiliar, todas las demás definiciones relacionadas con los servicios web se encapsulan en una estructura global denominada con el nombre de archivo 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 no todos los campos se generan para la estructura global. Solo se genera un campo de nivel superior cuando se especifican las definiciones relacionadas en el archivo de entrada. Por ejemplo, no se generan campos de mensaje, operaciones y contratos para archivos xsd.
Niveles de advertencia y nivel de error
De forma similar al compilador de C, WsUtil.exe admite cuatro niveles de advertencia y un nivel de error:
- WsUtil.exe genera errores con errores irrecuperables, como archivos wsdl no válidos, opciones del compilador no válidas, etc.
- WsUtil genera advertencias W1 con problemas graves recuperables. El compilador puede continuar, pero el usuario debe tener en cuenta el problema. Por ejemplo, se generará una advertencia W1 si hay atributos no admitidos, como algunas facetas WSDL, en wsdl que no afectan a la generación de código.
- WsUtil genera advertencias W2 con problemas menos graves. No se ha perdido la funcionalidad, pero es posible que el desarrollador de aplicaciones quiera saberlo. Al igual que los comportamientos que podrían ser diferentes de otras plataformas.
- WsUtil genera advertencias W3 con un impacto mínimo en el código generado. Por ejemplo, wsutil.exe genera una advertencia W3 cuando la cadena normalizada es diferente de la cadena original.
- La advertencia W4 es más similar a las advertencias "informativas" y WsUtil emite W4 en casos como omitir el atributo de documentación en WSDL.
- WX indica que el compilador trata la advertencia como error. Por ejemplo, wsutil genera un error para todas las advertencias de W1 si se especifica /W:1 /WX.
/W:{N} especifica qué nivel de mensaje de advertencia se debe generar. /W:1 significa que se deben generar advertencias de nivel de advertencia 1, y las advertencias del nivel de advertencia 2 y inferior deben enmascararse y no generarse por la herramienta.
/Fullname
Esta opción indica que WsUtil.exe genera un nombre completo para los identificadores para evitar posibles colisiones de nombres. Por ejemplo, en example.xsd tenemos:
<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>
De forma predeterminada, WsUtil.exe genera:
typedef struct SimpleStruct {
int a;
int b;
};
Pero si se especifica la opción de línea de comandos /fullname, WsUtil.exe genera la siguiente definición de estructura en su lugar:
typedef struct exmaple_xsd_SimpleStruct {
int a;
int b;
};
Globalización
La herramienta es neutra del idioma y se puede localizar en diferentes idiomas. Todos los mensajes de error o la salida de la consola se pueden localizar. Sin embargo, las opciones de la línea de comandos permanecen en inglés.
Variable de entorno
WsUtil.exe no usa ninguna variable de entorno.
Independiente de la plataforma
Los archivos de salida de WsUtil.exe son independientes de la plataforma. No hay ningún código dependiente de la arquitectura generado en el código auxiliar; cualquier arquitectura específica se ocupará del compilador de C. El código auxiliar se puede usar en todas las plataformas que se admiten.
Descripción de wsutil.exe salida se puede encontrar en la parte compatibilidad con WSDL y Compatibilidad con esquemas .