Tengo una aplicación Cliente/Servidor escrita en Delphi. Básicamente, lo único que hace la aplicación es transferir flujos de datos xml entre una aplicación de servidor y clientes conectados. Actualmente estoy usando el componente Indy TIdTCPServer. Pero la aplicación del lado del servidor sigue fallando en algunas de mis entregas. Y ha sido extremadamente difícil de depurar. Así que me pregunto si hay alguna "arquitectura" que debería estar utilizando, que haga toda la gestión de conexiones tcp/ip y la agrupación de conexiones de bases de datos, lo que me permite concentrarme en la lógica comercial.¿Qué tecnología Delphi usar?
Aquí hay más detalles:
- los clientes deben mantener una conexión "persistente". Hay ocasiones en que el servidor debe notificar y enviar datos a todos los clientes conectados.
- clientes se están conectando desde computadoras portátiles usando tarjetas de aire inalámbricas. Entonces, las "caídas" de red son bastante comunes.
- Base de datos del servidor es SqlServer.
- Puede haber más de 100 computadoras conectadas simultáneamente a la vez. Cuando el servidor obtiene una nueva conexión (TCPServer.OnConnect) instanciando mi propio objeto que contiene su propia conexión de base de datos SqlServer. Cuando se eliminan las conexiones tcp, a su vez, libero estos objetos (y la conexión de base de datos asociada).
- La aplicación cliente tiene un TTimer incorporado. Ellos rutinariamente envían latidos al servidor. Y si "sueltan"/"pierden" su conexión, automáticamente establecen una nueva conexión una vez que la red está de vuelta.
¿Alguien tiene alguna sugerencia sobre la mejor aproximación/arquitectura aquí?
Supongo que el componente Indy funcionaría, pero al mismo tiempo siento que estoy "reinventando la rueda" con respecto a la gestión de las conexiones.
Alinear sus propios medios dedicando un porcentaje de tiempo a mantener su propio marco. Para ampliar su efectividad en Delphi, su idea de que tal vez debería evaluar las tecnologías/conjuntos de herramientas comerciales/componentes compatibles que ya están construidos y son compatibles, es excelente. Por supuesto, las herramientas de código abierto también podrían ser buenas. Pero si su tiempo es más escaso que su dinero, vaya con las soluciones comerciales. –
Absolutamente, exactamente a lo que me refiero. Solo quiero una arquitectura probada de C/S "3 niveles" que funcione. –