Pregunta WCF para principiantes - Servicios asincrónicos consumibles

votos
4

esta es una pregunta más se puede hacer en lugar de cómo se hace. Estoy buscando construir un servicio (nivel medio, .net, que brinde abstracción de datos y cierta lógica de negocios) que será utilizado por múltiples sistemas internos del cliente en diferentes plataformas. Por ejemplo, un cliente puede ser un sitio web, otro cliente, un código Java, otro cliente C #, etc.

Deseo proporcionar una API síncrona y asíncrona en mi servicio, por ejemplo, los métodos GetData, BeginGetData, EndGetData. También quiero que los clientes puedan registrarse para recibir notificaciones de nuevos datos que se agregan al sistema. En el pasado, implementé esto usando servicios web con un canal EMS de Tibco para las notificaciones.

Mi pregunta es: ¿Podría lograr los tres requisitos (sincronización, asincronización y publicación / publicación) al exponer un servicio WCF? ¿Podría este servicio ser consumido por clientes que no son WCF?

Disculpe la vaguedad de esta pregunta; puedo elaborarla según sea necesario.

Gracias por adelantado.

Publicado el 09/12/2008 a las 17:34
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
3

Los métodos son sincrónicos por defecto. Para hacer que se sincronicen, debe agregar este atributo [OperationContract (AsyncPattern = true)] y devolver un IAsynchResult, tal como lo haría si estuviera haciendo BeginIvoke () con winforms. (lea más aquí http://msdn.microsoft.com/en-us/library/ms734701.aspx )

Puede publicar / suscribirse con algo llamado Callback Contract (aunque no estoy seguro de implementar esto en otras plataformas) No tengo mucha experiencia con estos, pero no parecen muy compilados (puede leer más aquí http: //dotnetaddict.dotnetdevelopersjournal.com/wcf_alarmclock.htm )

Respondida el 09/12/2008 a las 19:25
fuente por usuario

votos
2

La configuración de las operaciones asíncronas en su servicio WCF se puede hacer como Ninja publicado estableciendo AsyncPattern = true o puede hacerse desde el lado del cliente al decirle a svcutil que genere los puntos finales asíncronos estableciendo el argumento de línea de comando correcto o marcando el "Generar "operaciones asincrónicas" en la versión GUI de svcutil. Generar una sincronización también generará también operaciones síncronas.

El problema con la opción asincrónica del cliente es que tendrá que duplicar el código en Java. Svcutil exporta código VB o C # según lo especifique, por lo que es muy probable que pueda traducir el código C # a Java sin demasiado trabajo.

Para Pub / Sub, las devoluciones de llamadas de los clientes son la forma en que desea operar. Los estoy usando y funcionan muy bien. En el nivel raíz, son .Net Remoting y usan eventos para pasar los datos al cliente (según entiendo). No puedo confirmar que esto se pueda usar en varias plataformas, pero debería ser con algo de trabajo.

Respondida el 10/12/2008 a las 16:47
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more