Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Redes
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 06-08-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Ok.

Me ha costado (estoy algo espeso) pero creo que he pillado el concepto, aunque instales el programa en otro servidor la ip para conectarse a la base de datos tiene que ser la del equipo que alberga la misma, ¿correcto?.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #22  
Antiguo 06-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Claro, el programa conectará (hará peticiones y recogerá las respuestas) a la BD mediante la IP del servidor donde está la BD.

El cliente de la BD hace la petición al servidor que está en esa IP, por el puerto determinado, y recibirá la respuesta (si la hay) también por ese puerto. Pero no es necesario tener ningún otro tipo de acceso a ese servidor.
Porque realmente no es el usuario/cliente el que hace la consulta/petición, sino que le hace la consulta/petición al servidor, y es él quien se encarga de recoger/entregar los datos a la BD y contestar al cliente.

Hay un simil muy claro para entenderlo, el típico ejemplo del restaurante:
Los usuarios son los clientes que hacen pedidos al servidor/camarero y es el servidor/camarero/servicio/demonio el que hace el pedido a la cocina/BD. Allí preparan la respuesta que suele ser un plato preparado con las condiciones del cliente. Una vez preparada la respuesta/plato entonces se la entrega al camarero/servidor para que le responda/entregue al cliente/usuario.

Típico cliente/servidor. El cliente no sabe dónde está la cocina, ni cómo preparan los platos, ni siquiera tiene acceso a la cocina (prohibido el paso), pero gracias al servidor/camarero podemos obtener la respuesta/plato que hemos pedido.

Última edición por Casimiro Notevi fecha: 06-08-2012 a las 19:29:52.
Responder Con Cita
  #23  
Antiguo 06-08-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Pero yo no entiendo como funciona esto de un servidor de aplicaciones en entornos web. ¿Cómo se ejecuta una aplicación delphi desde un entorno web?

// Saludos
Esto era algo que tampoco yo entendía. De por si la denominación es confusa. Pero un servidor de aplicaciones no es más que un servidor de datos que implementa la lógica de negocios. Puede estar basado en varias arquitecturas, pero los nuevos están hechos exclusivamente sobre HTTP (No es lo mismo que Web).

Para darnos una idea, imaginemos el siguiente escenario:
Una aplicación necesita registrar un nuevo contacto. Luego del registro, necesita aumentar el contador de contactos del cliente padre del nuevo contacto.

Implementando lo anterior en Delphi y usando Firebird lo harías así:
Código Delphi [-]
begin
  // este codigo implementa la conexión a la DB
  // y al mismo tiempo, implementa la lógica de negocios.


  // 1. INICIAR CONECCION A LA DB
  // 2. INICIAR UNA NUEVA TRANSACCIÓN

  // Luego...
  // Insertar el nuevo contacto
  with ContactosQuery do
  begin
    SQL.Text :=
      'insert into contactos (cliente, nombre, telefono) ' +
      'values (:client, :name, :telephone)';
    Params['client'] := cliente_seleccionado_en_dbgrid;
    Params['name'] := NombreEdit.Text;
    Params['telephoe'] := TelefonoEdit.Text;

    ExecSQL;
  end;


  // Increamentar el contador de contactos
  contador := ClientesDataset.FieldByName('contactos').Value;
  contador := contador + 1;
  ClientesDataset.Edit;
  ClientesDataset.FieldByName('contactos').Value := Contador;
  ClientesDataset.Post;

  // Transaction.Commit ...
end;

El código anterior implementa la lógica de negocios y además posee código específico y dependiente de un Motor de Base de Datos.

Pero con un servidor de aplicaciones el código Delphi sería algo así:
Código Delphi [-]
begin
  RequestData := '?cliente=%s&nombre=%s&telefono=%s';
  RequestData := Format(RequestData,
    [HTTPEncode(cliente_seleccionado_en_dbgrid),
     HTTPEncode(NombreEdit.Text),
     HTTPEncode(TelefonoEdit.Text)]);

  idHTTP.Get('http://servidor_aplicacion/contactos/agregar' + RequestData);
end;

Con el anterior código sólo realizamos una petición HTTP al servidor de aplicaciones. Éste tomará los datos pasados por nuestra aplicación Delphi y los insertará en un nuevo contacto y también aumentará el contador de contactos. Además es el servidor de aplicaciones el que se encargará de gestionar la conexión a la DB.

La arquitectura anterior es un moderno y verdadero servidor de aplicaciones. Existen otro tipo de Servidor de aplicaciones, los de Java. Pero esos son un ActiveX en términos prácticos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #24  
Antiguo 06-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ahora si que me he quedado "a cuadros": o no me he enterado... o no le veo la utilidad.
Más que nada porque así visto parece una "encapsulación" de las llamadas a la BD. Y teniendo un stored procedure en la BD sólo hay que pasarle los datos y la misma se encarga de dar de alta al contacto y mediante un trigger se actualizaría el contador. Todo sencillo, rápido, limpio y sin necesidad de todo eso.
Responder Con Cita
  #25  
