Se necesita ayuda con la arquitectura WCF

Estamos planeando implementar nuestra nueva aplicación de software como se muestra a continuación.

¿Esta arquitectura parece adecuada para su propósito?

Elementos a tener en cuenta:

  • hay muchas pc
  • La pc tiene un cliente WCF ya que necesita subir datos a la base de datos periódicamente.
  • La PC tiene un servidor porque el usuario final en el servidor de terminal necesita poder interrogar a la PC para obtener información.
  • El servidor de terminales es la interfaz gráfica de usuario para que los usuarios puedan conectarse de forma remota a una PC específica para interrogar a la PC en busca de información.
  • Estamos usando basicHttpBinding a continuación

¿Qué más hemos considerado?

  • Hemos probado WCF NetPeerTcpBinding (es decir, P2P) pero no admite operaciones de solicitud y respuesta.

  • Hemos probado WCF Duplex, pero con los requisitos enumerados anteriormente en la sección de elementos a tener en cuenta, de todos modos terminaríamos con un cliente y un servidor en ambos extremos.

enter image description here

preguntado el 08 de marzo de 13 a las 21:03

No estoy de acuerdo con su segundo punto en "Lo que hemos considerado". La semana pasada probé WCF dúplex usando TCP en lugar de HTTP y funcionó perfectamente sin tener que abrir un server->client canal. De hecho, probé y conseguí que funcionara a través de Internet, a través de firewalls y NAT. -

Solo para confirmar en pocas palabras: desea enviar datos desde una aplicación cliente -> servidor para cargar datos. ¿También desea que el servidor le pida periódicamente al cliente que también cargue datos? -

@user1438082: Crear un cliente con dúplex y ejecutarlo en un contexto de servicio debería estar bien. al inicio, puede establecer una conexión que permita pasar/recibir. También puede colocar dispositivos de seguridad (en conexión interrumpida/sin Internet/etc.) y luego hacer que una interfaz de usuario del cliente se vincule con el servicio local. Esto también le evita crear una especie de tabla de búsqueda, ya que una vez suscrito, el servidor ya conoce el cliente potencial con el que comunicarse. -

Yo usaría comunicación dúplex msdn.microsoft.com/en-us/library/ms731184.aspx en lugar de Cliente/Servidor en ambos lados... ¿intentó utilizar devoluciones de llamada registradas/patrón de publicación-suscripción en lugar de un servidor que se ejecuta en el Agente del sistema? msdn.microsoft.com/en-us/magazine/cc163537.aspx -

¿Se está ejecutando toda esta configuración en una red separada, con el servidor de terminal como único punto de entrada? ¿Y qué tipo de información está interrogando el servidor de aplicaciones a la PC del agente? -

1 Respuestas

Bueno, me disculpo, pero básicamente no estoy de acuerdo con tu arquitectura.

  • WCF no está diseñado ni es adecuado para otra cosa que no sea una comunicación de solicitud-respuesta. Su capacidad de dúplex completo no permitirá que su lado del servidor emita comunicación a un cliente específico a menos que ese cliente ya haya emitido una conexión al servidor. Eso significa que para lograr una prestigiosa comunicación full dúplex en línea con todos sus clientes, todos sus clientes deben mantener un puerto abierto al servidor.

  • Tener un cliente y un servidor duales por PC para lograr un dúplex completo en línea es un paso adelante, ya que resolverá el problema de mantener un puerto abierto por cliente; sin embargo, tiene desventajas en términos de seguridad, ya que significa que la PC específica está abierta. para recibir múltiples solicitudes de conexión. Otro problema puede ocurrir con las reentradas mortales si no tienes cuidado. Entonces, básicamente, estará ahorrando 'puertos' a cambio de la mantenibilidad de la arquitectura y la adecuación a su solución.

Entonces, si tiene como objetivo una implementación de alrededor de 200-300 PC, su arquitectura se mantendrá, pero si tiene como objetivo una implementación más grande de miles de PC, no se mantendrá.

Respondido 07 ago 15, 23:08

se trata de 300 pc en un entorno de intranet. por lo tanto, supongo que está de acuerdo con nuestra arquitectura. - user1438082

sí, para 300 PC en un entorno de intranet funcionará bien. - GY

¿Qué sugeriría para un sistema que necesitaba escalarse hasta decir 5000 PC? - user1438082

Sugeriría un servidor tcp/ip que haga uso de IOCP (Puertos de finalización de entrada y salida) con un protocolo de nivel de aplicación. No es una solicitud-respuesta http, lo que significa que no es un servidor basado en WCF. - GY

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.