Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-12-2022
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 31-12-2022
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.927
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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.
__________________
El malabarista.

Última edición por mamcx fecha: 31-12-2022 a las 21:07:17.
Responder Con Cita
  #3  
Antiguo 02-01-2023
juniorSoft juniorSoft is offline
Miembro
 
Registrado: abr 2005
Posts: 178
Poder: 20
juniorSoft Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 31-08-2023
cancun cancun is offline
Miembro
 
Registrado: may 2003
Ubicación: Cancun, México
Posts: 115
Poder: 22
cancun Va por buen camino
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
__________________
Cancun, Q.Roo, México
Responder Con Cita
  #5  
Antiguo 07-11-2023
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 18
rgstuamigo Va por buen camino
Thumbs up

Cita:
Empezado por giantonti1801 Ver Mensaje
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.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Datasnap aplicación Movil wilsonzart Desarrollo en Delphi para Android 1 29-11-2018 17:13:35
Problemas con aplicación móvil delphi XE8 Manuel Desarrollo en Delphi para Android 4 02-12-2015 19:44:03
Aplicación Raudus para móvil newtron Delphi para la web 2 28-09-2014 11:41:17
Copiar Base de Datos SQLLite al Movil ASAPLTDA Desarrollo en Delphi para Android 1 03-01-2014 06:12:08
base de datos movil vroa74 Conexión con bases de datos 3 23-11-2010 23:48:45


La franja horaria es GMT +2. Ahora son las 01:12:05.


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
Copyright 1996-2007 Club Delphi