¿Cómo crear una aplicación WCF sin usar la herramienta svcutil.exe?Creando aplicaciones WCF sin svcutil.exe?
Respuesta
¿Qué versión de Visual Studio estás usando?
VS2008 incorpora la funcionalidad de la herramienta svcutil. Para generar el proxy, haga clic en el Explorador de soluciones y seleccione 'Agregar referencia de servicio', luego puede ingresar la URL del servidor, darle un nombre al espacio de nombres y listo.
Es posible que desee ampliar su pregunta para proporcionar más detalles de lo que quiere lograr.
La herramienta svcutil.exe (y la funcionalidad equivalente en VS2008) se utilizan normalmente como esto: -
la que apunte a una descripción del servicio (un documento WSDL) y genera código del lado del cliente y de configuración para lo ayuda a crear un cliente que pueda comunicarse con los servicios descritos en el WSDL. Las herramientas también pueden hacer otras cosas, pero para esto se usan con más frecuencia. Supongo que es este uso de svcutil.exe al que te refieres.
Así que si tiene un servicio existente, tal vez escrito usando alguna otra pila (no WCF), usar svcutil hace su vida más fácil de lo que sería. Pero recuerda, el código y la configuración generados podrían haber sido escritos por ti. Normalmente, la configuración parece detallada porque la herramienta pone todos los valores predeterminados allí. Si escribió la configuración usted mismo probablemente podría omitir la mayor parte.
Si está escribiendo cliente y servicio usted mismo, usando WCF, no hay casi ninguna razón por la que usaría svcutil.exe. Cuando define su [ServiceContract] puede usar esa misma definición tanto en el cliente como en el servicio. Cuando crea su archivo de configuración de servicio, es un trabajo simple crear un archivo de configuración de cliente basado en él; la mayoría del contenido es el mismo.
Al final, no hay sustituto para entender lo que significa realmente todo el código/config generado por svcutil.exe. Entonces estarás en posición de trabajar sin eso.
Una forma de construir su cliente WCF sin usar svcutil.exe es utilizar ChannelFactory. Lo que tendría que hacer es construir la interfaz del servicio WCF en un ensamblaje separado de la implementación del servicio. A continuación, puede hacer referencia a ese conjunto de interfaz desde su cliente y su servicio.
Una vez que tenga la referencia, se puede utilizar el siguiente código para crear un cliente WCF:
var factory = new ChannelFactory<IMyWcfService>();
var wcfClient = factory.CreateChannel();
bool closedSuccessfully = false;
try
{
// Now you can make calls on the wcfClient object
((ICommunicationObject)wcfClient).Close();
closedSuccessfully = true;
}
finally
{
if (!closedSuccessfully)
{
((ICommunicationObject)wcfClient).Abort();
}
}
Nota de la rutina de limpieza. No puede usar una instrucción de uso de manera confiable para limpiar la variable wcfClient. Si lo hace, y el objeto está en estado de error, recibirá una excepción cuando el bloque using() salga del alcance y se ejecute Dispose() en la variable wcfClient. Ver Jesse Ezell's blog
- 1. ¿Alternativa a SvcUtil.exe?
- 2. Creando aplicaciones web con Ember.js
- 3. /sharedtypes equivalent for svcutil.exe?
- 4. ¿Dónde está svcutil.exe en Windows 7?
- 5. svcutil.exe - Cómo obtener WSDL
- 6. Svcutil.exe para .NET 4.0?
- 7. Android Creando aplicaciones en Android usando Android
- 8. Monotouch y WCF: diferencia de SVCUTIL.EXE y SLSVCUTIL.EXE y cómo evitar ChannelFactory genérico no compatible?
- 9. Errores/advertencias usando svcutil.exe para crear clases proxy para varios servicios WCF
- 10. Autenticación WCF SIN SSL
- 11. WCF sin HTTP.SYS
- 12. WCF sin NET 3.0
- 13. WCF - Autenticación de aplicaciones de terceros
- 14. ¿Puedo forzar a svcutil.exe a generar contratos de datos para un servicio WCF?
- 15. iOS instalando aplicaciones sin tienda de aplicaciones
- 16. MSSQL 2012 creando desencadenadores CLR para WCF falla
- 17. svcutil.exe - Proxy generado que no permite campos con nulos
- 18. ¿Es svcutil.exe un reemplazo para xsd.exe?
- 19. Rieles creando una tabla sin migración
- 20. Creando un archivo seguro sin hilos shared_ptr
- 21. Creando un servicio tranquilo WCF, problemas de simultaneidad
- 22. JQuery/WCF sin ASP.NET AJAX:
- 23. WCF FaultException sin enviar StackTrace
- 24. ¿Cómo crear proxy de cliente sin svcutil o agregar referencia de servicio en wcf?
- 25. Aplicaciones WCF/Cliente: ¿a dónde debe ir la lógica comercial?
- 26. Cómo registrar la solicitud sin procesar en el servicio WCF
- 27. Creando una gema de rubí para aplicaciones de Rails
- 28. Monotouch/WCF: cómo consumir el servicio wcf sin svcutil
- 29. JPA sin servidor de aplicaciones
- 30. ¿Cómo puedo establecer un espacio de nombres sin sobrescribir el nombre de configuración del servicio con SvcUtil.exe?
+1. Esto parece ser lo que estaba buscando. ¿ChannelFactory leerá todas las configuraciones fuera de App.config como lo haría una clase de proxy normal? –
Nota: La llamada a CreateChannel devolverá algo que implemente IMyWcfService. Esto no tendrá los métodos Cerrar y Abortar; debe llamarlos directamente de fábrica –
Sí, ChannelFactory leerá las configuraciones desde app.config. Creo que una de las sobrecargas le permite especificar qué configuración de cliente usar por nombre. También puede hacer todo en código pasando un enlace para que el canal lo use e ignore la configuración por completo. Con respecto al cierre del proxy del cliente (IMyWcfService), puede convertirlo a ICommunicationObject y llamar a Close() en ese objeto. –