Antiguo 06-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Y del lado del servidor, ¿qué hay? En este esquema, ¿cómo se realiza un transacción?

// Saludos
Responder Con Cita
  #26  
Antiguo 06-08-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Ahora si que me he quedado "a cuadros": o no me he enterado... o no le veo la utilidad.
Más que nada porque así visto parece una "encapsulación" de las llamadas a la BD. Y teniendo un stored procedure en la BD sólo hay que pasarle los datos y la misma se encarga de dar de alta al contacto y mediante un trigger se actualizaría el contador. Todo sencillo, rápido, limpio y sin necesidad de todo eso.
Realmente tiene sus ventajas hacerlo así. Este fue sólo un ejemplo sencillo. Pero que tal, que por ejemplo: Luego de registrar un contacto también tengas que enviarle un correo-e con archivos PDF generados dinámicamente?

Aparte de lo anterior, usar HTTP y no un motor DB en específico te da libertad y agilidad en el desarrollo. Por ejemplo, si cierto día deseas cambiar desde Firebird a PostgreSQL por ejemplo. O si te toca escribir un cliente para Android. Dónde consigues bibliotecas para establecer conexiones con Firebird usando Android? Aparte de eso, tendrías que volver a implementar para Android el envío del correo-e y la generación del PDF. Y si luego decides hacer una versión para iOS (iPad)?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #27  
Antiguo 06-08-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Y del lado del servidor, ¿qué hay? En este esquema, ¿cómo se realiza un transacción?
Hay código script (Python, PHP, etc). Estos scripts implementan lo que se llama controladores. Son los controladores los que implementarán la lógica de negocios. Los controladores implementan las transacciones, envío de correos-e, generación de PDFs, y claro, el registro del nuevo contacto.

El código de la implementación de las transacciones ya depende del motor de DB o si usas o no un framework tipo Django o Symfony.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #28  
Antiguo 06-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero para eso, mejor hacemos una aplicación de tres capas que virtualmente puede hacerse independiente del gestor de datos. Además, con esto del HTTP decimos adios a todos los controles dbaware.

No, a mi se me hace que hay algo que no nos estás contando

// Saludos
Responder Con Cita
  #29  
Antiguo 06-08-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por roman Ver Mensaje
No, a mi se me hace que hay algo que no nos estás contando

// Saludos


Que he soñado con poder hacer un TDataset para REST. Pero mis limitados conocimientos no me lo han permitido
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #30  
Antiguo 07-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tengo la sensación de que la programación web está todavía en pañales, debe de llegar una 'revolución' que lo cambie todo, actualmente parecen parches, apaños, remiendos, cada uno hace las 'mezclas' como mejor sabe o le parece, hay una infinidad tremenda de 'cosas' distintas que se solapan unas a otras, etc. Me parece como si todo fuese una gran chapuza, a la espera de algo definitivo.
No sé, es la sensación que me da.
Responder Con Cita
  #31  
Antiguo 07-08-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Tengo la sensación de que la programación web está todavía en pañales, debe de llegar una 'revolución' que lo cambie todo, actualmente parecen parches, apaños, remiendos, cada uno hace las 'mezclas' como mejor sabe o le parece, hay una infinidad tremenda de 'cosas' distintas que se solapan unas a otras, etc. Me parece como si todo fuese una gran chapuza, a la espera de algo definitivo.
No sé, es la sensación que me da.
No creo que cambie. Estas mezclas son el resultado de ser abiertos. Incluso creo que un iZombie se referiría con tus mismas palabras a Linux. Y es por lo mismo, porque Linux es abierto y no es un sistema controlado por sólo un hombre o grupo.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #32  
Antiguo 07-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Tengo la sensación de que la programación web está todavía en pañales, debe de llegar una 'revolución' que lo cambie todo, actualmente parecen parches, apaños, remiendos, cada uno hace las 'mezclas' como mejor sabe o le parece, hay una infinidad tremenda de 'cosas' distintas que se solapan unas a otras, etc. Me parece como si todo fuese una gran chapuza, a la espera de algo definitivo.
No sé, es la sensación que me da.
¡Ehh! Lo que tu quieres es encontrar el equivalente de delphi en la web

// Saludos
Responder Con Cita
  #33  
Antiguo 07-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
¡Ehh! Lo que tu quieres es encontrar el equivalente de delphi en la web
// Saludos
Algo así, sí
Debería de existir (o habrá que inventarlo) entornos de programación para la web, ya sea en php, python, etc. pero que fuesen herramientas/entornos/IDEs únicas y completas, al igual que ahora se usa IDEs para el escritorio.
Aunque quizás la compleja y variada que es la web en sí misma, lo haga imposible, de momento.

