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.
Partager