Bonjour,
Un sujet "Architecture N-Tiers avec Delphi 10.2 Tokyo" qui va m'occuper longtemps.
Possible que l'on passe en "10.3 Rio" si certains serveurs sont en Linux
Le Contexte
Notre ERP Maison développé depuis 1999 en Delphi (5 puis XE2) sera remplacé par un ERP du marché dit plus "standard" c'est à dire SAP S/4 qui ne fait pas grand chose donc faut lui adjoindre le WMS REFLEX, PIM & SIM ContentServe ... le tout lié par un EAI / ESB+ETL
Pas un seul partenaire n'ose assumer le rôle de notre outil d'étiquetage.
Juste 7-8 millions d'étiquette par an [chiffre de 2018] sur un peu moins de 10 sites mais ce qui fait peur c'est 3 fois plus dans cinq ans sur plus de 70 sites
Actuellement c'est petit programme Delphi XE2 utilisé en local(*) connecté en direct sur ORACLE avec plein de règle en dur
(* local ou via CITRIX qui lui nous gère très bien le montage d'imprimante même depuis la Chine ou l'Inde)
Tout ça c'est fini
Je dois mettre en place un Serveur d'Etiquetage utilisé via WebService (par REFLEX) via un Portail (FMX, CITRIX refonte en Web pour 2021) et le plus intéressant un Designer (FMX, CITRIX refonte en Web pour 2022) et avec aucune règle en dur (tout sera au maximum déporté dans l'EAI, j'espère éviter de scripter de trucs)
L'un des chemins possible c'est
Un utilisateur a son navigateur Internet (Poste Client) connecté sur Reflex WEB (server web A) invoque le WS d'étiquetage (serveur DataSnap 1) qui lui doit récupérer les formats (directement sur Oracle/MYSQL) et compléter les données via un WS de l'EAI (server Web B) qui lui même devra consulter SAP et sa base HANA (un serveur SAP 1) pour ensuite imprimer des milliers d'étiquette à l'heure en simultané sur plusieurs imprimantes (une par format de papier) du poste Client où était ouvert la page Web Reflex
On va éviter qu'un serveur connaissent les 50-70 imprimantes SATO du Parc qui montera bien à 500 dans quelques années, entre la France, l'Italie, l'Allemagne, la Chine, L'Inde et un tas d'autres pays à l'avenir
Car cela serait à notre équipe de gérer le recensement des imprimantes à travers le Monde
La Question
Ma question c'est quelle(s) Architecture(s) N-Tiers est la plus pertinente en avec Delphi 10.2 Tokyo ?
Dans une ancienne boite, je n'ai expérimenté que le DCOM qui a été remplacé par du DataSnap (jouant juste le rôle d'un Transport entre un objet COM lancé en local sur le client et lancé en local sur le serveur, c'est DS qui assure le transport en JSON et c'est réinjecté dans la couche COM) pour les applications c'était comme si rien ne s'était passé
A mon grand regret, je n'ai participé à ce développement, j'ai aidé sur des bricoles mais pas pu expérimenté tout ça !
Principalement, le système aura des petites requêtes très nombreuses.
Pour tout ce qui est exposé à un tiers, j'ai choisi REST qui semble bien intégré à DataSnap
Pour ceux qui pratique le N-Tiers et qui ont connu CORBA, DCOM, SOAP, DataSnap ...
Est-ce qu'il y a mieux qu'un WS REST pour ce qui est de la communication interne entre les clients et serveurs (non exposés aux tiers).
Le but étant d'avoir un temps de réponse le plus court possible évidemment et beaucoup d'asynchrone !
J'aimerais bien expérimenté autre chose comme la propriété RemoteServer du TClientDataSet (Est-ce encode d'actualité ou c'est out-of-date ?)
Surtout qu'à certaines étapes, cela sera plutôt du binaire qui sera envoyé comme la matrice d'un code barre (oui, une suite de 0 et 1 peut se convertir en Base64 et s'envoyer en texte mais si il y a plus original, je suis curieux)
Pour le moment, Je suis entrain de dépoussiérer un code maison pour gérer le Code128 ABC qui transforme la donnée en une matrice 0/1 représentant les barres, cela pourra ainsi être le même code qui calcul le code barre mais VCL.Canvas ou FMX.Canvas pour l'impression et l'autre pour l'aperçu
Après même opération mais pour un QRCode
Ensuite, j'attaque les différents mécanismes de connexion DB en N-Tiers de Delphi
Partager