Puede que todo lo que ocurra es que simplemente me estoy haciendo mayor
Responder Con Cita
  #34  
Antiguo 07-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues ahi está el Delphi for PHP o cómo se llame ahora. Pero pienso que más que pensar que es una dolencia de la programación web, es, por el contrario, bueno que haya mucha diversidad de herramientas, entornos, tecnologías. Hacer un ambiente que abarque todo significaría cerrarse sólo a un conjunto limitado de herramientas.

// Saludos
Responder Con Cita
  #35  
Antiguo 23-08-2012
CSIE CSIE is offline
Miembro
 
Registrado: feb 2008
Ubicación: Universo paralelo
Posts: 69
Poder: 17
CSIE Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Pero para eso, mejor hacemos una aplicación de tres capas que virtualmente puede hacerse independiente del gestor de datos. Además, con esto del HTTP decimos adios a todos los controles dbaware.
...
Saludos a todos,

Yo creo que de lo que estáis hablando siempre es un desarrollo tres capas: Cliente, Servidor de Apps y BD.

Normalmente el en servidor de aplicaciones deben correr todos los servicios (de la tecnología que sea HTTP, SOAP, Custom): reglas de negocio, manejo de mensajería, etc... y nuestro cliente accederá a esos servicios a través de su puerto correspondiente y jamás accederá directamente a la BD.

Tal como yo lo veo, la ventaja principal es la escalabilidad y la encapsulación de tareas. La utopía es que el cliente se simplifique al máximo y el peso de las tareas recaiga en el servidor de aplicaciones. Tal como se hace con un explorador web, con esto no quiero decir que haya que utilizar aplicaciones WEB , yo sigo siendo partidario de las aplicaciones de escritorio para entornos empresariales.
Responder Con Cita
  #36  
Antiguo 24-09-2012
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
EXE en RED LAN y BD en Servidor de Aplicaciones

Solo para agregar a hilo, comentarles que desarrolle una aplicacion para la empresa donde trabajo (Delphi6 y Firebird 1.5) y aqui se instalo en una unidad de la RED (LAN) el ejecutable (de 6 Gb.) y las carpetas que el ejecutable buscara en base a la ubicación de este, es decir usando componentes IBx, en especifico el TIBDatabase, en el cual dentro de la programacion hice esto:

Código Delphi [-]
procedure TmodDatos.dbFluidaLogin(Database: TIBDatabase;
  LoginParams: TStrings);
begin
     try
       frmConexion:=TFrmConexion.Create(Self);
       if frmConexion.ShowModal = mrOk then
          begin
              LoginParams.Values['user_name'] := frmConexion.edUsuario.Text;
              LoginParams.Values['password']  := frmConexion.mskPassword.Text;
              dbFluida.DatabaseName:=frmConexion.edServerName.Text+':C:\SysLiquid\BD\DataBase.FDB';
          end;
     finally
          frmConexion.Free;
     end;
end;

Desde el formulario de conexion el usuario indica el NOMBRE DE LA PC o bien LA IP DE ESTA.....solo que aqui existe el problema de que el usuario, si tiene conocimientos en informatica sabra la ubicacion de nuestra base de datos.....se puede arreglar agregando mejor la ruta en el archivo .INI de tal manera que sea transparente para el usuario, como el que hizo nuestro compañero que inicio este hilo.....

En lo particular tenemos el ejecutable en la RED y la base de datos en un SERVIDOR DE APLICACIONES. En cada máquina cliente se tiene un acceso directo al archivo EXE de la aplicacion (ej. i:\SisApp\myApp.exe) y este mostrara la pantalla de conexion la cual solo tiene 3 parametros.....usuario, passw y nombre del servidor....

La ventaja q tengo es que son pocos los usuarios que se conectan....no llegan a 10. Ademas de tener el EXE en una unidad de la red, pues es mas comodo a la hora de las actualizaciones.

El servidor de la base de datos esta en Win XP Profesional y en otro estado de la rep. mex. la base de datos esta en un Win Server 2008.

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 24-09-2012 a las 20:56:14.
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
Como hacer un ejecutable unico para cada ordenador? negrokau Varios 1 14-10-2011 14:21:39
solo copio el ejecutable? Patricio Varios 3 16-05-2008 23:00:44
Usar un TDataModule compartido entre un ejecutable y una dll Luzma Conexión con bases de datos 1 18-07-2007 01:37:25
Seleccionar impresora predeterminada en cada cliente david duarte Impresión 6 26-04-2006 16:04:24
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 12:33:19


La franja horaria es GMT +2. Ahora son las 19:26:52.


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