Ver Mensaje Individual
  #4  
Antiguo 20-05-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
La idea es usar Firemonkey para que la aplicacion que ya tengo en VCL sea multi plataforma, utilizar las mismas unit de logica de negocio que ya tengo (en el ejemplo de arriba la unit Productos) y que el servidor contenga todo los TxxxMgr (en el ejemplo el TProductoMgr). En realidad necesito poder conectar desde dispositivos moviles, si fuera una Firemonkey de escritorio puedo conectar con Zeos, FireDAC, ADO, tal como decis vos

En la logica defino el objeto en si, que atributos y operaciones pueden realizar, esto deberia ser comun ya sea para una aplicacion VCL o para una Firemonkey.

Luego cada unit de la logica inlcuye en el uses el DataModule principal, y le piden al Mgr correspondiente que inserte, borre, actualice o realice un select, etc

De esa forma al realizar mantenimientos, agregar campos o correciones hago el trabajo una sola ves, con recompilar los binarios de todas las plataformas deberia ser suficiente

Ahora el problema con Datasnap es que cuando se acceden a los ServerMethods, lo que se retorna es una referencia de la clase TServerMethods no una instancia que es lo que yo venia haciendo.

Código Delphi [-]
procedure TServerContainer1.DSServerClass1GetClass(
  DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass);
begin
  PersistentClass := ServerMethodsUnit1.TServerMethods1;
end;

si se busca la definicion del tipo TPersistentClass encontramos esto:

Código Delphi [-]
  TPersistentClass = reference to TPersistent;

Es decir, debemos heredar de TPersistent para poder publicar los metodos (cosa que yo no hacia)

Creo que la solucion es crear varias DSServerClass, en lugar de tener lo que yo llamo un TProductoMgr, tener un DSServerClassProductos por decir algo, que se encarge de publicar los respectivos metodos Get, Update, Save, Insert.. etc

Aunque tambien se podrian poner TODOS los metodos en el TServerMethods que genera el wizard, con el unico inconveniente de que queda todo junto y no separado cada cosa con la suya pero bueno

No es en este preciso momento lo mas urgente que tengo para hacer asi que lo voy a dejar momentaneamente de lado, se agradecen los comentarios

Igual, seguramente lo que termine haciendo es, dado que el servidor datasnap es necesario pura y exclusivamente para los dispositivos moviles, implementar los metodos que necesito y chau.. no es la idea que desde el telefono se pueda manejar todo, es mas que nada para sacar algun listado/estadistica/reporte

Saludos!

Última edición por AgustinOrtu fecha: 20-05-2015 a las 00:44:28.
Responder Con Cita