2010-01-23 21 views
7

Entiendo que este es un tema básico, pero nunca hice esto antes de comenzar desde wsdl.Dado el archivo de tipo wsdl + xds, ¿cómo creo un servicio web WCF de stub?

Se me está entregando un archivo wsdl y un montón de xsd con las definiciones de tipos. No tengo ni idea de si se crearon a partir de un servicio WCF (creo que sí debido al formato de división), pero sí necesito crear un servicio WCF que implemente el contrato.

Pregunta: ¿Cómo obtengo la interfaz de contrato de servicio?

Conozco wsdl.exe y svcutil.exe, pero no estoy muy familiarizado con qué es qué. Supongo que después de eso, todo lo que queda es implementar el contrato de servicio.

Cualquier ayuda apreciada!

P.S. Tenía otra pregunta sobre esto, pero traté de poner demasiadas cosas en la misma pregunta, así que vamos a mantenerlo simple por ahora.

Respuesta

13

tiene dos opciones:

Opción 1: Uso de la utilidadsvcutil.exe en la línea de comandos. Debe instalarse en su directorio C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin (o algo similar, dependiendo de la máquina y el sistema operativo que tenga)

Use svcutil -? para la lista de todos los muchos parámetros. Básicamente, en su forma más sencilla, utilice:

svcutil (name of your service).wsdl (name of your datafile).xsd 

y que va a crear un archivo # (name of your service).cs C, de acuerdo con el servicio y contratos de datos, y un ejemplo de archivo de configuración.

El archivo * .cs resultante (o * .vb, si desea VB.NET) contendrá el contrato de servicio (los métodos, resultantes del WSDL) y los contratos de datos (la parte de datos, procedente del XSD) para su servicio.

Opción 2: Uso del cuadro de diálogo "Agregar referencia de servicio" en Visual Studio (en el nodo "Referencias" en el Explorador de soluciones) y acaba de entrar en el nombre de archivo del archivo WSDL:

Add Service Reference dialog

Esto creará una referencia de servicio, que es básicamente la misma que la salida de la utilidad svcutil.exe, más algunas clases de ayuda y archivos para Visual Studio. Desafortunadamente, en ambos casos, la importación creará un archivo de configuración terriblemente sobrecargado, que es probablemente una de las razones por las que muchos programadores creen que WCF es terriblemente complicado, en realidad no lo es, pero estas dos herramientas de importación simplemente hacen un trabajo horrendo. en la creación de la configuración básica para ti ... ¡no dejes que eso te asuste!

Si la Referencia de servicio para el WSDL no convierte automáticamente todos los archivos XSD relevantes y necesarios, puede necesitar agregarlos a su proyecto y luego usar algo como XSD2Code para convertirlos a C# (o VB.NET) clases para ti

wsdl.exe es la utilidad obsoleta para convertir un archivo WSDL en un código auxiliar ASMX (ASP.NET webservice). No lo use más, use svcutil.exe o la Referencia de servicio de agregación de Visual Studio para WCF.

En cuanto a cómo crear una configuración WCF adecuada y mínima, consulte el programa de televisión # 122 de DotNet Rocks con Miguel Castro titulado Extreme WCF. Miguel presenta una excelente manera de estructurar sus proyectos WCF, y crear tanta configuración como realmente se necesita (y así se puede entender mucho mejor que el desastre generado por svcutil).

+0

gracias por ayudar! - sin conjeturas, ya había intentado con la forma de referencia de agregar, para mi sorpresa, no apareció ninguna interfaz, solo un montón de clases (según la especificación que obtuve con el wsdl). También, con respecto al archivo de configuración, ¿puedo descartarlo e iniciar un nuevo servicio implementando el contrato de servicio e incluyendo los tipos de datos? – JohnIdol

+0

@JohnIdol: seguro, puedes lanzar la configuración y luego recrear justo lo que necesitas. No es una mala idea :-) Normalmente, cuando agrega Ref. Servicio, debería obtener un grupo de clases, pero en uno de los archivos, debería haber una interfaz en alguna parte, en la que pueda basar su implementación de servicio. –

+0

@marc_s: Creo que fui con 'agregar referencia web' (usé el localhost) - y no 'agregar referencia de servicio' cuando probé la última vez. ¿Haría eso una diferencia en términos de que la interfaz no aparece? ;) – JohnIdol

Cuestiones relacionadas