Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Aplicacion movil con base de datos (https://www.clubdelphi.com/foros/showthread.php?t=96029)

giantonti1801 31-12-2022 11:39:26

Aplicacion movil con base de datos
 
buen dia amigos y feliz inicios de fiestas. Hoy aquí vengo con una consulta: estoy desarrollando una aplicación móvil, algunos de los procesos de esta aplicación requieren consultar, insertar, actualizar y incluso borrar información de una tabla en específico, antes de continuar estoy conectado a MS SQL SERVER, obviamente por ser móvil pueden conectarse de cualquier lado y con cualquier IP. Yo tengo muy claro que puedo publicar esta Base de dato y también tengo claro de los riesgos que esto lleva. Pero mi Gran pregunta es:
.1 Es esta la forma correcta de hacerlo?
.2 Todas esta aplicación en Google Play Hacen lo mismo?
.3 A fin de adelantarme a esto trate de adquirir un servidor en la nube exactamente Un VPS, esto me permite crear todas las base de datos que sea necesaria pero NO te activan la conexión remota. Es decir no puede conectarte a la base de dato desde afuera.
.4 Como hacen la aplicación de Farmacia, Comidas, Ventas en general, todas ellas necesitan tener acceso a una Base de Datos.

Hago esta pregunta a todos ustedes buscando orientación. la aplicación Móvil ya la tengo desarrollada en Delphi 11 y corre en ambiente prueba con una base de dato local. la Idea es no gastar recurso y esfuerzos en algo que no va a funcionar, que pude haberlo hecho mejor o debí haberlo hecho de otra forma y evitar de perder tiempo y recursos.

mamcx 31-12-2022 20:03:27

Tecnicamente eso funciona. Un movil no es tan diferente de un computador cualquiera.

El problema es que exponer los puertos/conexions de la BD es riesgoso.

Normalmente se recomienda usar un modelo de N-capas donde tienes un servidor intermedio que media entre ambas partes. Eso implica toda una reescritura de la app.


Con las versiones modernas de las RDBMS puedes conectarte a ellas usando SSL:

https://learn.microsoft.com/en-us/sq...l-server-ver16

Ahora esta ruta te permite seguir como vas (y te da tiempo de ir beneficiándote de la app y ir desarrollando mejoras) pero requiere que le pongas MUCHO CUIDADO a como configuras y administras el servidor.

Entonces esto es el trade-off:

- Conectarte directo a la BD demanda que hagas TODO correcto en materia de seguridad/configuracion del servidor, incluyendo usar correctamente los permisos de la BD para que tu app NO use permisos de admin sino que tenga solo permisos de CRUD sobre tablas/vistas/procedimientos.
- Desarrollar NTier complica el desarrollo pero tienes una capa intermedia que puede usarse ademas como un puente que conecte a un hosting aparte del código de la app servidora


Ambos requieren configurar bien la seguridad y todo eso, solo que lo primero hay que ponerle aun mas importancia.
Si te vas por este camino, te recomiendo que:


- Uses SQL SERVER para linux en el hosting y un linux MUY cerrado/limitado (yo uso nixos que se puede configurar de forma que solo lo que exactamente usas es lo único instalado, y una vez aplicada la configuración el linux queda de "solo lectura" y no deja instalar nada mas)
- Asegurarte de usar solo conexión SSL a la bd
- Tener una herramienta que monitoree las conexiones y los accesos
- Utilizar correctamente los permisos de la BD y que la app no tenga nunca mas de permisos de los que necesite
- Tener un buen sistema de backups que se pruebe de forma rutinaria que funciona el restore!
- Usar un servicio como cloud flare que sea el primer layer de acceso a tu hosting.
- Usa consultas parametrizadas y prefiere procedimientos almacenados y/o vistas para los accesos sensibles

Esto parece complicado, lo es, pero es un costo de "una vez" mientras configuras todo. También es EXACTAMENTE lo que hay que hacer aun si usas el modelo de app servidor, es solo que muy pocos lo hacen :)

De todas maneras, es buena idea que modularizes la app, y vayas desarrollándola como si fuera N-capas aun si es un monolito al desplegar. Eso te da flexibilidad mas adelante.

juniorSoft 02-01-2023 12:00:42

Esto daria para todo un libro o un curso de videos tutoriales, mamcx sería de gran ayuda para la comunidad un aporte de este tipo al precio que justifique el esfuerzo, que explique al detalle toda la arquitectura y configuraciones necesarias además las sincronizaciones de las aplicaciones moviles cuando no hay conexión con la BD.

