Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2016
juniorSoft juniorSoft is offline
Miembro
 
Registrado: abr 2005
Posts: 178
Poder: 20
juniorSoft Va por buen camino
Extender Servidor Datasnap y Firedac

Hola amigos,

Hace mucho que no posteaba dudas en esta maravillosa gran biblioteca de conocimiento delphi,

Me gustaría ver un ejemplo que enseñe como extender un servidor Datasnap utilizando modulos de datos adicionales.

Me explico

Cuando creamos con el asistente un servidor datasnap este nos genera dependiendo de las opciones que marquemos un modulo llamado server container que contiene los componentes del servidor datasnap para su definición y comunicación con los clientes. Otro modulo llamado ServerMethods para colocar ahí los componentes de acceso a datos.

Cuando la aplicación es pequeña quizás baste con el servermethods para colocar los componentes que se requieren pero a medida que la aplicación va creciendo y se va volviendo mas compleja, hace falta espacio para colocar componentes y se requieren otros módulos de datos. Me gustaría ver un ejemplo utilizando datatanap con módulos de datos que extiendan el espacio donde colocar componentes pero que la aplicaciones clientes lo vean como parte del mismo servidor ademas de utilizar componentes firedac con una configuración master-detail que obtenga y actualice datos desde el cliente utilizando solo la biblioteca de firedac ya que es una biblioteca multiplataforma y así actualizar los conocimientos


desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 16-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
He utilizado el asistente para crear un server datasnap; le he dejado tildada la opcion para inlcuir los metodos de prueba (EchoString y ReveseString)

Luego modifique la implementacion de esos dos metodos para que devuelvan tambien el nombre de la clase que "hace el trabajo":

Código Delphi [-]
function TServerMethods1.EchoString(Value: string): string;
begin
  Result := ClassName + ', '  + Value;
end;

function TServerMethods1.ReverseString(Value: string): string;
begin
  Result := ClassName + ', '  + StrUtils.ReverseString(Value);
end;

Luego puse el server en ejecucion, y cree el cliente, simplemente con el componente TSQLConnection y puse la propiedad DriverName a "Datasnap"; por ultimo hice click derecho y seleccione "generate DataSnap client classes"

Esto genera una nueva unidad con la clase proxy "TServerMethods1Client"

A partir de esto, puedo escribir este codigo sencillo en el form principal del cliente:

Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
begin
  Methods1 := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  Edit1.Text := Methods1.EchoString('Hola');
  Edit2.Text := Methods1.ReverseString(Edit1.Text);
end;

Hasta aca es el tipico tutorial Datasnap

Para agregar un nuevo modulo de datos, solamente basta con volver al projecto del servidor, agregar un nuevo TDataModule; no hay que olvidarse de la directiva {$METHODINFO}, eso te podes fijar como lo genera el asistente. Esa directiva basicamente controla que metodos se exponen y cuales no

Llame a este nuevo modulo de datos TServerMethods2, que esta implementado igual que el TServerMethods1:

Código Delphi [-]
{$METHODINFO ON}
  TServerMethods2 = class(TDataModule)
  public
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
  end;
{$METHODINFO OFF}

function TServerMethods2.EchoString(Value: string): string;
begin
  Result := ClassName + ', '  + Value;
end;

function TServerMethods2.ReverseString(Value: string): string;
begin
  Result := ClassName + ', '  + StrUtils.ReverseString(Value);
end;

Volvi a mi cliente, y volvi a "generate DataSnap client classes", y en este caso la unit generada ahora 2 clases:

Código Delphi [-]
TServerMethods1Client = class(TDSAdminClient)
[...]

TServerMethods2Client = class(TDSAdminClient)
[...]

Asi que es muy facil modificar el codigo para usar una u otra, este es el Form de la aplicacion cliente:

Código Delphi [-]
type
  TForm2 = class(TForm)
    SQLConnection1: TSQLConnection;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    Methods1: TServerMethods1Client;
    Methods2: TServerMethods2Client;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  Methods1 := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
  Methods2 := TServerMethods2Client.Create(SQLConnection1.DBXConnection);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  Edit1.Text := Methods1.EchoString('Hola');
  Edit2.Text := Methods1.ReverseString(Edit1.Text);
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  Edit1.Text := Methods2.EchoString('Hola');
  Edit2.Text := Methods2.ReverseString(Edit1.Text);
end;

Saludos
Responder Con Cita
  #3  
Antiguo 17-03-2016
juniorSoft juniorSoft is offline
Miembro
 
Registrado: abr 2005
Posts: 178
Poder: 20
juniorSoft Va por buen camino
Gracias AgustinOrtu por tu pronta y excelente respuesta
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 + Firedac F3niX Conexión con bases de datos 0 10-02-2015 22:03:41
Servidor DataSnap cmfab Varios 8 20-10-2014 12:54:00
Servidor DataSnap Existente muli Providers 4 04-07-2014 02:29:43
exportar servidor datasnap JULIPO Providers 0 28-02-2012 04:34:07
DataSnap residente en el servidor !!! Velia Providers 0 18-05-2006 15:06:25


La franja horaria es GMT +2. Ahora son las 21:05:33.


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