Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 3 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Talking Servidores Rest

Hola como andan?...

Una consulta, que framework para servidor rest recomiendan.

Estuve viendo DelphiMVCFramework (con unos videos del Blog de Neftali)
Leí buenos comentarios de mORMot (pero no encontré ejemplos para probarlo, nose como hacer)
Sobre DataSnap, vi malos comentarios y pésimo rendimiento.

Y también encontré Horse (https://github.com/HashLoad/horse-wizard) y Mars Curiosity (https://github.com/andrea-magni/MARS)

Escenario en el cual se va a usar, principalmente para recibir información de otra aplicación escrita en pyton.
Actualmente todo va a estar en un mismo servidor físico (distintos servidores virtuales), si bien podría pasar los datos conectándome directamente a la base de datos, el tema que la convivencia en el mismo servidor físico no es algo que se pueda asegurar con el tiempo.

Los datos que se me envían de la otra aplicación no dependen de mi por lo que tendría que dar acceso a otra persona que escriba sobre mi base de datos, sin tener control sobre los datos que escribe, por eso es que quiero recibirlos, validarlos y recién si todo es correcto insertarlos en mi base de datos. Y si los datos enviados son incorrectos poder informar para que del otro sistema (en pyton) procesen ese error.

No creo que sea un entorno complicado pero tengo que asegurarme que el framework que elija funcione.

Mi experiencia en servidores rest en CERO, este es mi primer servidor rest. Por los ejemplos de DelphiMVCFramework que vi en los videos de Neftali ( al cual agradezco por compartir su conocimiento) parece fácil, aunque la versión de los ejemplos es bastante distinta a la actual.

mORMot no pude hacer andar el test.
DataSnap vi también un par de videos y parece bastante simple, pero leí malos comentarios. (https://robertocschneiders.wordpress...ability-tests/)
Con Horse, estoy viendo los videos de Vinicius Sanchez(https://www.youtube.com/playlist?lis...ESZvXuohP6I7HC)
Y Mars, lo vi acá en la pagina 31 cuando habla de los server rest (https://embarcadero.qcomgroup.com.tw...for_Delphi.pdf)

Espero sus respuesta.
Saludos.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #2  
Antiguo Hace 3 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Me olvide comentarles que al momento de desplegar el servidor rest debería hacerlo sobre un servidor IIS.

Este es otro tema que ver como integrar el server que programe con IIS.
Capaz @Neftali tiene algún tutorial para desplegar el server rest en IIS.?

Saludos.
__________________
Saluda Atte Neeruu!!! :)

Última edición por Neeruu fecha: Hace 3 Semanas a las 15:04:23.
Responder Con Cita
  #3  
Antiguo Hace 3 Semanas
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.342
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo realmente no te puedo dar opinión sobre el resto porque no los he probado, así que sólo puedo opinar sobre DMVCFramework.

Valga decir que mi experiencia con servidores REST era nula hasta ese momento. Había realizado clientes, pero no servidores.

La librería me pareció sencilla de utilizar y sencilla de aprender. Si cumple con lo que necesitas, yo lo valoraría como opción.


En cuanto a la instalación sobre IIS, no parece muy compleja y el propio framework tiene la documentación necesaria:
https://danieleteti.gitbooks.io/delp...eploy_iis.html
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo Hace 3 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Hola Neftali.

Te consulto pudiste realizar alguna prueba de stress sobre el servidor rest con DelphiMVCFramework?
Al momento de recibir peticiones simultaneas responde correctamente?, arma alguna cola de solicitudes pendientes?

Muchas gracias por tu respuesta.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #5  
Antiguo Hace 3 Semanas
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.342
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Neeruu Ver Mensaje
Hola Neftali.
Te consulto pudiste realizar alguna prueba de stress sobre el servidor rest con DelphiMVCFramework?

No pude hacerla.
Tal vez tendrás que preguntar en los grupos específicos sobre DMVCFramework (WhatsAPP / Telegram). Ahí hay gente que lo usa y tendrán más info. de estos temas de estrés y carga de trabajo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo Hace 3 Semanas
Vincent_123 Vincent_123 is offline
Registrado
 
Registrado: may 2024
Posts: 1
Poder: 0
Vincent_123 Va por buen camino
hola! qué onda con esa consulta sobre frameworks rest? la verdad es que hay varias opciones copadas para elegir. yo arranqué hace poco con esto de los servidores rest también, así que te puedo contar mi experiencia. primero probé con datanap, pero la verdad es que me pareció un pequeño quilombo de configurar y los ejemplos que encontré no me convencieron mucho. además leí que el rendimiento no era la gran cosa. así que lo descarté rápido. después me puse a mirar mormot, que tiene buena fama. pero la verdad es que me costó un huevo encontrar ejemplos piolas y la documentación no me resultó muy amigable. así que también lo dejé de lado por ahora. al final me decidí por horse, que me pareció la opción más simple y efectiva para arrancar. lo que está bueno es que tiene un wizard para crear proyectos nuevos re fácil. y los ejemplos que encontré en youtube y en el repo de github me parecieron muy claros. también estuve viendo mars curiosity que parece muy groso, pero me daba un toque de miedo por la falta de ejemplos y documentación inicial. igual capaz que le doy una revisada más adelante. por ahora me estoy quedando con horse y la verdad que me está yendo de lujo. lo único que me jode un toque es que no encuentro mucha data sobre cómo implementar autenticación y autorización, pero eso ya lo veré sobre la marcha. en resumen, yo te recomendaría horse para arrancar tranqui si sos nuevo en esto de los servidores rest. una vez que le agarres la mano, ahi si podés probar opciones más pesadas como mars curiosity. pero bueno, esa es mi experiencia de novato nomas! cualquier cosa avisame si necesitas una mano. saludos!
Responder Con Cita
  #7  
Antiguo Hace 3 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Hola Vincent...

Por ahora estoy arrancando con mvcframework...
Estoy viendo donde crear la conexión a la base de datos, donde crear el modulo de datos, sobre todo para analizar las solicitudes concurrentes, como se comporta cuando llegan varias solicitudes simultaneas y una se demora...

Horse era otra alternativa que tenia en vista... Es bueno saber que alguien mas esta trabajando para poder ayudarnos...

Hasta ahora la una documentación con la que me estoy guiando con mvcframework son los videos de Neftali...

Con Mars Curiosity me paso lo mismo, poca documentación.
__________________
Saluda Atte Neeruu!!! :)

Última edición por Neeruu fecha: Hace 3 Semanas a las 22:25:37.
Responder Con Cita
  #8  
Antiguo Hace 3 Semanas
WHILENOTEOF WHILENOTEOF is offline
Miembro
 
Registrado: mar 2008
Posts: 232
Poder: 17
WHILENOTEOF Va camino a la fama
Para documentarte de DMVC Framework, aparte de los ejemplos del repositorio, alguna indicación que hay en la web de Daniele Teti y en github, lo mejor es que te leas el libro que publicó. Si no tienes unas necesidades grandes, te va a aguantar sin problemas muchas peticiones concurrentes, es importante que utilices la opción de pooling de conexiones que trae por ejemplo Firedac, ya que se gasta bastante en crear y destruir conexiones. Además el DMVC Framework por defecto montas el servidor en un ejecutable, programa de consola o servicio utilizando la tecnología webbroker de Delphi, pero si generas dll Isapi para instalar en IIS, ya la gestión de peticiones y red te la hace la capa del servidor IIS, que va a resultar más rápido y eficiente.
Responder Con Cita
  #9  
Antiguo Hace 3 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Hola WHILENOTEOF, el libro es gratis o de pago?

Muchas gracias por tu aclaración sobre el pooling de conexiones.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #10  
Antiguo Hace 3 Semanas
WHILENOTEOF WHILENOTEOF is offline
Miembro
 
Registrado: mar 2008
Posts: 232
Poder: 17
WHILENOTEOF Va camino a la fama
ES de pago, https://leanpub.com/delphimvcframework , si puedes permitírtelo te lo recomiendo. Si no, revisando los ejemplos , puedes hacerte también una idea de las posibilidades y de cómo funciona.
Responder Con Cita
  #11  
Antiguo Hace 3 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Una consulta:

Tengo un JSON, con esta estructura:

Código:
{
    "PROVEEDORES": {
        "COD_PROV": 4,
        "NOM_PROV": "PRUEBA3_EDIT",
        "COD_USER": 0
    }
}
Si esta de esa forma, cuando mapea asi:
Código Delphi [-]
    [MVCPath('/api/proveedor')]
    [MVCHTTPMethod([httpPOST])]
    procedure CreateProveedor([MVCFromBody] Proveedor: TProveedor);
No me carga los valores en el objecto Proveedor.


Ahora si saco la palabra "PROVEEDORES" de JSON mapea correcto los valores.
Hay alguna configuración para indicarle el nombre del Objecto.

Código Delphi [-]
  TProveedor = class
  private
    [JSONName('COD_PROV')]
    FCODPROV: Integer;
    [JSONName('NOM_PROV')]
    FNOMPROV: string;
    [JSONName('COD_USER')]
    FCODUSER: Integer;
  published
    property COD_PROV: Integer read FCODPROV write FCODPROV;
    property NOM_PROV: string read FNOMPROV write FNOMPROV;
    property COD_USER: Integer read FCODUSER write FCODUSER;
  end;

Disculpen si mi terminología no es correcta.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #12  
Antiguo Hace 2 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
WHILENOTEOF, voy a aprovecharme de tu solidaridad. Tu que tienes el libro, dice algo del lo que consulte respecto a la estructura del JSON, busque por todos lados y hasta donde llega mi entendimiento y no puedo solucionarlo.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #13  
Antiguo Hace 2 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Hola nuevamente, logre que el objeto json que viene en el post se lea con el formato que le paso.

Agregue las siguientes propiedades:

Código Delphi [-]
    [MVCPath('/api/proveedor')]
    [MVCHTTPMethod([httpPOST])]
    //[MapperJSONSer('PROVEEDORES')]
    //[MVCConsumes('application/json')]
    [MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
    procedure CreateProveedor;

Y luego en el procedimiento:

Código Delphi [-]
procedure ControllerProveedores.CreateProveedor;//(const [ MVCFromBody] Proveedor:TProveedor);
var Proveedor: TProveedor;
begin
  Proveedor := Context.Request.BodyAs('PROVEEDORES');

'PROVEEDORES' es el RootName;

De esta forma puedo levantar la informacion enviada con este formato de JSON:

Código Delphi [-]
{
    "PROVEEDORES": {
        "COD_PROV": 4,
        "NOM_PROV": "PRUEBA3_EDIT",
        "COD_USER": 0
    }
}
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #14  
Antiguo Hace 2 Semanas
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Cita:
Empezado por WHILENOTEOF Ver Mensaje
ES de pago, https://leanpub.com/delphimvcframework , si puedes permitírtelo te lo recomiendo. Si no, revisando los ejemplos , puedes hacerte también una idea de las posibilidades y de cómo funciona.
Me encantaría comprarlo pero la conversión Peso/Dolar hace que sea un valor muy elevado el del libro.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #15  
Antiguo Hace 6 Días
Neeruu Neeruu is offline
Miembro
 
Registrado: oct 2007
Posts: 496
Poder: 17
Neeruu Va por buen camino
Hola buenos dias.

Alguien ocupo este componente para convertir json en dataset?
Funciona? es recomendable? tienen alguna otra alternativa?

https://github.com/viniciussanchez/dataset-serialize

Es del mismo desarrollador de Horse.

Saludos.
__________________
Saluda Atte Neeruu!!! :)
Responder Con Cita
  #16  
Antiguo Hace 6 Días
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.342
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Neeruu Ver Mensaje

Alguien ocupo este componente para convertir json en dataset?
Funciona? es recomendable? tienen alguna otra alternativa?

Yo miraría los que vienen con delphi. En especial el TRESTResponseDataSetAdapter.
Lo digo porque el RESTDebugger que viene con delphi, hace exactamente lo que tú estás pidiendo y lo hace con los componentes de delphi.

Si en el RESTDebugger ejecutas un GET que te devuelva datos con esta estructura:

Cita:

[{"cif":"S7668730J","name":"ORACULACESL","creation_date":"16/06/1992","phonenumber":"937016021","faxnumber":"937016022","email":"x9mn2me9b@mail.com","municipality": "Reinoso","municipality_inecode":"09310","province":"Burgos","province_inecode":"09","address":"VíaF uente","address_number":"1","address_zipcode":"09710","cnae":"9900","activity":"Actividadesdeorganiz acionesyorganismosextraterritoriales"},{"cif":"F98923642","name":"OXYLEXSA","creation_date":"26/06/1964","phonenumber":"976978765","faxnumber":"976978766","email":"876yhekspz@btinternet.com","municip ality":"Paderne","municipality_inecode":"15064","province":"Coruña,A","province_inecode":"15","addre ss":"CallejónHorno","address_number":"34","address_zipcode":"15516","cnae":"8424","activity":"Ordenp úblicoyseguridad"}]

Que tiene la misma estructura que tú necesitas:

Código Delphi [-]
[
    {
        "cif": "S7668730J",
        "name": "ORACULACESL",
        "creation_date": "16/06/1992",
        "phonenumber": "937016021",
        "faxnumber": "937016022",
        "email": "x9mn2me9b@mail.com",
        "municipality": "Reinoso",
        "municipality_inecode": "09310",
        "province": "Burgos",
        "province_inecode": "09",
        "address": "VíaFuente",
        "address_number": "1",
        "address_zipcode": "09710",
        "cnae": "9900",
        "activity": "Actividadesdeorganizacionesyorganismosextraterritoriales"
    },
    {
        "cif": "F98923642",
        "name": "OXYLEXSA",
        "creation_date": "26/06/1964",
        "phonenumber": "976978765",
        "faxnumber": "976978766",
        "email": "876yhekspz@btinternet.com",
        "municipality": "Paderne",
        "municipality_inecode": "15064",
        "province": "Coruña,A",
        "province_inecode": "15",
        "address": "CallejónHorno",
        "address_number": "34",
        "address_zipcode": "15516",
        "cnae": "8424",
        "activity": "Ordenpúblicoyseguridad"
    }
]


En la pestaña BODY te devuelve el JSON, pero en la pestaña TABULAR DATA, te devuelve los datos en formato TDataset (DBGrid).
Revisa este artículo porque creo que explica lo que necesitas.




__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
servidores rest avmm2004 Varios 3 05-08-2021 09:37:44
API REST en delphi darkbits Varios 1 21-10-2020 08:58:10
PHP / Rest DataSnap Rockin PHP 8 14-02-2017 20:49:38
Rest roman La Taberna 11 30-07-2014 16:52:00
REST, Marshaling y \ iuqrul Providers 1 08-11-2013 10:51:33


La franja horaria es GMT +2. Ahora son las 12:47:14.


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