2011-09-24 26 views
5

¿Cuál es la forma recomendada de comunicarse entre un servicio y una aplicación de escritorio o página web?Comunicación entre el SERVICIO y la aplicación web/de escritorio

Quiero que el servicio haga todo el trabajo, pero admin/management/reporting es posible a través de web o escritorio. (Se escribirá en C# con .Net 4.0)

¿Se denomina pipes? enchufes? wcf? descanso ? jabón ? otro? ¿Cuál es la mejor práctica?

Cualquier información sería muy apreciada.

El servicio debe ser efectivamente en tiempo real, por lo que cualquier comunicación debe ser asincrónica.

Gracias Andrew

ACTUALIZA 1 - TIEMPO REAL El tráfico de red monitores de servicio como un servicio. El cliente podría ser local o podría ser remoto (usando ASP.NET/MVC o incluso Silverlight). El cliente no necesita datos en tiempo real, pero debe consultar para CONFIGURAR, Estadísticas, Registros, etc.

+1

Esto es demasiado vago. Depende de muchas cosas: donde se relacionan los clientes y el servidor, volumen de datos, requisitos de persistencia/confiabilidad, etc. – Joe

+0

Acabo de actualizar la pregunta ... ¿Es esto suficiente? – user296191

Respuesta

1

Si ambos extremos del código están controlados entonces, salvo requisitos específicos, optaría por WCF porque "es tan simple".

Ver Choosing a (WCF) Transport: es fácil pasar de HTTP a TCP a canalizaciones con nombre (ooo la la!):

una tubería con nombre es un objeto en el núcleo del sistema operativo Windows, como una sección de memoria compartida que los procesos pueden usar para la comunicación [leer: muy rápido]. Una tubería con nombre tiene un nombre y se puede usar para la comunicación unidireccional o dúplex entre procesos en una sola máquina.

Por supuesto, si se infringe la mismo requisito máquina, a continuación, HTTP/TCP puede ser utilizado en lugar dependiendo de la configuración de red, etc - a diferencia de código? Una configuración de configuración :)

Happy coding.

+0

Gracias ... Acabo de actualizar la pregunta ... ¿Todavía recomiendo WCF? – user296191

+0

Me quedaría con esto: parece que la comunicación entre el servicio y el cliente se ve comprometida por las solicitudes individuales (tal vez periódicas, pero con cargas útiles complejas relativamente grandes) pero no necesariamente una transmisión de datos en sí misma. Por supuesto, tenga en cuenta que WCF es una "solución centrada en Microsoft", que puede o no ser relevante. –

1

La pregunta se realiza como WCF o HTTP o TCP. WCF es una base de comunicaciones extremadamente flexible. Puede escribir su código una vez y decorar sus clases de datos y sobre la marcha mediante configuración y código entre HTTP JSON/POX, TCP, Binario, Binario sobre HTTP, serialización personalizada, etc. La pregunta sobre qué mecanismo de transporte elige es en función de las limitaciones de enrutamiento/firewall, clientes, etc. ... Personalmente, me gustan los transportes diagnosticables como HTTP y JSON/XML simplemente porque son universales, enrutables y diagnosticables (checkout fiddler2).

Según su descripción, parece que la parte más difícil del problema es la supervisión del tráfico de red en tiempo real que realiza el servicio. El canal entre el cliente y ese servicio parece ser la parte más simple del problema.

También a partir de la descripción, el cliente no necesita ser TIEMPO REAL y simplemente está consultando estadísticas, configuraciones y registros. Debido a que el cliente puede ser local o remoto (lo que implica remotamente posiblemente fuera de la intranet? Enrutamiento externo).

Debido a eso, desacoplaría el proceso de recopilación de estadísticas de red REALTIME de la parte de consulta, lo que lo hace asincrónico como usted mencionó. En ese punto, el servicio simplemente está abriendo un canal a los clientes para consultar estadísticas, configuraciones y registros simples ... elija el canal más enrutable y diagnosticable como HTP, REST JSON | XML. Si eso es un problema, mantenga intacto el código del servidor WCF y cambie la configuración de los enlaces WCF.

La pregunta es un poco abierta y ambigua, pero espero que ayude un poco.

Cuestiones relacionadas