2011-09-19 12 views
11

así que parece que tengo un par de las principales opciones al obtener el código proxy de servicio WCF en un proyecto en Visual Studio:¿Por qué debería usar referencias de servicio de Visual Studio sobre svcutil?

  1. Uso Visual Studio integrado de herramientas para Service References

  2. Uso un comando svcutil simple, algo así como svcutil http://[my endpoint] /namespace:[my namespace] /noconfig (ya que utilizo algunos enlaces bastante estándar en todos los proyectos), y arrastre el archivo resultante a mi proyecto (o actualice en su lugar).

Para que quede claro, opción 2 se siente como el mejor, aunque situado sin herramientas integrado para la actualización. Pero el cuadro de diálogo Referencia de servicio genera como un trillón de archivos. ¿Hay algún beneficio oscuro para las referencias de servicio de VS que me falta?

+3

Básicamente son la misma cosa. –

+1

Visual Studio básicamente llama a svcutil detrás de las escenas. Sin embargo, muchos programadores tienen miedo de abrir un símbolo del sistema y ejecutar una herramienta de línea de comandos, por eso Visual Studio tiene el diálogo 'Agregar referencia de servicio' ... –

+0

Sí, sabía que eran los mismos bajo las sábanas, pero es ¿usar algún/asombroso interruptor para generar todos esos XSD y otros archivos para algún beneficio? –

Respuesta

14

Si también el propietario del servicio, yo diría que no lo hacen usa cualquiera de los dos. En su lugar, divida sus contratos, entidades y proxies de clientes en diferentes conjuntos que puede usar tanto en el servicio como en el cliente.

Algo así como se describe en WCF The Manual Way... The Right Way.

+0

¡Estoy totalmente de acuerdo! –

+0

He escuchado esto en muchos lugares, y creo que incluso está en un doc de iDesign en algún lugar (y tal vez sea una pregunta aparte), pero ¿no necesito una estrategia de administración pesada para descargar y actualizar esos ensamblajes? He hecho svn: external y he pensado en NuGet para esto, pero aparte de ease-of-update (y svn: externals es casi demasiado fácil introducir código en una compilación de forma inesperada), no estoy seguro de lo que compro aparte de un poco más de código DRY. –

+1

Si posee todo el código, esto no debería ser un problema. No tiene que hacer referencia a ensambles; puede hacer referencia a los mismos proyectos a los que hace referencia el servicio. Cada vez que construyes, tu cliente también se actualizará. –

21

La misma razón por la que construye un proyecto .net con VS y no llama al compilador manualmente desde la línea de comandos. El I de IDE significa Integrated, hace las cosas por ti, por lo que no tienes que hacer esas cosas manualmente desde muchos lugares y procedimientos separados.

por lo general hay una manera de hacer muchas de esas cosas con la mano o con un editor de texto y símbolo del sistema, pero le permite ser productivo :-)

+2

Estoy de acuerdo en UI tooling v. Command line. Entonces, ¿estás diciendo que la usabilidad es el único beneficio? –

Cuestiones relacionadas