Si tienes
un programa de escritorio con conexión a bases de datos Sql, es probable que en
algún momento pienses en conectarlo remotamente al servidor vía internet, ya sea porque tienes sedes en lugares
geográficos diferentes, porque viajas frecuentemente o muchos otros aspectos
que pueden requerir de esta infraestructura.
Esta
situación solo ocurre con los programas de escritorio, ya que las Aplicaciones
WEB están diseñadas para trabajar remotamente y pueden ejecutarse desde el
navegador en cualquier ubicación geográfica sin problemas.
Si desean
conocer las ventajas o desventajas de las Aplicaciones Nativas Vs. las
Aplicaciones Web pueden revisar la siguiente entrada en este foro.
Para
conectarse a una base de datos remota vía Internet, hay 4 opciones válidas en
este momento:
1. Escritorio Remoto:- Utilizar software de escritorio
remoto, prácticamente con este software
no es una conexión a base de datos remota vía Internet, pero la incluyo en el
listado ya que finalmente cumple el mismo objetivo, la gran ventaja de este modelo es la
facilidad de uso, no hay que aprender nada nuevo ni realizar cambios en las
aplicaciones, solo es instalar el servidor de escritorio y dar accesos a los
clientes.
Desventajas
hay muchas, partiendo del hecho de la seguridad ya que debes dar permisos a la
sesión de Windows completamente y de allí partir a controlar los accesos a las
aplicaciones, esto supone un desgaste en administración de usuarios.
Este modelo
consume gran ancho de banda, porque debe transmitir el escritorio completo en
forma de imágenes, así que lo que no
consume en el traslado de de datos si lo consume en el traslado de imágenes.
2. Virtual Private Network:- La segunda opción es crear una VPN
(Virtual Private Network) existen programas para eso y es relativamente fácil,
la ventaja es que extiende la red local sobre internet, es segura y muy simple
de manejar. la desventaja es que requiere instalar software de VPN en cada
cliente y cuando se conecta la VPN asigna
una IP nueva al equipo dado que prácticamente cambia de red.
Otra gran
desventaja es que consume mucho ancho de banda, por lo cual es necesario tener
buenos canales de comunicación, aún así no es recomendable tener muchos usuarios en
este modelo, creo que más de 10 o 20 usuarios según el ancho de banda puede ser
el límite en conexiones normales de internet.
3. Conexión Directa a la Base de
Datos:- El tercer
modelo definitivamente no lo recomiendo y es solo abrir el puerto y el IP de tu
base de datos a internet configurando el FireWall, primero por el aspecto de
seguridad y segundo porque las bases de datos están diseñadas para trabajo en
conexiones estables, así que si la conexión se cae, tu aplicación se cae
inmediatamente. afectando no solo el cliente, sino también el rendimiento del
servidor. ¿Que si se puede hacer?, si se puede, que lo debas hacer?,
definitivamente no.
4. Uso de un MiddleWare:- La cuarta opción y la más usada y
recomendada en este momento para redes como internet, donde hay límites de la
velocidad de acceso y la conexión no es estable (Se puede caer en cualquier
momento), es el uso de un software mediador llamado genéricamente Middleware.
El
middleware permite crear aplicaciones en 3 capas y 3 niveles, este software es
quien maneja la seguridad, la conectividad y la persistencia de los datos.
Hay varias
tecnologías para hacer esto, en Delphi se conoce como DataSnap anteriormente
Midas, en Microsoft se denomina tecnología Com, en Java se utiliza
JBoss o Tomcat. Según la tecnología que se quiera usar se puede utilizar navegador
o conexiones directas sin el navegador,
Entre las tecnologías
de conexión directa encontramos el DataSnap de Embarcadero y la tecnología Com
de Microsoft. Con navegadores WEB igualmente se puede implementar las 3 capas utilizando
tecnologías WebServices o Rest.
Si estás
trabajando en Delphi te recomiendo la tecnología DataSnap para crear
aplicaciones de este tipo, o utilizar el HyperBase server, el cual ya tiene las
opciones implementadas y es solo cuestión de usarlo.
Solo quiería completar unos detalles sobre los métodos "no recomendados", por si alguien los necesita utilizar algún día.
ResponderEliminar1) El escritorio remoto se puede "refinar" compartiendo solo las ventanas remotas de cierta aplicación del servidor. Esto lo he visto hacer con el software Cytrix -creadores del escritorio remoto de windows, vednen un sistema mejorado de escritorios remotos- pero creo que actualmente también lo permite hacer la versión de windows.
3) Respecto de compartir la base de datos por un puerto, se puede hacer con total seguridad si en el servidor y los clientes usas un encriptador de puertos. Históricamente se ha usado ZeBeDee (http://www.firebirdsql.org/pdfmanual/Firebird_ZeBeDee.pdf) pero tambien vale un tunel ssh con putty o similar.
Saludos.
ResponderEliminarCabe mencionar que como uso de un MiddleWare, se puede utilizar Data Abstract de la gente de RemObject; el cual considero un producto mucho más maduro que la implementacion por parte de Embarcadero, DataSnap.
Hola, en el caso de MiddleWare creo que deberíamos hacer una pequeña separación entre herramientas para implementar Middleware y las herramientas Listas para usar, "Out of the Box".
ResponderEliminarLas tecnologías Com y DataSnap las catalogaría como herramientas para implementar el Middleware, pero en las ya listas para usar, encontrariamos RemObject que me pareció muy interesante y HyperBase.
Estas herramientas abstraen las complicaciones del desarrollo de un middleware y le enfocan en lo realmente necesario para desarrollar aplicaciones. así el programador se enfoca en la aplicación y no en el middleware.
Gracias por los comentarios así podremos complementar estos árticulos para hacerlos más precisos y didácticos.