Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Disco compartido vs webservice (https://www.clubdelphi.com/foros/showthread.php?t=86683)

giulichajari 16-09-2014 12:24:39

Disco compartido vs webservice
 
hola amigos queria saber su opinion al respecto (ventajas y desventajas) de crear una LAN con disco compartido de una maquina(donde esta la bd), y crear un webservice.

El disco compartido no es un servidor, osea tiene una capa menos, y las consultas estan en el cliente, en la aplicacion que accede a este disco.
En cambio el servicio web puede ser accesado desde cualquier parte del mundo y no solo en LAN, tambien se pueden administrar procesos generales, es decir si quiero contabilizar el total de tickets de una empresa (ejemplo) al tener un disco compartido como se haria? en un webservice es una fuuncion.

Otra cosa: Se puede utilizar una base de datos de MYSQL con disco compartido? porque es el sistema que mas se utilizar..
Gracias Saludos.

Casimiro Notevi 16-09-2014 12:44:30

Creo que no te he entendido.
Un servidor de base de datos (mysql, postgresql, firebird, etc.) no debe tener nada compartido.
Los clientes solamente hacen peticiones al servidor (por el puerto predeterminado de cada base de datos) y es el propio servidor de bases de datos (mysql, postgresql, firebird, etc.) el que se encarga de preparar la información y devolverla al cliente.
Por lo tanto el servidor puede estar en cualquier lugar con acceso a internet.

giulichajari 16-09-2014 13:20:28

Cita:

Empezado por Casimiro Notevi (Mensaje 481560)
Creo que no te he entendido.
Un servidor de base de datos (mysql, postgresql, firebird, etc.) no debe tener nada compartido.
Los clientes solamente hacen peticiones al servidor (por el puerto predeterminado de cada base de datos) y es el propio servidor de bases de datos (mysql, postgresql, firebird, etc.) el que se encarga de preparar la información y devolverla al cliente.
Por lo tanto el servidor puede estar en cualquier lugar con acceso a internet.

Entonces como funciona un sistema en red con disco compartido? osea una aplicacion de 2 capas, en un disco la bd y en otro la aplicacion, sin webservice?

Casimiro Notevi 16-09-2014 13:43:02

Es que no hay que compartir nada. Justo lo contrario, los clientes no tienen necesidad de conocer dónde está el servidor, ni siquiera si está en local o en... Nueva Zelanda.
El servidor de bases de datos trabaja a través de un puerto. Los clientes hacen peticiones al servidor de bases de datos, que puede ser una IP o un alias, por ejemplo: servidoroculto.
En el caso de firebird tienes un fichero de alias, donde asocias 'servidoroculto' a, por ejemplo: 111.222.88.77:/mnt/datos/basedatos.fdb
Pero el cliente no tiene porqué saber la ruta real, usará el alias 'servidoroculto'
Por supuesto, en el servidor no hay que compartir absolutamente nada, al contrario, lo que debes hacer es protegerlo lo más posible para que nadie entre. En el caso de firebird solamente necesita el puerto 3050 abierto, en mysql es otro puerto, postgresql es otro, etc.

Creo que es eso lo que preguntas.

giulichajari 16-09-2014 13:48:31

Cita:

Empezado por Casimiro Notevi (Mensaje 481563)
Es que no hay que compartir nada. Justo lo contrario, los clientes no tienen necesidad de conocer dónde está el servidor, ni siquiera si está en local o en... Nueva Zelanda.
El servidor de bases de datos trabaja a través de un puerto. Los clientes hacen peticiones al servidor de bases de datos, que puede ser una IP o un alias, por ejemplo: servidoroculto.
En el caso de firebird tienes un fichero de alias, donde asocias 'servidoroculto' a, por ejemplo: 111.222.88.77:/mnt/datos/basedatos.fdb
Pero el cliente no tiene porqué saber la ruta real, usará el alias 'servidoroculto'
Por supuesto, en el servidor no hay que compartir absolutamente nada, al contrario, lo que debes hacer es protegerlo lo más posible para que nadie entre. En el caso de firebird solamente necesita el puerto 3050 abierto, en mysql es otro puerto, postgresql es otro, etc.

Creo que es eso lo que preguntas.

Pero y para que sirve crear un webservice por ejemplo? cual es la ventaja? si el servidor de base de datos acepta consultas de clientes?

movorack 16-09-2014 23:09:42

Hola,

Porque para que tu aplicación se comunique con el servidor necesita utilizar las librerías de cada motor o de la capa que accede a la DB (Ej: ODBC).
Este panorama se complica cuando tienes un cliente en windows, un cliente en algún sistema de móviles y un cliente web y es donde los WebServices son funcionales; Porque no importa el motor que tengas para la DB, solo debes invocar el mismo método del webservice desde cualquiera de los clientes para obtener el mismo resultado.

Además, los webservices trabajarán por el puerto de la web (HTTP, HTTPS) y no tendrás que abrir otro puerto al mundo entero.

giulichajari 16-09-2014 23:28:07

Cita:

Empezado por movorack (Mensaje 481601)
Hola,

Porque para que tu aplicación se comunique con el servidor necesita utilizar las librerías de cada motor o de la capa que accede a la DB (Ej: ODBC).
Este panorama se complica cuando tienes un cliente en windows, un cliente en algún sistema de móviles y un cliente web y es donde los WebServices son funcionales; Porque no importa el motor que tengas para la DB, solo debes invocar el mismo método del webservice desde cualquiera de los clientes para obtener el mismo resultado.

Además, los webservices trabajarán por el puerto de la web (HTTP, HTTPS) y no tendrás que abrir otro puerto al mundo entero.

Y entonces para lo que estoy haciendo no es necesario webservice? porque es un negocio que solo usara computadoras de escritorio, pero igualmente las aplicaciones de 3 capas son superiores a las de 2 capas.
Un sistema con base de datos como mysql y una aplciacion en delphi tiene solo 2 capas.

movorack 16-09-2014 23:42:34

Los modelo de infraestructura son importantes y necesarios según los requerimientos. Si tu modelo de negocio solo necesita un programa monolítico para que funcione eso no lo hace inferior a un programa con plugins.
Analiza lo que requieres y construye basándote en las necesidades presentes y futuras de tu modelo. Teniendo en cuenta que muchas de las necesidades futuras podrían implementarse en fases posteriores.

gatosoft 17-09-2014 05:00:10

Amigo giulichajari,

Considero que no hay una relación clara entre una BD en una carpeta compartida y un webservice... estas hablando de dos cosas muy distintas.

Asumo que utilizas un tipo de base de datos como Paradox, cuyos archivos se puedn colocar en una carpeta y ser accesados por tus programas.... Éste esquema es un poco obsoleto, pues tiene en general los mismos problemas que trabajar concurrentemente sobre un archivo de excel...exagerando un poco (o tal vez no...)

Hoy dia ya no hablamos de bases de datos propiamente, sino de motores de bases de datos (o manejadores de bases de datos relacionales), que se encargan a través de protocolos (TCP/IP) de adminsitrar conexiones y tráfico de datos...

Si hablas de un MySql, instalas el motor en un servidor, donde se crea la estructura de archivos/carpetas que equivalen a la BD, pero tu usuario no deberias enterar de ésto, sino de la dirección IP y el puerto que la Bd utilizar para la conexión. en tu programa, entonces utilizaras un par de componentes que haran el trabajo de comunicación.

Por otro lado el WebService, está mas orientado a recibir peticiones de negocio, interpretarlas y hacer una tarea o devolver un resultado específico. Otra cosa es que tu Web service dentro de su lógica se conecte a un motor de base de datos (en cualquier ubicación) y haga lo que tenga que hacer...

engranaje 17-09-2014 12:46:21

A mi me da la sensación de que igual estas equivocado con lo que significan las capas. Aunque realmente compiles un ejecutable que se conecta a un sistema gestor de bd a traves de una ip y un puerto. Tu ejecutable puedes estar diseñado y desarrollado en varias capas, de modo que si necesitas cambiar el sistema gestor de bd solo tengas que realizar un cambio mínimo en los fuentes que se encargan del trabajo con la bd, pero ninguno sobre los fuentes que se encargan de la gestión de esos datos, y tampoco ninguno en los fuentes que se encargan de la presentación visual de la información. Las capas se refieren a la estructura interna de tu aplicación

giulichajari 17-09-2014 13:32:31

El tema es que pensando un poco no se si es necesario el webservice, ademas de que este es un poco mas de trabajo para desarrollarlo.
Puedo directamente tener el motor de base de datos en una maquina y una o varias aplicaciones que actuen sobre el server. por ejemplo yo tenia pensado una aplicacion de terminal de punto de venta, y otra para el jefe.
El requisito que me dio el cliente es que si se corta internet poder seguir trabajando, para lo cual habia pensado crear un webservice por sucursal y uno central. En estos webservice se encuentran las instrucciones sql de insercion modificacion, etc. A diferencia del otro modelo donde estan en la aplicacion que se conecta al motor de base de datos.
Pero para el modelo anterior que es mas sencillo(no el webservice), tener simplemente el motor de base de datos y las aplicaciones clientes tendria que distribuir la base de datos, por lo menos tener una copia en una maquina que tenga instalado el motor por cada sucursal.

Muchas gracias por responder a todos.


La franja horaria es GMT +2. Ahora son las 22:23:06.

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