delphi - niveles - arquitectura de aplicaciones
Arquitectura para aplicaciones de 3 niveles con D7 (3)
Tengo experiencia con la tecnología COM + hasta el momento para crear aplicaciones de 3 niveles. Esta es una tecnología enorme y avanzada que admite muchos conceptos interesantes. Simplemente funciona como debería para las aplicaciones que operan en LAN.
Ahora planeo construir un sistema de 3 niveles, aún basado en D7. La diferencia es que debería funcionar en internet. Los clientes estarán dispersos por todo el mundo. De mi experiencia en tal situación, no confiaría en com +. Com + básicamente necesita una conexión estable, no es fácil configurar el servidor de firewall que tiene que abrir una amplia gama de puertos (incluso si lo reduce).
Entonces la pregunta es. ¿Qué arquitectura (servicios web, servicios u otra cosa) funciona para usted en producción? Creo que me gustaría tener el servicio que escucha en un puerto tcp. En el que podría guardar los parámetros del cliente de sesión disponibles para la sesión abierta. También algún tipo de encriptación integrada sería una ventaja.
¡Gracias por la ayuda!
Los WebServices SOAP o REST son ampliamente compatibles y (casi siempre, SOAP casi siempre, REST siempre) basados en HTTP, por lo que son amigables con el firewall y podrían cifrarse mediante SSL. Delphi 7 hace SOAP, pero hacer tu propio REST no es tan difícil tampoco.
La otra opción sería una biblioteca de terceros, como Data Abstract, que podría tener una mejor compatibilidad inmediata para Multi-Tier, pero puede que se encerre más en una tecnología.
Dicho esto, no tengo mucha experiencia en producción.
Puede echar un vistazo a nuestro marco ORM, que implementa una arquitectura de servidor de n-Tier sobre varios protocolos, incluido HTTP / 1.1.
Por lo tanto, podría ayudarlo a crear aplicaciones Cliente-Servidor a través de Internet, utilizando un enfoque ORM y una arquitectura n-Tier / SOA.
La SOA (arquitectura orientada a servicios) se puede utilizar en un enfoque ORM cliente-servidor :
- El ORM se utilizará tanto para la capa de Datos como para la capa de lógica de negocios: puede usar objetos para mapear su base de datos, y también crear sus propios objetos comerciales, que serán expuestos en un enfoque RESTful a través de Internet, a través de JSON ;
- El filtrado y la validación de datos se realiza a través de ORM en el nivel de lógica de negocios ;
- La interfaz de usuario usará algunos objetos en el lado del cliente (hay unidades dedicadas para la generación de la interfaz de usuario Delphi, pero también podría escribir una aplicación AJAX, utilizando JSON para su comunicación);
- Puede usar propiedades de alto nivel como matrices dinámicas en sus objetos , por lo que se trata de una arquitectura lista para "fragmentar" o "no compartir nada" ;
- Nuevo servidor HTTP que usa el servidor http.sys kernel-mode rápido y la compresión zip / SynLZ, que funcionará en Internet (con https si es necesario);
- Asegure la autenticación RESTful a través de sesiones de luz por usuario y firma por consulta;
- Cliente HTTP Delphi optimizado, utilizando WinHTTP (más rápido que WinINet) ;
- Muchas otras características, incluyendo cualquier otro back-end DB (Oracle / OleDB / MSSQL nativo ...) en el (muy) futuro cercano.
Eche un vistazo a la documentación, que se puede descargar como archivos pdf . Hay algunas páginas que destacan todos los aspectos de arquitectura, en la primera parte del documento SAD:
- MVC y arquitectura Multi-Tier;
- Por qué un ORM (con RTTI avanzado): por qué no es solo una capa sobre el DB;
- Por qué un cliente / servidor ORM;
- Escribir servicios RESTful en un enfoque SOA;
- ORM y SQL (a través de tablas virtuales SQLite3, funciones personalizadas para acceder a BLOB).
Es de código abierto, que funciona desde Delphi 6 hasta XE, Unicode completo (incluso en Delphi 7, ya que utiliza internamente la codificación UTF-8, como JSON). Entonces, cuando actualice a una versión más nueva de Delphi, su código seguirá siendo válido. Podría ser útil.
Usamos RemObjects SDK para nuestros servicios, ¡y estamos muy contentos con la calidad! Puede usar mensajes binarios TCP + (para alta velocidad), con cifrado y compresión opcionales. Pero también es posible HTTP + SOAP (o XML o lo que sea), o TCP + SOAP, etc. ¡Es muy fácil de usar y vale la pena el precio (no es muy caro)!
Por cierto: Data Abstract está basado en el SDK, ambos son de RemObjects.com.