Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2017
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 566
Poder: 15
ASAPLTDA Va por buen camino
Aplicacion Rest Como hacerla

Buenos dias Foristas. He iniciado a mirar como se hace una aplicacion que utilice rest server y rest cliente.
El ejemplo que encontre fue la que hace delphi con su plantilla de echo y cambiar de orden el valor de una cadena. Ejemplo interesante para observar como funciona.

Pero en el mundo de apliaciones este ejemplo es poco util, ya que normalmente las aplicaciones reciben datos y retornan resultados de una base de datos.
Quisiera sabe si alguien tiene la url de un ejemplo donde existe por ejemplo enviar datos al servidor , verificar si los recibió la informacion, o solicitar un clientdataset para desplegarlo en en el cliente.
Este ejemplo serviria a todos para iniciar sus propios programas

Agradezco la ayuda que puedan brindar al foro
Responder Con Cita
  #2  
Antiguo 07-03-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 27.413
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira la web de neftali, creo que ahí encontrarás lo que buscas.
Responder Con Cita
  #3  
Antiguo 07-03-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.798
Poder: 9
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Hay bastante informacion en la documentacion y ejemplos

Este por ejemplo muestra como exponer un DataSet

Aca discutimos otra forma de hacerlo

Tambien podes usar frameworks de terceros como MARS o mORMot
Responder Con Cita
  #4  
Antiguo 07-03-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 6.944
Poder: 21
jhonny Va camino a la fama
Yo es que devuelvo siempre un TObjectList con los objetos previamente mapeados por medio de un ORM que yo mismo hice. En fin, toda una forma de programar este tipo de cosas.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
Responder Con Cita
  #5  
Antiguo 07-03-2017
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.403
Poder: 18
mamcx Va camino a la famamamcx Va camino a la fama
Una aplicación REST no es tan diferente de una app normal, solo que agrega una forma diferente de serializacion & esta distribuida.

Como se explica en la tesis de como hacer apps robustas de forma distribuida:
(Del creador de ERLANG, un lenguaje donde las funciones locales se manejan tal como las remotas).
http://erlang.org/download/armstrong_thesis_2003.pdf

-----

Una app distribuida "simple" es casi lineal:

Cita:
Cliente -> COMANDO -> Serializador -> RED -> Servidor -> Deserializador -> Ruteo -> COMANDO EN SERVIDOR -> RESPUESTA (y se invierte los pasos)
Todo entre Serializador y Ruteo son las cosas que se agregan al proceso.

Osea que hacer:

Código Delphi [-]
procedure sum(a,b:Integer):Integer

sum(a,b)

En ambos casos es "casi lo mismo".

SIN EMBARGO

El *verdadero shock* está en que en una app monolítica tienes un manejo invisible del "estado" del programa, y mutas libremente el contenido de la memoria. Ese manejo de estado es lo que te da el runtime/lenguaje. Por ejemplo, al hacer la llamada a SUM no tienes que conocer la dirección en memoria, y aun toda una INVISIBLE cantidad de "variable globales" como el STACK y el HEAP que mantienen todo vivo. Una ficción que se rompe de cuando en cuando al manifestarse en forma de bugs.

Esa ficcion no sirve en una app distribuida. Y como la mayoría de los lenguajes tienen un acceso global del programa, aun los programadores más cuidadosos tienen todo entrelazado por mas que intenten aislar o encapsular las cosas. Y cuando tratan de portar eso a una app distribuida se estrellan porque toda su intuición queda derrumbada, aunque juren que han sido programadores disciplinados.

Además, mientras en un monolito solo hay un "cliente", en una app distribuida hay que asumir no solo una posibilidad infinita, sino que los clientes pueden ser maliciosos.

Asi que tienes que:

1- Asumir que todo lo que llega al servidor puede venir de un cliente malicioso. Todo hay que validarlo.
2-Manejar de forma manual el estado, haciendo lo posible de no usarlo ("stateless").
3-Buscar hacer funciones "puras", al estilo de lenguajes funcionales, que no accedan nada "global" ni generen "side-effects"
4-Reducir al mínimo la cantidad de datos en la comunicación
5-Asumir que los clientes/servidores morirán a mitad, al principio, al final, llegando, dandose la vuelta, en todo momento.
__________________
Nuevo Blog.
Ahora en Twitter!.
Responder Con Cita
  #6  
Antiguo 08-03-2017
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 566
Poder: 15
ASAPLTDA Va por buen camino
Smile Aplicacion Rest

Gracias a todos por sus respuestas.
VEo que falta mucho por aprender.

Me gustaría recibir ampliaciones sobre el tema y que todos los floristas aprendamos sobre esta tecnología por ejemplo
1. cuando uno hace en delphi el servidor rest y el cliente es un programa hecho en otro lenguaje se hace de forma diferente
1.1 para exponer una función que existe en el servidor rest , que información debe proveer el servidor para que un cliente externo use la funcion ?
Responder Con Cita
  #7  