cancun 31-08-2023 19:36:34

Hola, te comento por si te sirve como lo hago, para el manejo de la información puedes utilizar REST, funciona en local y en remoto, actualmente tengo rentado un servidor físico en la nube y solo abro el puerto(s) que voy a utilizar para conectarme a la aplicación Servidora (El servidor REST), para esto puedes uasr algun Framework que te lo facilite, yo utilizo MVC Delphi de Daniele Tetti y Horse de Vinicius Sanchez, el primero es mas completo, pero Horse te sirve si no te quieres complicar mucho y se puede utilizar con cualquier base de datos (lo utilizo con DBISAM).

Ambos Frameworks los encuentras en github

https://github.com/danieleteti/delphimvcframework
https://github.com/HashLoad/horse

Saludos

rgstuamigo 06-11-2023 23:53:20

Cita:

Empezado por giantonti1801 (Mensaje 549759)
buen dia amigos y feliz inicios de fiestas. Hoy aquí vengo con una consulta: estoy desarrollando una aplicación móvil, algunos de los procesos de esta aplicación requieren consultar, insertar, actualizar y incluso borrar información de una tabla en específico, antes de continuar estoy conectado a MS SQL SERVER, obviamente por ser móvil pueden conectarse de cualquier lado y con cualquier IP. Yo tengo muy claro que puedo publicar esta Base de dato y también tengo claro de los riesgos que esto lleva. Pero mi Gran pregunta es:
.1 Es esta la forma correcta de hacerlo?
.2 Todas esta aplicación en Google Play Hacen lo mismo?
.3 A fin de adelantarme a esto trate de adquirir un servidor en la nube exactamente Un VPS, esto me permite crear todas las base de datos que sea necesaria pero NO te activan la conexión remota. Es decir no puede conectarte a la base de dato desde afuera.
.4 Como hacen la aplicación de Farmacia, Comidas, Ventas en general, todas ellas necesitan tener acceso a una Base de Datos.

Hago esta pregunta a todos ustedes buscando orientación. la aplicación Móvil ya la tengo desarrollada en Delphi 11 y corre en ambiente prueba con una base de dato local. la Idea es no gastar recurso y esfuerzos en algo que no va a funcionar, que pude haberlo hecho mejor o debí haberlo hecho de otra forma y evitar de perder tiempo y recursos.

Hola giantonti1801, espero que te haya servido de mucho lo comentado y sugerido por los demás miembros, aunque sé que el hilo es viejito;), mas permíteme sugerirte y comentarte que en Delphi tenemos muchas opciones de poder solucionar el tema que comentas.
El tema es, tal como lo ha comentado el amigo mamcx, el tema va por la seguridad de tu base de datos, al hacer la conexión directamente desde la aplicación cliente, puede ser vulnerable, ya que la información va viajar por la red WAN(internet), se tendría que tener cuidado con eso, por tal motivo las mayoría de aplicaciones deben ser bien pensadas en el despliegue físico o arquitectura que tendrán.
En teoría una solución es tener una aplicación multicapa distribuida físicamente de la siguiente forma:

Aplicación Cliente<---------->Servidor de Aplicaciones<-----------> Servidor de Base de Datos

Los programadores web dirían:
FrontEnd<-------->BackEnd<----------->Servidor de Base de Datos

Bueno, estamos hablando de capas físicas, la aplicación cliente va instalada en el PC, SmartPhone,etc; el servidor de aplicaciones puede ir instalado en la PC que hace de servidor de base de datos(esto implica que la peticiones SQL sean locales y no se necesite configurar casi nada). Pero también puede ir instalado en otra maquina, de la misma red LAN que la PC que hace de Servidor de Base de Dato(hay ventajas y desventajas en ambos casos).;) En fin hay mucha tela que cortar al respecto.
Pero, ahora la pregunta es: que tecnología me brinda Delphi para solucionar este tema de servidor de aplicaciones?
Pues hay muchas opciones, por mencionar unas cuantas, usando SOAP, REST, DataSnap(muy interesante por cierto) y lo ultimo de lo ultimo que ha sacado Embarcadero es el servidor de aplicaciones RAD Server.
En fin, si nos salimos de delphi tambien hay muchas posibilidades, inclusive algunas alternativas utilizan herramientas que hacen de servidor de aplicaciones integrado en la nube( ejemplo Firebase de Google,back4app,etc. ), donde uno puede desarrollar sus aplicaciones con mucha facilidades.
Saludos Cordiales.^\||/


La franja horaria es GMT +2. Ahora son las 17:41:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi