Du thème du magazine à la pratique des projets
Pages de services et techniques pertinentes pour l'article
Dans de nombreuses entreprises, Delphi Unternehmensanwendungen fonctionnent de manière fiable depuis des années : saisies proches de la production, planification/ordonnancement, stock, expédition, service, assurance qualité ou processus administratifs centraux. Ces systèmes sont rarement « jolis », mais ils sont souvent extrêmement précieux : ils reflètent des processus qui ne se laissent pas contraindre par un logiciel standard. C’est précisément pour cette raison que Delphi reste pertinent en pratique : non comme une mode, mais comme base stable pour des logiciels d’entreprise sur mesure, nés sous pression temporelle puis développés et enrichis pendant des années.
Pour la direction IT et l’administration, la question n’est pas tant « Delphi : oui ou non ? », que : Comment maintenir le système opérationnel, sécurisé et modifiable, sans paralyser l’activité par une reconstruction en Big-Bang ? Cet article situe les paysages typiques Delphi et présente des pistes de modernisation pragmatiques — axées sur l’exploitation, les données, les interfaces, la maintenabilité, la sécurité et la migration. Sans entrer dans les entrailles des frameworks, mais avec des décisions concrètes qui comptent au quotidien.
Warum Delphi in Unternehmen „klebt“ – und warum das nicht automatisch schlecht ist
De nombreuses applications Delphi ont été développées à une époque où le logiciel de bureau (VCL, c’est‑à‑dire l’interface classique Windows) était le moyen le plus rapide pour digitaliser des processus. Il en est résulté des systèmes avec une forte densité de logique métier, des liens étroits avec la base de données et de nombreux cas particuliers « mineurs » qui, pris ensemble, soutiennent l’exploitation. Cela explique la longévité : la logique métier est éprouvée — non pas par des tests unitaires, mais par des années d’exploitation en production.
Le risque se situe le plus souvent non pas dans Delphi en tant que langage, mais dans les aspects adjacents : anciens accès aux données (p. ex. BDE, die Borland Database Engine), dépendances 32 bits, chiffrement obsolète, interfaces peu claires, manque d’observabilité (monitoring/logging), modèles d’autorisations imprécis ou stratégies de mise à jour inexistantes. Lorsque ces domaines périphériques sont modernisés, une application Delphi peut rester un composant très fiable des solutions numériques de l’entreprise.
Typische Ausgangslagen: So sehen Delphi Unternehmensanwendungen in der Realität aus
Quiconque reprend ou doit stabiliser un paysage Delphi rencontre fréquemment des formes mixtes. Pour la planification et le budget, il est utile de nommer clairement la situation de départ :
- Client desktop monolithique avec accès direct à la base de données (souvent développé historiquement, parfois avec une logique de client lourd).
- Client‑serveur avec services : Windows- und Linux-Services ou un Linux‑daemon qui exécute des tâches d’arrière‑plan (importations, exportations, lots d’impression, e‑mail, planifications).
- Hybride : le desktop reste dominant, avec en complément une API REST pour portails ou intégrations tierces (REST = interface basée sur HTTP fournissant le plus souvent des données au format JSON).
- Sources de données multiples : SQL Server/PostgreSQL plus « legacy » (Firebird, fichiers Paradox, DBF, Access).
- Terminalserver/RDS ou infrastructure de Virtual Desktop (VDI) pour exploitation centralisée, parfois avec connexion de périphériques (scanners, balances, imprimantes d’étiquettes).
Chacune de ces variantes peut fonctionner – mais les priorités de modernisation diffèrent. Un monolithe desktop nécessite souvent d’abord un découplage et des interfaces plus claires. Une architecture de services requiert une exploitation soignée, une gestion des versions et de la supervision. Et pour les formes mixtes, la stratégie de données et d’interfaces devient le levier central.
Modernisation sans Big Bang : logique décisionnelle pour l’IT et les décideurs
La décision la plus importante est : Qu’est‑ce qui doit être stabilisé à court terme, et qu’est‑ce qui peut être modernisé étape par étape ? Une réécriture complète comporte de forts risques : travail parallèle sur les concepts métier, double maintenance, fenêtres de migration, et souvent des « fonctions périphériques » sous‑estimées (impressions spéciales, boucles de correction, processus d’urgence). En même temps, il ne faut pas ignorer les véritables bloqueurs (p. ex. BDE, dépendances non patchables, sécurité non auditable).
En pratique, une feuille de route en trois volets fait ses preuves :
- Stabiliser : processus de build, releases reproductibles, journalisation propre, tests de backup/restore, améliorations rapides en matière de sécurité.
- Découpler : couches claires (p. ex. Layer-3-architecture : UI, logique métier, accès aux données), définir les interfaces, moderniser l’accès aux données.
- Étendre : REST-APIs, portails, nouveaux clients, nouvelles bases de données, multi-plateforme, capacité multi-tenant – là où cela a du sens fonctionnel et économique.
La clé est que chaque étape livre un état exploitable et ne se contente pas de produire des « travaux préparatoires ». Ainsi, la capacité des processus est préservée et les changements restent contrôlables.
Delphi Modernisation : où se situent réellement les principaux risques
Le terme « modernisation » est souvent utilisé de manière trop générale. Pour l’exploitation, cinq zones de risque sont typiquement décisives :
1) Accès aux données et paysage des pilotes (BDE, ODBC, clients obsolètes)
Le BDE-remplacement est un classique : tant que la Borland Database Engine est en exploitation productive, des conflits apparaissent avec les versions récentes de Windows, les pilotes, les autorisations et les lignes de base de sécurité. De plus, l’exploitation devient fragile car des composants ne sont plus maintenus. Ici, BDE-remplacement avec liaison native est souvent l’étape pragmatique de modernisation : une couche d’accès aux données moderne dans Delphi qui connecte proprement différentes bases de données et rend plus gérables les questions de pilotes et de pooling.
Important pour l’IT : un BDE-remplacement ne se limite pas à « remplacer le pilote ». Les travaux typiques associés sont des adaptations de dialecte SQL, les frontières de transaction (transaction = modifications de base de données corrélées qui sont soit prises en totalité soit pas du tout), la gestion des erreurs, l’encodage/Unicode et le profilage de performance.
2) Dépendances 32 bits et migration vers 64 bits
La migration vers le 64 bits échoue rarement à cause de Delphi lui‑même, mais à cause de composants externes : wrappers de pilotes d’impression, anciennes bibliothèques COM/ActiveX, SDK matériels spécifiques ou clients de base de données obsolètes. Pour la planification, un inventaire des dépendances est obligatoire : quelles DLL sont chargées ? Quels composants ne sont pas compatibles 64 bits ? Existe‑t‑il des remplaçants ou la fonctionnalité peut‑elle être externalisée dans un processus séparé (p. ex. en tant que service) ?
Une approche propre consiste à introduire d’abord le 64 bits là où cela apporte des avantages opérationnels (besoins en mémoire, grands volumes de données, exigences des plateformes modernes) — et à encapsuler temporairement le 32 bits pour les fonctions périphériques, plutôt que de bloquer l’ensemble du client.
3) Migration Unicode et cohérence des données
Unicode signifie : les textes ne sont plus stockés dans des pages de codes locales, mais dans un jeu de caractères unifié (typiquement UTF‑16/UTF‑8 selon le niveau). Dans des applications Delphi existantes, cela concerne les anciens champs de données, les formats d’export, les templates d’impression et les interfaces. Les problèmes n’apparaissent souvent qu’en exploitation : caractères spéciaux dans les noms, adresses internationales, textes d’articles, contenus d’e-mails.
Pour les entreprises, il est crucial de vérifier de bout en bout : collation de la base de données, import/export (CSV, XML, JSON), formats EDI, génération de PDF, SMTP/IMAP, et aussi l’affichage dans l’UI. Une migration Unicode est réalisable, mais elle nécessite des tests sur des données réelles et des critères d’acceptation clairs.
4) Schnittstellen und Integrationen (REST, ERP, DMS, Identity)
Beaucoup de systèmes Delphi sont des « îlots », car l’accès direct à la base de données a historiquement été la voie la plus rapide. Aujourd’hui, il faut des intégrations propres : ERP, DMS, CRM, portails, raccordement aux machines. Il a fait ses preuves de déléguer la logique d’intégration dans des services REST ou des services d’arrière-plan. Une API Delphi REST et serveur REST n’est pas une fin en soi, mais un composant d’exploitation : endpoints versionnés, authentification claire, journalisation contrôlée et partages de données limités.
Par ailleurs, la gestion des identités devient pertinente : SAML 2.0 (single sign-on entre l’identité de l’entreprise et l’application) ou OAuth2/OpenID Connect, selon le contexte. La décision concerne non seulement l’application, mais aussi l’exploitation, l’auditabilité et les processus d’offboarding.
5) Betrieb: Updates, Monitoring, Recovery
Une application n’est utile en entreprise que dans la mesure où son exploitation est maîtrisée. Faiblesses typiques : installations manuelles, absence de stratégie de rollback, quasi-absence de télémétrie et responsabilités floues en cas d’incident. Moderniser ici ne signifie pas « Cloud », mais : déploiements reproductibles, configuration traçable et santé du système mesurable.
Architektur, die im Alltag hilft: Layer-3, klare Grenzen, weniger Seiteneffekte
Quand des projets Delphi croissent pendant des années, la logique de l’UI se mélange souvent aux règles métier et à l’accès aux données. Cela rend les modifications risquées : un nouveau champ dans un dialogue entraîne soudain des effets secondaires dans les imports ou les reports. L’architecture Layer-3 (présentation, logique métier, accès aux données) est ici moins une théorie qu’un moyen pratique pour rendre les changements prévisibles.
L’important est la direction des dépendances : l’UI peut utiliser des fonctions métier, mais le métier ne doit pas connaître le nom des boutons. L’accès aux données fournit des objets/données, mais ne décide pas des règles fonctionnelles. Cela facilite :
- des tests ciblés des règles métier, sans avoir à lancer l’UI,
- le remplacement pas à pas de l’accès aux données (p. ex. de BDE vers BDE-Ablosung mit nativer Anbindung),
- l’exploitation parallèle de plusieurs interfaces (Desktop et portail),
- des releases plus stables, car les effets secondaires sont réduits.
Pour les décideurs, c’est un argument de coût : pas parce que l’architecture est « jolie », mais parce qu’elle rend la maintenance plus prévisible.
Moderniser les bases de données : FireDAC, PostgreSQL, SQL Server — et ce que cela implique pour l’exploitation
Les décisions concernant les bases de données sont souvent historiques dans les applications d’entreprise Delphi. En exploitation, l’essentiel est : sauvegarde/restauration, monitoring, HA/failover, gestion des correctifs de sécurité et gestion des droits. L’accès aux données doit en être compatible.
FireDAC comme couche de standardisation
FireDAC peut servir de standardisation technique, car la gestion des connexions, le binding des paramètres, les transactions et le choix des pilotes deviennent plus cohérents. Pour l’exploitation, sont importants : le connection pooling (réutilisation des connexions), les timeouts, et une classification claire des erreurs (par ex. « Deadlock », « Timeout », « Unique Constraint »).
PostgreSQL en production avec Delphi : opportunités et écueils
PostgreSQL est souvent choisi lorsque les standards ouverts, de bonnes fonctionnalités SQL et de fortes capacités d’exploitation sont requis. Points typiques lors d’une migration :
- Types de données : date/heure, Boolean, UUID, JSONB — utiliser proprement dans le modèle de données, plutôt que de tout stocker en texte.
- Isolation des transactions : cohérence vs. parallélisme ; pertinent pour la logique de comptabilisation et le traitement par lots.
- Stratégie d’index : la performance ne vient rarement de « plus de CPU », mais d’index appropriés et de requêtes propres.
Il est important pour les administrateurs que l’application n’ait pas besoin de droits « Superuser », mais fonctionne avec des rôles minimaux. C’est un point clé pour les audits et les contrôles de sécurité.
Moderniser la connexion à SQL Server
Dans de nombreux environnements, SQL Server est la norme. Il s’agit alors moins de migration que d’une utilisation propre : requêtes paramétrées (contre les injections SQL), isolation appropriée, usage de procédures stockées là où la gouvernance l’exige, et séparation claire entre l’identifiant applicatif et les identifiants admin. En pratique, il vaut aussi la peine d’examiner les collations (tri/comparaison de caractères), car elles sont pertinentes pour les enjeux Unicode et les comparaisons (p.ex. distinction majuscules/minuscules).
REST-API à mettre en place : permettre des intégrations sans « ouvrir » la base de données
Lorsque des portails, des processus mobiles ou des tiers doivent être connectés, l’accès direct à la base de données est généralement la pire option : difficile à versionner, risqué pour l’intégrité des données, peu auditable. Une REST-API crée une couche d’intégration contrôlée. Elle définit quelles données sont disponibles, dans quel format et selon quelles règles.
Pour l’exploitation et la sécurité, quatre éléments sont décisifs :
- Authentification : basée sur des tokens, idéalement reliée à des identités centralisées (p.ex. via SAML 2.0/OIDC dans un gateway en amont, selon l’architecture).
- Autorisation : vérification des droits sur des objets métiers, pas seulement « l’utilisateur peut utiliser l’endpoint ».
- Versioning : endpoints ou versions de payload, pour que le portail et le backend restent déployables indépendamment.
- Rate Limits et logging : protection contre les abus et diagnostic fiable en cas d’incident.
Dans de nombreux réseaux d’entreprise, ces services fonctionnent derrière un reverse proxy (p.ex. nginx). Le traitement des en-têtes Forwarded doit alors être propre (IP client réelle, détection HTTPS, bases d’URL correctes), sinon les logs, redirections et règles de sécurité seront incorrects. Ce n’est pas un détail, mais pertinent pour l’analyse d’incidents et la conformité.
Windows-Service et Linux-services : exploiter correctement les processus en arrière-plan
Delphi est utilisé en entreprise non seulement pour des clients de bureau, mais aussi pour des services : imports de données, planificateurs, envoi d’e-mails, génération de PDF, workers d’interface. Pour l’exploitation, l’important est qu’un service ne « fonctionne pas n’importe comment », mais qu’il puisse être démarré, arrêté et observé de manière contrôlée.
Liste de contrôle pour les composants Delphi aptes à être exécutés en tant que service
- Configuration externe : pas de chemins/hosts « figés » dans le binaire ; configuration via fichier ou variables d’environnement, avec documentation claire.
- Arrêt contrôlé (Graceful Shutdown) : terminer proprement les jobs en cours ou les interrompre proprement, afin d’éviter des enregistrements partiels.
- Idempotence : l’exécution répétée d’un job ne doit pas générer de doublons (idempotence = même appel, même résultat).
- Journalisation avec corrélation : une ID par tâche/transaction, pour permettre de rassembler les logs à travers plusieurs composants.
- Monitoring : endpoints de santé ou au minimum des métriques vérifiables (par ex. « dernière exécution », « taux d’erreur », « file d’attente »).
Bei Linux-Services (z. B. als Daemon unter systemd) kommen Paketierung, Rechtekonzept und Dateisystem-Layout hinzu. Entscheidend ist, dass die Service-Identität minimal berechtigt ist und Secrets (Passwörter, Tokens) nicht als Klartext im Deployment liegen. Je nach Umgebung kann ein Secret-Store oder zumindest ein abgesicherter Konfigurationspfad nötig sein.
Sécurité et conformité : ce qui doit typiquement être traité pour les applications Delphi
De nombreuses applications en place sont fonctionnellement correctes, mais la sécurité était évaluée différemment « à l’époque ». Aujourd’hui, les exigences sont plus claires : patchabilité, traçabilité, chiffrement, contrôle d’accès. Mesures typiques avec un rapport bénéfice/risque élevé :
- Chiffrement des transports : TLS pour les services et la communication API, pas de segments HTTP non chiffrés dans le réseau interne « par habitude ».
- Gestion des mots de passe et des secrets : pas de mots de passe dans des fichiers INI sans protection ; si possible, une gestion d’identité centrale et des tokens.
- Audit-Logging : qui a effectué quelle action critique (données de base, validations, exportations), avec horodatage et identité.
- Modèle de droits : modéliser les rôles et permissions au niveau métier ; séparer les fonctions d’administration ; vérifier l’isolation des mandants.
- Cryptographie pragmatiquement propre : pas de solutions maison ; des algorithmes établis comme AES (symétrique) et des fonctions de hachage à jour, plus protection d’intégrité.
Important : la sécurité n’est pas que du code. Elle concerne aussi l’exploitation (droits d’accès sur les serveurs, conservation des logs, chiffrement des sauvegardes) et les processus (réponse aux incidents, mises à jour régulières, fin de vie des composants).
Planifier la migration : du « système hérité » vers une plateforme adaptée à la feuille de route
Si une application Delphi doit être poursuivie stratégiquement, elle a besoin d’une feuille de route qui relie les aspects techniques et organisationnels. Une approche pragmatique commence par la transparence :
1) Inventaire technique qui reflète l’exploitation et les risques
- Liste des composants (versions Delphi, bibliothèques tierces, pilotes, services, installateurs)
- Bases de données et flux de données (import/export, traitements batch, rapports)
- Interfaces (fichiers, TCP/IP, REST, SOAP, e‑mail, ERP/DMS/CRM)
2) Définir une vision cible, sans la surcharger
Une vision cible est utile si elle facilite les décisions. Elle devrait décrire comment seront produits les releases à l’avenir, à quoi ressembleront les interfaces, comment l’accès aux données sera standardisé et comment le fonctionnement sera surveillé. Elle ne doit pas signifier « tout refondre ». Souvent, une vision cible avec trois à cinq garde-fous suffit : p. ex. FireDAC comme standard, REST pour les intégrations, des services avec monitoring, connexion d’identité, couches claires.
3) Mise en œuvre par paquets découpables
Les paquets de modernisation doivent être délimités fonctionnellement et techniquement : « retirer BDE et standardiser l’accès aux données », « API REST pour les cas d’utilisation de portails », « Client 64‑bits plus capsule de compatibilité », « durcir l’exploitation des services ». Chaque paquet nécessite des critères d’acceptation : stabilité mesurable, performance définie, processus d’exploitation documentés.
C# et Delphi ensemble : quand portails et services se développent parallèlement aux applications Desktop
Dans de nombreuses entreprises, Delphi est en place dans le système central, tandis que les portails ou les nouveaux services d’intégration voient plutôt le jour en C#/.NET. Ce n’est pas contradictoire tant que l’architecture sépare proprement : Delphi peut continuer à assurer de manière stable le système Desktop proche des processus, tandis que C# Portale ou C# Services couvrent les exigences Web modernes. L’essentiel est la langue commune des systèmes : contrats de données clairs, identités cohérentes, versions d’interface traçables et un monitoring propre au-delà des frontières système.
Pour la direction informatique, c’est souvent la voie la plus économique : la valeur ajoutée existante reste disponible, tandis que de nouveaux canaux peuvent être créés sans une migration complète.
Ce que vous devriez préparer en interne : documentation, manuel d’exploitation, transfert de connaissances
Les systèmes Delphi reposent souvent sur quelques personnes. C’est un risque qui peut être réduit avec un effort raisonnable. Les mesures particulièrement efficaces sont :
- Manuel d’exploitation : services, ports, configuration, Cron/Scheduler, incidents typiques, étapes de récupération.
- Notes de version : ce qui change, quelles migrations de base de données s’exécutent, comment le rollback est possible ?
- Catalogue d’interfaces : points de terminaison / formats, échanges de fichiers, personnes de contact, versions.
- Vue d’ensemble du modèle de données : tables/entités centrales, clés, logique multi‑locataire, archivage.
Ce n’est pas de la bureaucratie, mais la base d’un fonctionnement planifiable, d’un traitement des incidents plus rapide et d’une moindre dépendance aux individus.
Conclusion : les applications d’entreprise Delphi ne sont pas le problème — les trajectoires de modernisation manquantes le sont
Les applications d’entreprise Delphi peuvent, pendant des années, constituer un noyau fiable et économique pour des solutions logicielles proches des processus. Le point critique n’est rarement le langage, mais la somme des facteurs hérités, des interfaces floues, de l’absence de durcissement opérationnel et des mécanismes de sécurité non entretenus. En planifiant la stabilisation, le découplage et l’extension comme une feuille de route contrôlée, on évite le Big Bang risqué – et on obtient malgré tout des intégrations REST, la compatibilité 64 bits, des accès aux données propres et une exploitation conforme aux exigences actuelles.
Si vous souhaitez évaluer techniquement votre paysage Delphi et définir une trajectoire de modernisation solide pour l’accès aux données, les interfaces et l’exploitation, parlez-nous:
Discuter d’un projet ou d’une initiative de modernisation avec Net-Base.
Étape suivante
Lorsque ce sujet devient un projet concret, l'architecture, l'existant et l'exploitation doivent être examinés ensemble dès le départ.
Nous n'intervenons pas seulement sur des questions ponctuelles, mais aussi lorsque des fragments de code source, des problématiques liées aux systèmes legacy ou des concepts de portail doivent se transformer en un projet d'entreprise robuste.
- L'état des lieux, l'état cible et les risques techniques sont évalués conjointement.
- REST, l'accès aux données, les portails et le déploiement ne sont pas repoussés en tant que conséquences ultérieures.
- Vous identifiez tôt quelle voie est viable sur le plan économique et opérationnel.