wcf - svcutil generate proxy from wsdl
Cómo usar un archivo WSDL para crear un servicio WCF(no hacer una llamada) (5)
Tengo un archivo WSDL antiguo y quiero crear un servidor basado en este archivo WSDL.
El WSDL se genera a partir de un ASMX (supongo, pero no estoy seguro).
Cómo puedo conseguir esto ?
pregunta original donde el OP pensó que necesitaba crear un cliente basado en el WSDL.
Con la herramienta "Agregar referencia de servicio" en Visual Studio, puede insertar la dirección como:
file: ///path/to/wsdl/file.wsdl
Y se cargará correctamente.
Hay buenos recursos por ahí si sabe qué buscar. Pruebe "Contrato primero" y WCF. o "WSDL primero" y WCF.
Aquí hay una selección:
- Descripción básica del desarrollo de WSDL-First con WCF y SvcUtil.exe .
- WSCF: un complemento gratuito para Visual Studio que permite el diseño Contract-First con WCF
- Artículo sobre cómo diseñar WSDL "apto para WCF"
Puede usar svcutil.exe para generar código de cliente. Esto incluiría la definición del contrato de servicio y cualquier contrato de datos y contratos de falla requeridos.
Luego, simplemente borre el código del cliente: clases que implementan los contratos de servicio. Luego deberá implementarlos usted mismo, en su servicio.
Usando svcutil, puede crear interfaces y clases (contratos de datos) desde el WSDL.
svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)
Esto creará un archivo llamado "your.cs" en C # (o "your.vb" en VB.NET) que contiene todos los elementos necesarios.
Ahora, debe crear una clase "MyService" que implementará la interfaz de servicio (IServiceInterface), o las diversas interfaces de servicio, y esta es su instancia de servidor.
Ahora, una clase en sí misma realmente no ayuda aún: tendrás que alojar el servicio en alguna parte. Necesita crear su propia instancia de ServiceHost que aloja el servicio, configurar puntos finales, etc., o puede alojar su servicio dentro de IIS.
Use svcutil.exe con el modificador /sc
para generar los contratos de WCF. Esto creará un archivo de código que puede agregar a su proyecto. Contendrá todas las interfaces y tipos de datos que necesita para crear su servicio. Cambie la ubicación de salida utilizando el modificador /o
, o puede encontrar el archivo en la carpeta donde ejecutó svcutil.exe. El idioma predeterminado es C # pero creo (nunca lo he intentado) debería poder cambiar esto usando /l:vb
.
svcutil /sc "WSDL file path"
Si su WSDL tiene algún archivo XSD compatible, páselos como argumentos después del WSDL.
svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"
Luego, cree una nueva clase que sea su servicio e implemente la interfaz de contrato que acaba de crear.