Antiguo 08-03-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 6.944
Poder: 21
jhonny Va camino a la fama
Cita:
Empezado por ASAPLTDA Ver Mensaje
Gracias a todos por sus respuestas.
VEo que falta mucho por aprender.

Me gustaría recibir ampliaciones sobre el tema y que todos los floristas aprendamos sobre esta tecnología por ejemplo
1. cuando uno hace en delphi el servidor rest y el cliente es un programa hecho en otro lenguaje se hace de forma diferente
1.1 para exponer una función que existe en el servidor rest , que información debe proveer el servidor para que un cliente externo use la funcion ?
1. Así el cliente esté creado también en Delphi, debes hacer el server, como si estuvieras desarrollando para un cliente hecho en otro Lenguaje. Para mí, esa es una de las claves de éxito importantes para llevar a cabo una solución así.
1.1 Debes entregarle la documentación y ejemplos necesarios con el esquema JSON con el que se enfrentarán.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
Responder Con Cita
  #8  
Antiguo 08-03-2017
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.403
Poder: 18
mamcx Va camino a la famamamcx Va camino a la fama
Cita:
Empezado por ASAPLTDA Ver Mensaje
1. cuando uno hace en delphi el servidor rest y el cliente es un programa hecho en otro lenguaje se hace de forma diferente
Cada lenguaje tiene sus propios idomas y formas de resolver las cosas, pero en el caso de REST es mas un protocolo, asi que al final la estructura general es la misma. Recuerda que se usa HTTP(o similar) y un metodo de paso de datos como Json/ProtocolBuffers/CVS/etc que es agnostico al lenguaje.

Cita:
Empezado por ASAPLTDA Ver Mensaje
1.1 para exponer una función que existe en el servidor rest , que información debe proveer el servidor para que un cliente externo use la funcion ?
Si es algo interno nada, pero si quieres publicar una API pues debes hacer la documentacion adecuda.

Es popular por ejemplo, usar:

http://swagger.io/

----
La parte que reitero, ya que algunos piensas que REST es "usar json", es solamente la implementacion de los "VERBOS" http y de los URI. Se pueden pasar cualquier dato (incluyendo binarios) aunque es popular hoy usar Json, pero si hay razones para usar algo mas no hay que limitarse.

Por ejemplo, en mi caso yo paso tambien bases de datos sqlite (todo el archivo) y asi me ahorro un monton de trabajo, aparte que puedo hacer consultas sql identicas entre cliente y servidor.

Y usando la habilidad para abrir una BD sqlite dentro de otra, paso datos sin la sobrecarga de serializar/desearilizar, puedo usar transacciones y demas, Por ejemplo, en una app esto es parte de la sincronizacion (en Swift/ios junto a un servidor python):

Código PHP:
func downloadData(_ removeAbono:Boolthrows {
    
Log.info("Downloading data...")
    
    
let con openDb()
    
    try 
con.inDatabase db1 in
        
try db1.execute("ATTACH DATABASE '\(syncpath)' AS 'sync'")
    }
    
    
defer {
        
con.inDatabase db1 in try! db1.execute("DETACH sync")}
    }
    
    try 
con.inTransaction db in
        
        
try db.execute("DELETE FROM cliente WHERE version = 0")
        
        try 
db.execute("DELETE FROM Config")
        try 
db.execute("INSERT OR REPLACE INTO Config ( id, nombre, tipo, valor) SELECT id, nombre, tipo, valor FROM sync.Config")
        
        try 
db.execute("INSERT OR REPLACE INTO cliente ( cobro_id, codigo, direccion, fechaIngreso, id, nombre, orden, telefono, version, localid)  SELECT cobro_id, codigo, direccion, fechaIngreso, id, nombre, orden, telefono, version, localid FROM sync.cliente")                
        return .
commit
    
}

Cientos de lineas de codigo ahorrada

Osea, REST puede ser un ideal, pero no hay que ignorar las posibilidades...
__________________
Nuevo Blog.
Ahora en Twitter!.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
TjsonObject como parámetro SERVICIO REST igentile Varios 5 06-11-2015 14:17:06
Como consumir Rest Service que retorna cadena en formato JSON desde delphi 7 JuanPa1 Internet 0 20-12-2013 18:07:20
Vista Actualizable... Como hacerla ? Efren2006 Firebird e Interbase 5 20-07-2012 01:05:47
Como Utilizar La Funcion Desc Para Hacerla Parte De Un Query JOTAAB Oracle 2 06-01-2006 18:41:25
Barra progreso con IdSMTP...Como hacerla?? AFilth Internet 3 20-12-2005 00:59:49


La franja horaria es GMT +2. Ahora son las 15:25:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi