Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2018
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Serveur REST JSON technologies possibles

    Bonjour,

    Dans le cadre d'un projet, nous aimerions avoir un serveur REST et un client. Dans le principe la partie serveur manipule une base de données FireBird et retourne les résultats sous le format JSON au client.
    Le client sera à terme multi-plateforme (smartphones essentiellement).
    Le tout se fera sous Delphi 10.2 et nous en sommes encore à la phase analyse et conception (tests R&D).
    Nous étudions les différentes possibilités offertes par Delphi.
    Après des recherches, il apparait que pour la partie serveur notamment, il existe deux possibilités :

    - Utiliser DataSnap avec TDSServer et TDSServerClass, en tant que Web Services et mettre à disposition du client des méthodes, qui retourneraient des TFDJSONDataSets ou des TJSONObject
    Avec cette méthode, l'encapsulation des données et l'écriture du code est facile à mettre en place, TFDJSONDataSets permettant d'être rempli avec des TFDQuery directement. De plus le contenu des requêtes (réponse JSON) ne transite pas en clair.
    C'est la solution que propose des tutoriels Embarcadero (http://docwiki.embarcadero.com/RADSt...ion_et_FireDAC) ainsi qu'en guise d'exemple dans les projets disponibles avec l'installation de Delphi.
    Le seul problème serait apparemment la nécessité d'utiliser TFDJSONDataSets pour récupérer les données côté client, de plus, les routes ou accès aux méthodes ne sont plus vraiment REST ('datasnap/rest/TServerMethods/GetTopics' au lieu de GET: 'datasnap/rest/topics')

    - La seconde solution avec un WebBroker (Projet Application serveur Web) qui consiste à instantier des TWebActionItems depuis le TWebModule pour chaque route du serveur REST et lui affecter dans la méthode OnAction les fonctions à appeler pour chaque type de requête (GET, POST, PUT...). Néanmoins cela demande générer le JSON "à la main", sans utiliser d'outils comme TFDJSONDataSets qui est plutôt pratique. Côté client, cela se ferait via TRESTClient, TRESTRequest, TRESTResponse.
    C'est notamment ce que présente cette vidéo :
    (Building RESTful Servers)

    Les questions que nous nous posons sont en rapport avec les possibilités qu'offre Delphi pour ce genre de projet, est-ce bien les seules solutions existantes ? quels seraient les avantages/inconvénients des solutions possibles ? en terme de performances, montée en charge, quel est le mieux ?

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    octobre 2002
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2002
    Messages : 700
    Points : 808
    Points
    808

    Par défaut

    Il existe aussi le framework mORMot, qui est probablement le plus performant, mais qui est très pointu techniquement.
    La doc générale: https://synopse.info/files/html/Syno...AD%201.18.html
    Le forum: https://synopse.info/forum/index.php
    Le blog: http://blog.synopse.info/

  3. #3
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2005
    Messages : 342
    Points : 589
    Points
    589
    Billets dans le blog
    4

    Par défaut WebBroker est tres puissant

    Bonjour,

    WebBroker est très puissant et pas assez connu.

    Je le connais dans le cadre d'une grosse appli comme serveur de donnée ntier, et il fonctionne plutôt bien en isapi avec IIS.

    Pour le formatage du json, je passerai par une liste d'objet mapper sur les champs de la base de données.
    Il y a le problème de passage du datastet à la liste d'objet, relativement aisé dynamiquement avec les RTTI.

    Beaucoup d'entre nous se crée des générateur de classe d'objets depuis les champs des tables .

    Pour passer de la liste d'objet au Json, l'unité Rest.Json permet de le faire en deux ligne de code.

    Pour la réception le peuplement de la liste d'objet est en deux ligne en Delphi.

    Les objets Delphi peuvent être copier aisément en java ou .net. Je ne sais pas comment ces langages charges les données json dans les objets, mais j'imagine que ça doit être assez naturel.

    Cordialement.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2018
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Bonjour,

    Tout d'abord, merci pour vos réponses.
    Nous sommes actuellement en train de tester l'utilisation de mORMot. Du coup une question technique par rapport à ce framework; est-il possible de n'utiliser que la partie REST sans passer par l'ORM intégré ? Nous ne souhaitons pas passer par un ORM mais configurer nous mêmes les routes ainsi que les chemins du serveur REST et utiliser des requêtes via FireDac pour répondre au client. En regardant les exemples de projets fournis avec mORMot, il apparaît qu'il faudrait utiliser TSQLRestServerFullMemory (ou TSQLRestServer) côté serveur en créant un TSQLModel vide pour le serveur. En réalité, ce qui nous parait bizarre c'est la présence de SQL ou DB dans le nom des classes étant donné que l'on souhaite simplement avoir un serveur REST sans ORM.

    Après si les réponses et les requêtes transitent en JSON, je ne sais pas s'il sera aisé de convertir notre manière de récupérer les données (via des TFDQuery) en un format facilement traitable par mORMot, en savez-vous davantage à ce sujet ?

    Cordialement

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    juillet 2002
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : juillet 2002
    Messages : 1 129
    Points : 1 149
    Points
    1 149

    Par défaut

    Bonsoir,
    Regarde aussi du côté de
    DMVCFramework de Daniel Teti : https://github.com/danieleteti/delphimvcframework
    Mars Curiosity de Andrea Magni :https://github.com/andrea-magni/MARS
    Cordialement
    Andry
    On progresse .....

Discussions similaires

  1. echange client serveur en JSON
    Par altair8080 dans le forum Langage
    Réponses: 1
    Dernier message: 07/08/2011, 12h29
  2. REST JSON et post
    Par topolino dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 28/03/2011, 18h40
  3. Mettre en place un serveur REST
    Par neeux dans le forum Zend Framework
    Réponses: 5
    Dernier message: 16/06/2009, 20h37
  4. Installation de Firefox sans avoir de serveur X, c'est possible ?
    Par kaboume dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 26/11/2008, 14h14
  5. [AJAX] Evenements du serveur vers le client (possible ?)
    Par cocoyot dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/11/2007, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo