Ver Mensaje Individual
  #11  
Antiguo 22-11-2016
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
Se ha hablado en varias ocasiones del tema.

No estas tan desencaminado en pensar en un WebService Apache, de hecho es una posibilidad. El como queres resolver el lado del servidor es decision tuya. Si lo queres resolver en Delphi, tenes que investigar sobre DataSnap, al menos como solucion de fabrica. La otra opcion es optar por el nuevo producto que sacaron hace poco, el RAD Server. O tambien podes optar por desarrollos de terceros, como esta (hay muchas mas, es cuestion de buscar)

Sea cual fuera el caso, el servidor va a terminar siendo un WebService REST, al cual los clientes se conectan y le mandan peticiones HTTP GET en una determinada URL. Si usas DataSnap (y me imagino que el RAD Server sera similar) Delphi te genera automaticamente una clase proxy que realiza ese trabajo y lo unico que tenes que hacer es invocar los metodos de ese objeto.

Cuando el server recibe uno de esos pedidos, creara y ejecutara los query SQL (digamos, obtiene el DataSet) y luego debe convertirlo a "algo" que sea posible de transportar via HTTP para mandarselo al cliente. Ese "algo" de facto hoy es JSON, pero tranquilamente puede ser XML, binario, o inventarte tu propio formato.

Luego el cliente obtiene la respuesta y normalmente es conveniente pasarla a algo mas sencillo de trabajar. En tu caso seguramente es mas facil y practico trabajar con un DataSet que con un JSON. Podes hacer este trabajo a mano, usar componentes de Delphi (por ejemplo, dentro de los componentes REST, hay un ResponseAdapter que te permite ver la respuesta JSON como si fuera un DataSet), o podes usar alguna biblioteca de terceros. Si te decantas por JSON, esta DataSetConverter4Delphi la he usado y funciona bien. De hecho podes usarla para enviar desde el lado del server y recibir desde el lado cliente.

Esta otra utilidad tambien es interesante porque podes copiar/pegar un JSON y ver si es valido, como "lo ve Delphi" si lo pasas a una clase, y tambien te puede crear una unidad completa con la definicion de la clase y metodos para convertir desde/hacia el mismo JSON

Tambien es muy util usar el REST Debugger que viene con Delphi. Basicamente es para hacer las pruebas, haces el GET al URL del servidor, y te muestra la respuesta y luego hasta podes verlo a modo de DataSet. Y tiene una opcion que es copiar los componentes al portapapeles, osea despues te vas a Delphi, apretas pegar (control + V) y te crea los componentes que uso para resolver la peticion REST y la conversion a DataSet

Estos links explican como hacerlo
https://www.embarcadero.com/free-tools/rest-debugger
https://community.embarcadero.com/bl...est-apps-43254
http://docwiki.embarcadero.com/RADSt.../REST_Debugger

Aca hay un ejemplo en español:
http://edgartec.com/delphi-xe6-consu...mercado-libre/

Neftali tiene unos cuantos articulos en su blog:
http://neftali.clubdelphi.com/tag/rest/
http://neftali.clubdelphi.com/tag/webservice/
http://neftali.clubdelphi.com/category/json/

Última edición por AgustinOrtu fecha: 22-11-2016 a las 16:26:34.
Responder Con Cita