Contenu connexe Similaire à Faire des applications web avec Delphi (20) Faire des applications web avec Delphi2. PRÉSENTATEUR
MVP Embarcadero
Prestataire informatique freelance et formateur Delphi
CV et contacts :
https://www.linkedin.com/in/patrickpremartin/
Sites sur Delphi:
https://developpeur-pascal.fr (actualité et codage)
https://apprendre-delphi.fr (autoformation en ligne)
https://serialstreameur.fr (replay de directs et inédits)
3. Outils Embarcadero
Les meilleurs outils de développement multi-
plateformes. Créez une fois et déployez des
applications modernes sur chaque plateforme.
Support Technique
Nos techniciens sont à votre service à tout
moment pour répondre à vos questions et
vous fournir des informations sûres.
Distributeur Officiel
Partenaire exclusif de Embarcadero
Technologies, largement reconnu pour
ses produits de programmation primés.
B A R N S T E N
QUI
Site : https://www.barnsten.com – Contacts FR : equipe@barnsten.com
4. NOTRE
Société de prestations informatiques.
Edition de sites Internet, logiciels, vidéos et livres.
Soutien technique ponctuel et aide à la conception de
logiciels de tous types.
Infos et contact :
https://olfsoftware.fr
O L F S O F T W A R E
5. NOTRE
Centre de formation référencé sur Datadock.
Des formations personnalisées ou « clé en main » à
Delphi ou d’autres technologies sont dispensées à
distance (sur Zoom) ou sur place en entreprise.
Infos et contact :
https://se-former-a-delphi.fr
O L F S O F T W A R E
6. NOTRE
Initiation à FireMonkey pour développeurs VCL
3h en direct le matin, des vidéos et des exercices.
- 5 au 9 juillet 2021
- 26 au 30 juillet 2021
- 16 au 20 août 2021
- 6 au 10 septembre 2021
- 27 septembre au 1 octobre 2021
O L F S O F T W A R E
7. AU
• Introduction
• « Application web », c’est quoi ?
• Delphi, C++Builder et le web
• Solutions côté serveur
• Solutions mixtes
• Solutions côté navigateur
• Alternatives côté navigateur
• Migrer un projet VCL
• Conclusion
© Patrick Prémartin / developpeur-pascal.fr
8. INTROD
On retrouve des logiciels Delphi dans tous les
domaines avec des impacts surprenants comme
l’atterrissage en parachute de Perseverance sur
Mars cette année.
Les sujets « Internet » et « web » reviennent très
régulièrement.
© Patrick Prémartin / developpeur-pascal.fr
9. INTROD
« Comment faire pour mettre mon programme
Windows sur Internet pour mes clients ? »
C’est LA question de l’année 2021. Il ne se passe
pas une quinzaine sans qu’on me la pose ou que
je la vois passer dans une discussion.
Pour répondre n’y a pas de solution universelle
mais des pistes possibles que nous allons voir.
© Patrick Prémartin / developpeur-pascal.fr
10. INTROD
On peut développer en Delphi pour le côté
serveur, le côté navigateur et pour les deux à la
fois sans se préoccuper de comment sera exécuté
notre programme.
© Patrick Prémartin / developpeur-pascal.fr
11. INTROD
Pour chaque catégorie il existe des produits
fournis par Embarcadero, disponibles chez des
éditeurs tiers et en open source.
© Patrick Prémartin / developpeur-pascal.fr
12. INTROD
Dans le monde du web, les librairies et
frameworks sont souvent considérés comme
particulièrement mal codés.
Partout dans le monde, des développeurs Delphi
codent des solutions solides, fiables et stables
pour le web.
Voici leurs réalisations...
© Patrick Prémartin / developpeur-pascal.fr
13. « APPLICATION WEB »
Commençons par des rappels sur le
fonctionnement d’Internet et quelques
définitions.
© Patrick Prémartin / developpeur-pascal.fr
14. « APPLICATION WEB »
Pour afficher des pages web nous utilisons des
butineurs.
Ces butineurs parcourent des sites et demandent
des ressources (HTML, CSS, images, vidéos,
audios, scripts, …) à des serveurs selon leurs
besoins.
© Patrick Prémartin / developpeur-pascal.fr
15. « APPLICATION WEB »
Les serveurs « web » transmettent les fichiers
qu’ils ont à disposition ou les créent sur demande
selon le cas.
Le butineur (et autres logiciels) les traitent en
fonction du type MIME du fichier.
Le tout dialogue en TCP/IP sur de l’IPv4 ou IPv6.
© Patrick Prémartin / developpeur-pascal.fr
16. « APPLICATION WEB »
On a des sites/pages web statiques ou
dynamiques.
On a des serveurs web comme des serveurs d’API.
On a des logiciels embarquant des sites web et
des sites web utilisés comme des logiciels.
© Patrick Prémartin / developpeur-pascal.fr
17. « APPLICATION WEB »
Les applications web sont d’une façon générale
des sites Internet interactifs avec de l’affichage et
de la saisie d’informations, généralement
protégés par mot de passe, qui peuvent
éventuellement être lancés directement depuis le
bureau ou l’écran d’accueil de l’ordinateur,
smartphone ou tablette sans montrer qu’il tourne
dans un butineur.
© Patrick Prémartin / developpeur-pascal.fr
18. « APPLICATION WEB »
Ils peuvent gérer des données persistantes du
côté ordinateur, accéder aux fichiers locaux ou à
des périphériques locaux, tout en accédant à des
données en ligne.
© Patrick Prémartin / developpeur-pascal.fr
19. DELPHI, C++BUILDER
Embarcadero propose en standard tous les outils
permettant d’accéder à des ressources en ligne
dans la RTL, accessibles à tous types de projets :
- Sockets
- Librairie http/s
- Librairie REST
- Librairie JSON, XML, …
© Patrick Prémartin / developpeur-pascal.fr
20. DELPHI, C++BUILDER
Il existe aussi de nombreuses ressources externes
pour travailler sur réseaux TCP/IP.
© Patrick Prémartin / developpeur-pascal.fr
21. DELPHI, C++BUILDER
La librairie Indy propose des composants clients
et serveurs sur les principaux protocoles utilisés
en ligne.
https://www.indyproject.org
© Patrick Prémartin / developpeur-pascal.fr
22. DELPHI, C++BUILDER
Les suites de composants IPWorks de nSoftware
proposent des composants et librairies plutôt
orienté sécurité mais également des services
réseau de base.
https://www.nsoftware.com
© Patrick Prémartin / developpeur-pascal.fr
23. DELPHI, C++BUILDER
OverByte propose la suite de composants ICS
dans laquelle on retrouve des composants clients
ou serveur sur les protocoles les plus utilisés en
ligne.
http://www.overbyte.eu/
© Patrick Prémartin / developpeur-pascal.fr
24. DELPHI, C++BUILDER
Devart propose la librairie de composants
SecureBridge qui implémente un certains nombre
de protocoles dont les WebSockets.
https://www.devart.com/sbridge/
© Patrick Prémartin / developpeur-pascal.fr
25. DELPHI, C++BUILDER
Esegece a une librairie fournie autour de
WebSocket pour de nombreux protocoles qui s’en
servent.
https://www.esegece.com/
© Patrick Prémartin / developpeur-pascal.fr
26. SOLUTIONS
Des logiciels serveur développés en Delphi et des
frameworks pour en faire, il y en a littéralement
des tonnes !
Embarcadero propose 3 solutions serveur
utilisables pour le web selon le niveau de licence
de Delphi, C++Builder ou RAD Studio utilisée.
© Patrick Prémartin / developpeur-pascal.fr
27. SOLUTIONS
WebBroker : la base des serveurs gérant les
entrées / sorties en http et https.
On y déclare les URI auxquelles il répond et on
met le code dans un événement. On peut aussi
utiliser des composants générant des pages selon
des templates.
http://docwiki.embarcadero.com/RADStudio/en/
Using_Web_Broker_Index
© Patrick Prémartin / developpeur-pascal.fr
28. SOLUTIONS
DataSnap : pour faire du client/serveur sur de
l’accès à tous types de bases de données et de
l’exécution de code à distance.
Au fil des années le module serveur a évolué et
peut maintenant répondre à des requêtes http/s
ou directement en REST.
http://docwiki.embarcadero.com/RADStudio/en/
Developing_DataSnap_Applications
© Patrick Prémartin / developpeur-pascal.fr
29. SOLUTIONS
RAD Server : l’évolution ultime de ces frameworks
pour gérer des API mais aussi se substituer aux
serveurs de fichiers habituels en traitant aussi les
éléments statiques.
https://www.embarcadero.com/products/rad-
server
http://docwiki.embarcadero.com/RADStudio/en/
RAD_Server_Overview
© Patrick Prémartin / developpeur-pascal.fr
30. SOLUTIONS
En plus de la documentation proposée par
Embarcadero, RAD Server bénéficie d’un livre que
lui a consacré David Intersimone en 2019 : The
Complete Guide to RAD Server.
https://delphi-books.com/en/The-Complete-
Guide-to-RAD-Server.html
De nombreux articles et vidéos sont disponibles
sur YouTube et les blogs d’Embarcadero.
© Patrick Prémartin / developpeur-pascal.fr
31. SOLUTIONS
Des outils ont été développés pour étendre ses
fonctionnalités ou en simplifier la configuration.
« Auto Tables for RAD Server » crée une API REST
pour faire du CRUD sur une base de données et
génère à la fois les infos pour RAD Server mais
aussi l’application cliente pour consommer l’API.
https://github.com/FMXExpress/AutoTablesForR
ADServer
© Patrick Prémartin / developpeur-pascal.fr
32. SOLUTIONS
A titre d’exemple, un projet de mise à jour de
tables d’une base de données WordPress a été
généré. Il se trouve sur
https://github.com/FMXExpress/WordPressDBCR
UDRESTClientServer
© Patrick Prémartin / developpeur-pascal.fr
33. SOLUTIONS
Pour une alternative à DataSnap il faut se tourner
vers Aurelius et Xdata de TMS Software ou
mORMot (1 ou 2) de Synopse.
John Kouraklis a publié un livre sur Aurelius et son
fonctionnement pour faire de l’ORM :
https://delphi-books.com/en/Introducing-Delphi-
ORM.html
© Patrick Prémartin / developpeur-pascal.fr
34. SOLUTIONS
Les alternatives open source à WebBroker ou RAD
Server ne manquent pas. Beaucoup de projets
sont basés sur le composant TIdHTTPServer du
projet Indy.
La différence entre eux est de savoir s’ils sont
maintenus et dans quelle mesure ils sont simples
ou complexes à utiliser et déployer.
© Patrick Prémartin / developpeur-pascal.fr
35. SOLUTIONS
Les deux plus visibles sont :
- Delphi MVC Framework de Daniele Teti
https://github.com/danieleteti/delphimvcfram
ework
- MARS de Andrea Magni.
https://github.com/andrea-magni/MARS
© Patrick Prémartin / developpeur-pascal.fr
36. SOLUTIONS
Une dizaine d’autres sont trouvables sur GitHub,
souvent non maintenus donc à utiliser avec
prudence et il y a aussi :
- Brook Framework
https://github.com/risoflora/brookframework
- Horse
https://github.com/HashLoad/horse
- Kitto
https://github.com/EtheaDev/kitto
© Patrick Prémartin / developpeur-pascal.fr
37. SOLUTIONS
Delphi MVC Framework est à ma connaissance le
plus utilisé.
C’est un serveur RESTFul qui permet également
de gérer des notifications PUSH et du JSON-RPC.
De nombreux exemples l’accompagnent et un
livre est dispo : https://delphi-
books.com/en/DelphiMVCFramework.html
© Patrick Prémartin / developpeur-pascal.fr
38. SOLUTIONS
Etrangement il n’y a pas beaucoup de solutions
pour faire des sites web et des serveurs intégrés
dans le même projet.
A ma connaissance il n’y en a que 2 :
- IntraWeb
https://www.atozed.com/intraweb/
- UniGUI
http://unigui.com
© Patrick Prémartin / developpeur-pascal.fr
39. SOLUTIONS
Ces 2 produits fonctionnent sur le même
principe: proposer un concepteur de fiches dans
Delphi et générer le HTML correspondant à
chaque fiche au moment où l’internaute accède à
la page.
On obtient un serveur qui gère un site avec des
pages dynamiques.
© Patrick Prémartin / developpeur-pascal.fr
40. SOLUTIONS
Les projets sont peuvent se compiler sur
différentes plateformes et dans différents modes
selon l’outils.
Pour le développeur tout se fait comme si on
était en local dans un programme classique, y
compris sur l’accès aux données et au contenu du
disque dur du serveur.
© Patrick Prémartin / developpeur-pascal.fr
41. SOLUTIONS
Pour l’utilisateur le résultat est très différent.
UniGUI génère des applications basées sur la
librairie ExtJS de Sencha.
IntraWeb génère des pages web, éventuellement
mixées avec des templates préexistants afin
d’être totalement libre du design du site.
© Patrick Prémartin / developpeur-pascal.fr
42. SOLUTIONS
De base UniGUI est plus destiné à reproduire en
web des logiciels de gestion classiques.
IntraWeb est nettement plus souple. On peut y
ajouter nos composants ou en prendre ailleurs,
utiliser les frameworks CSS ou Javascript dont on
a besoin, se mélanger à un site Bootstrap ou un
CMS.
© Patrick Prémartin / developpeur-pascal.fr
43. SOLUTIONS
Côté navigateur, c’est du HTML, du CSS et du
Javascript qui s’exécutent, du coup, il y avait peu
de chances de retrouver Delphi sur ce marché
jusqu’à la sortie de TMS Web Core par TMS
Software.
https://tmssoftware.com/site/tmswebcore.asp
© Patrick Prémartin / developpeur-pascal.fr
44. SOLUTIONS
L’approche de TMS Software est assez simple.
On code nos écrans avec des composants visuels
fournis avec TMS Web Core ou leur librairies FNC
de composants aussi compatibles avec les projets
VCL, FMX et Lazarus.
Lorsqu’on compile le projet, Pas2JS convertit le
code source Pascal en Javascript.
© Patrick Prémartin / developpeur-pascal.fr
45. SOLUTIONS
L’inconvénient, c’est qu’il faut séparer le code
d’interface utilisateur du code serveur.
En soi, l’approche MVC n’est pas forcément
mauvaise, mais c’est un changement d’habitude
pour les développeurs VCL/FMX qui codent dans
les événements sans séparer les couches
interface et applicatives.
© Patrick Prémartin / developpeur-pascal.fr
46. SOLUTIONS
Autre changement d’habitude : le code serveur
est forcément dans un autre projet
(éventuellement dans un autre langage).
On est sur un navigateur, on n’a pas de driver
pour accéder à des bases de données distantes
(mais on peut stocker des choses en local).
Tout se fait par API.
© Patrick Prémartin / developpeur-pascal.fr
47. SOLUTIONS
REST et Xdata (techno TMS Software) sont gérés
pour l’accès aux données.
On peut ajouter notre code Javascript ou créer
des composants (visuels ou pas) si besoin. Le
framework est totalement ouvert.
L’utilisation de templates est aussi possible.
© Patrick Prémartin / developpeur-pascal.fr
48. SOLUTIONS
TMS Web Core fournit ce qu’il faut pour le
débogage, en Pascal, directement depuis la
console développeur des navigateurs.
L’outil permet de générer des pages web, des
applications web, des programmes Electron et
d’autres types de déploiements.
© Patrick Prémartin / developpeur-pascal.fr
49. SOLUTIONS
De nombreux exemples et démos sont proposés.
Un livre du Dr Holger Flick est paru en 2020 pour
détailler le fonctionnement de TMS Web Core et
l’utilisation de ses nombreux composants.
https://delphi-books.com/en/TMS-WEB-Core-
Web-Application-Development-with-Delphi.html
© Patrick Prémartin / developpeur-pascal.fr
50. ALTERNATIVES
Il existe d’autres outils utilisant le Pascal pour
créer des pages ou applications web.
L’implémentation du Pascal et les librairies
fournies ne sont généralement pas aussi étoffées
que celles de Delphi mais c’est suffisant pour du
web.
© Patrick Prémartin / developpeur-pascal.fr
51. ALTERNATIVES
Quartex Pascal est en phase de test et semble
très prometteur.
https://quartexpascal.wordpress.com
© Patrick Prémartin / developpeur-pascal.fr
52. ALTERNATIVES
Smart Mobile Studio est un environnement de
développement en Pascal. Lors de la compilation
les projets sont exportés en HTML5, CSS et
Javascript.
https://smartmobilestudio.com
© Patrick Prémartin / developpeur-pascal.fr
53. ALTERNATIVES
Oxygene permet de développer en Pascal pour
plusieurs plateformes cibles dont WebAssembly.
Par conséquent on peut développer des
applications web et les exécuter dans un
navigateur.
https://www.elementscompiler.com/elements/ox
ygene/
© Patrick Prémartin / developpeur-pascal.fr
54. MIGRER UN
© Patrick Prémartin / developpeur-pascal.fr
Comme pour les mises à niveau depuis
d’anciennes version il existe des outils d’aide à la
migration vers des solutions web depuis un projet
VCL.
Ces outils font du remplacement de composants,
propriétés et blocs de codes par leurs équivalents
dans le framework cible choisi.
55. MIGRER UN
© Patrick Prémartin / developpeur-pascal.fr
Un gros travail reste nécessaire si vous utilisez des
composants « non standards » ou peu répandus
et d’une façon générale pour s’assurer que tout
fonctionne pendant et après migration.
Le 100% automatique n’existe pas.
56. MIGRER UN
© Patrick Prémartin / developpeur-pascal.fr
Migration d’un projet VCL vers UniGUI
https://delphiparser.com/product-category/vcl-
to-unigui-migration-wizard/
Migration d’un projet VCL vers TMS Web Core
http://midaconverter.com/?page_id=3244
Migration d’un projet VCL vers IntraWeb
http://midaconverter.com/?page_id=2839
57. CONCL
© Patrick Prémartin / developpeur-pascal.fr
Nous l’avons vu, pour faire des serveurs d’API,
servir des pages web comme les générer à la
volée ou sous forme de purs fichiers
HTML/CSS/Javascript, Delphi est une fois de plus
une option à envisager.
58. CONCL
© Patrick Prémartin / developpeur-pascal.fr
Le principe « 1 équipe, 1 langage, 1 base de code,
toutes les plateformes » se vérifie (hors écrans).
C’est le gros avantage du langage Pascal et de sa
multitude d’implémentations disponibles.
59. CONCL
© Patrick Prémartin / developpeur-pascal.fr
La mise en ligne en format web de projets VCL ou
FireMonkey nécessitera quand même des
adaptations importantes car les fiches ne sont
pas directement exploitables (pour le moment).
Des outils vous aideront dans cette tâche mais
une réflexion sur le fonctionnement de vos
logiciels en web sera toujours à faire.
60. PLUS SUR
© Patrick Prémartin / developpeur-pascal.fr
Pour des ressources complémentaires,
télécharger cette présentation et accéder aux
exemples, rendez-vous sur :
https://developpeur-pascal.fr/p/_a000-
webinaire-du-24-juin-2021-faire-des-applications-
web-avec-delphi.html
Et la rubrique « web » de
https://developpeur-pascal.fr
61. (RE)VOIR
© Patrick Prémartin / developpeur-pascal.fr
La rediffusion de ce webinaire sera disponible sur
la chaîne YouTube de Barnsten :
https://www.youtube.com/c/BarnstenFrance/vid
eos
Elle le sera également dans la rubrique
« webinaires Delphi » de Serial Streameur sur
https://serialstreameur.fr/webinaire-
20210624.php
62. PROCHAINS
© Patrick Prémartin / developpeur-pascal.fr
Sur https://www.twitch.tv/patrickpremartin
Dimanche 27 juin à 14h30 pour travailler sur le
jeu vidéo Colblor, son viewer de tournois et les
parties en réseau.
Le week-end du 10 et 11 juillet dans le cadre de
l’opération « Wave in Paris ».
Lors d’une game jam d’août ou à partir de
septembre pour du codage en direct.
63. PROCHAINS
© Patrick Prémartin / developpeur-pascal.fr
Sur Zoom si vous participez à l’une des semaines
d’initiation à FMX pour développeurs VCL
planifiées jusqu’en septembre ou à l’occasion
d’une formation personnalisée.
En live lors de la prochaine conférence
Embarcadero / Barnsten ou de rencontres entre
développeurs lorsque que ce sera possible.
64. LIVRES
© Patrick Prémartin / developpeur-pascal.fr
Des livres sur le développement avec Delphi
sortent régulièrement. Voici les 3 derniers :
• Delphi Event-based and Asynchronous
Programming
• Object Pascal Handbook (Delphi 10.4 Sydney
Edition)
• Delphi 10.3 POO en environnement Windows
Liste complète sur https://delphi-books.com/
65. LIVRES
© Patrick Prémartin / developpeur-pascal.fr
Plusieurs livres ont été annoncés et paraîtront
prochainement :
- Hand on with Delphi (volume 3) (chez TMS
Software)
- Fearless Cross-Platform Development with
Delphi (chez Packt)
A parution sur https://delphi-books.com/
66. LIVRES
© Patrick Prémartin / developpeur-pascal.fr
Chez votre marchand de journaux retrouvez
début juillet le numéro 247 de Programmez! avec
un article de Grégory Bersegeay qui propose un
pas à pas pour créer un jeu vidéo de plateforme
suite à sa diffusion de FMX Platformer en février.
https://github.com/gbegreg
https://www.youtube.com/watch?v=VnjAxhIl-1k