Du thème du magazine à la pratique des projets
Pages de services et techniques pertinentes pour l'article
Dans de nombreuses entreprises, des Delphi applications d’entreprise fonctionnent de manière fiable depuis des années : saisies proches de la production, disposition, stock, expédition, service, assurance qualité ou processus administratifs centraux. Ces systèmes sont rarement « jolis », mais ils sont souvent extrêmement précieux — parce qu’ils modélisent des processus qui ne peuvent pas être contraints dans un logiciel standard. C’est précisément pour cela que Delphi reste pertinent dans la pratique : non comme une mode, mais comme une base stable pour des logiciels d’entreprise sur mesure, conçus sous pression temporelle et qui ont ensuite évolué sur plusieurs années.
Pour la direction IT et l’administration, la question n’est pas tant « Delphi : oui ou non ? », mais : Comment maintenir le système opérationnel, sécurisé et modifiable, sans bloquer l’activité par une refonte de type « Big Bang » ? Cet article classe les paysages typiques Delphi et présente des voies de modernisation pragmatiques — avec un focus sur l’exploitation, les données, les interfaces, la maintenabilité, la sécurité et la migration. Sans entrer dans les internals des frameworks, mais avec des décisions concrètes qui comptent au quotidien.
Pourquoi Delphi restent ancrés dans les entreprises – et pourquoi ce n’est pas forcément négatif
De nombreuses applications Delphi ont été développées à une époque où les logiciels de bureau (VCL, c’est‑à‑dire l’interface classique Windows) étaient le moyen le plus rapide de numériser les processus. Il en est résulté des systèmes à forte densité de logique métier, avec des liens étroits à la base de données et de nombreux « petits » cas particuliers qui, pris ensemble, assurent 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 ne se situe généralement pas dans Delphi en tant que langage, mais dans les aspects adjacents : anciens accès aux données (p. ex. BDE, la Borland Database Engine), dépendances 32 bits, chiffrement obsolète, interfaces peu claires, manque d’observabilité (monitoring/logging), modèles d’autorisations imparfaits ou absence de stratégies de mise à jour. Si ces domaines périphériques sont modernisés, une application Delphi peut rester un composant très fiable des solutions numériques d’entreprise.
Situations typiques : à quoi ressemblent les applications d’entreprise Delphi en pratique
Quiconque reprend ou doit stabiliser un paysage Delphi rencontre souvent des formes mixtes. Pour la planification et le budget, il est utile de nommer clairement la situation de départ :
- Client de bureau monolithique avec accès direct à la base de données (souvent issu d’une évolution historique, parfois avec une logique de « Fat Client »).
- Client‑serveur avec services : Windows- et Linux-services ou un Linux‑daemon prend en charge les jobs d’arrière‑plan (importations, exportations, cycles d’impression, e‑mail, planifications).
- Hybride : le client de bureau reste prépondérant, avec en complément une API REST pour portails ou intégrations tierces (REST = interface basée sur HTTP, qui fournit les données principalement au format JSON).
- Multiples sources de données : SQL Server/PostgreSQL plus des « héritages » (Firebird, fichiers Paradox, DBF, Access).
- Terminalserver/RDS ou infrastructure de bureau virtuel (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 de bureau nécessite souvent d’abord un découplage et des interfaces plus claires. Un paysage de services requiert une exploitation propre, une gestion des versions et de la supervision. Et pour les formes hybrides, la stratégie de données et d’interfaces devient le levier central.
Modernisation sans Big Bang : logique de décision pour l’IT et les décideurs
La décision la plus importante est la suivante : que faut‑il stabiliser à court terme, et que peut‑on moderniser pas à pas ? Une reconstruction complète comporte des risques élevés : travail parallèle sur les concepts fonctionnels, double maintenance, fenêtres de migration, et des « fonctions périphériques » souvent sous‑estimées (impressions spéciales, cycles de correction, processus d’urgence). En même temps, il ne faut pas ignorer les bloqueurs réels (par ex. BDE, dépendances non patchables, sécurité non auditable).
Dans la pratique, une feuille de route en trois volets s’avère efficace :
- Stabiliser : processus de build, releases reproductibles, journalisation cohérente, tests de sauvegarde/restauration, mesures 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‑locataire – là où c’est pertinent d’un point de vue métier et économique.
La clé est que chaque étape fournisse un état opérationnel et ne produise pas seulement des « travaux préparatoires ». Ainsi la capacité des processus est maintenue et les changements restent contrôlables.
Delphi Modernisation : où se situent réellement les plus grands risques
Le terme « modernisation » est souvent trop générique. Pour l’exploitation, cinq zones de risque sont typiquement déterminantes :
1) Accès aux données et paysage des pilotes (BDE, ODBC, clients obsolètes)
La BDE-remplacement est un classique : tant que la Borland Database Engine est en production, des conflits apparaissent avec les versions Windows actuelles, les pilotes, les droits et les bases de sécurité. De plus, l’exploitation devient fragile parce que des composants ne sont plus maintenus. Ici, une BDE-remplacement avec connexion 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 et rend les problématiques pilotes/pooling plus gérables.
Important pour l’IT : une BDE-remplacement n’est pas qu’un « changement de pilote ». Les travaux qui suivent sont typiques : adaptations de dialecte SQL, limites de transaction (transaction = modifications liées de base de données qui sont appliquées entièrement ou pas du tout), gestion des erreurs, jeu de caractères/Unicode et profilage de performance.
2) Dépendances 32‑bit et migration vers 64‑bit
La migration vers 64‑bit échoue rarement à cause de Delphi lui‑même, mais à cause de composants externes : wrappers de pilotes d’impression, anciennes bibliothèques COM/ActiveX, SDKs 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‑bit ? Existe‑t‑il un remplacement ou la fonction peut‑elle être déplacée dans un processus séparé (p. ex. en tant que service) ?
Une approche propre consiste à introduire le 64 bits d’abord là où cela apporte un avantage opérationnel (besoin de mémoire, grands volumes de données, exigences des plateformes modernes) – et à encapsuler temporairement le 32 bits pour des fonctions périphériques, au lieu 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‑mail.
Pour les entreprises, il est essentiel 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) Interfaces et intégrations (REST, ERP, DMS, gestion des identités)
Beaucoup de systèmes Delphi sont des « îlots », parce que l’accès direct à la base de données était historiquement la voie la plus rapide. Aujourd’hui, il faut des intégrations propres : ERP, DMS, CRM, portails, connexion aux machines. Il a fait ses preuves d’externaliser la logique d’intégration dans REST-Services ou des services d’arrière‑plan. Une Delphi REST-API und REST-Server n’est pas une fin en soi, mais un composant opérationnel : endpoints versionnés, authentification claire, journalisation contrôlée et partages de données limités.
La gestion des identités devient en outre 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) Exploitation: Updates, Monitoring, Recovery
Une application n’est en entreprise aussi bonne que son exploitation. 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 ne signifie pas ici « Cloud », mais : déploiements reproductibles, configuration traçable et santé du système mesurable.
Architecture qui aide au quotidien: Layer-3, frontières claires, moins d’effets secondaires
Quand des projets Delphi croissent sur des années, la logique 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 rapports. L’architecture Layer-3 (présentation, logique métier, accès aux données) est ici moins une théorie qu’un moyen pratique de rendre les changements calculables.
Important ici : la direction des dépendances : l’UI peut utiliser des fonctions métier, mais le métier ne doit pas savoir comment s’appellent les boutons. L’accès aux données fournit des objets/données, mais ne décide pas des règles métiers. Cela facilite :
- tests ciblés des règles métiers, sans devoir démarrer l’UI,
- remplacement étape par étape de l’accès aux données (p. ex. de BDE vers BDE-Ablosung mit nativer Anbindung),
- exploitation parallèle de plusieurs interfaces (Desktop et portail),
- 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 choix de base de données dans les applications d’entreprise Delphi sont souvent historiques. En exploitation, l’essentiel est notamment : sauvegarde/restauration, supervision, haute disponibilité/basculement, correctifs de sécurité et gestion des droits. L’accès aux données doit en découler.
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 du pilote y deviennent plus cohérents. Pour l’exploitation, important : le connection pooling (réutilisation des connexions), les timeouts et une classification claire des erreurs (p. ex. «interblocage», «délai d’attente», «contrainte d’unicité»).
PostgreSQL en production avec Delphi : opportunités et pièges
PostgreSQL est souvent retenu quand les standards ouverts, une bonne fonctionnalité SQL et de solides capacités d’exploitation sont requis. Points typiques lors d’une migration :
- Types de données : date/heure, Boolean, UUID, JSONB – les 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 transactions et le traitement par lots.
- Stratégie d’indexation : la performance ne provient rarement d’«un peu plus de CPU», mais d’index adaptés et de requêtes propres.
Pour les administrateurs, il est important que l’application n’ait pas besoin de droits «Superuser», mais fonctionne avec des rôles minimaux. C’est un point central pour les audits et les contrôles de sécurité.
Moderniser la connexion à SQL Server
Dans de nombreuses environnements, SQL Server est la norme. Il s’agit alors moins de migrer que d’utiliser proprement : requêtes paramétrées (pour prévenir les injections SQL), isolation appropriée, utilisation de procédures stockées là où la gouvernance l’exige, et une séparation claire entre les identifiants applicatifs et les identifiants administrateur. En pratique, il vaut aussi la peine d’examiner les collations (ordre/comparaison des caractères), car elles impactent les sujets Unicode et les comparaisons (p. ex. casse).
Ajouter une API REST : permettre des intégrations sans «ouvrir» la base de données
Lorsque des portails, des processus mobiles ou des tiers doivent être raccordés, l’accès direct à la base de données est en général 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éterminants :
- Authentification : basée sur des tokens, idéalement reliée à des identités centrales (p. ex. via SAML 2.0/OIDC dans une passerelle en amont, selon l’architecture).
- Autorisation : vérification des droits sur les objets métiers, pas seulement «l’utilisateur peut appeler l’endpoint».
- Versionnement : endpoints ou versions de payload, afin que le portail et le backend restent déployables indépendamment.
- Limites de débit et journalisation : protection contre les abus et diagnostics fiables en cas d’incident.
Dans de nombreux réseaux d’entreprise, ces services sont placés derrière un reverse proxy (p. ex. nginx). Le traitement des en-têtes Forwarded doit être correct (vraie IP client, détection HTTPS, bases d’URL correctes), sinon les logs, les redirections et les règles de sécurité seront erronés. Ce n’est pas un détail, mais pertinent pour l’analyse d’incidents et la conformité.
Windows-Service und Linux-Services: Hintergrundprozesse richtig betreiben
Delphi est utilisé en entreprise non seulement pour des clients de bureau, mais aussi pour des services : import de données, Scheduler, envoi d’e-mails, génération de PDF, workers d’interface. Pour l’exploitation, il importe qu’un service ne « tourne pas simplement », mais qu’il soit démarrable, arrêtable et observable 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 « fixes » dans le binaire ; configuration via fichier/environnement, avec documentation claire.
- Graceful Shutdown : terminer proprement les jobs en cours ou les interrompre proprement, afin d’éviter des enregistrements incomplets.
- Idempotenz : l’exécution répétée d’un job ne doit pas produire d’enregistrements en double (idempotence = même appel, même résultat).
- Logging mit Korrelation : une ID par tâche/transaction, pour permettre la corrélation des logs à travers plusieurs composants.
- Monitoring : endpoints de santé ou à défaut métriques vérifiables (p. ex. « dernier passage », « 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 qu’il faut typiquement mettre à niveau pour les applications Delphi
Beaucoup d’applications existantes sont fonctionnellement correctes, mais la sécurité était évaluée différemment « à l’époque ». Aujourd’hui les exigences sont plus nettes : patchabilité, traçabilité, chiffrement, contrôle d’accès. Mesures typiques présentant un bon rapport bénéfice/risque :
- 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, un service d’identité centralisé et des tokens.
- Audit-Logging : qui a effectué quelle action critique (données de référence, approbations, exports), avec horodatage et identité.
- Concept de droits : modéliser rôles et permissions au niveau fonctionnel ; séparer les fonctions d’administration ; vérifier la séparation des mandants.
- Cryptographie pragmatiquement propre : pas de solutions maison ; utiliser des procédés établis comme AES (symétrique) et des fonctions de hachage actuelles, plus une 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 backups) et les processus (réponse aux incidents, mises à jour régulières, mise hors service des composants).
Planifier la migration : du « système hérité » vers une plateforme compatible avec une feuille de route
Si une application Delphi doit être poursuivie stratégiquement, elle a besoin d’une feuille de route qui lie aspects techniques et organisationnels. Une approche pragmatique commence par la transparence :
1) Inventaire technique qui reflète l’exploitation et le risque
- Liste des composants (versions Delphi, bibliothèques tierces, pilotes, services, installateurs)
- Bases de données et flux de données (import/export, jobs batch, rapports)
- Interfaces (fichier, TCP/IP, REST, SOAP, e-mail, ERP/DMS/CRM)
- Processus de déploiement et de mise à jour (manuel, scripts, distribution centralisée)
- Profil des incidents (erreurs fréquentes, goulets d’étranglement de performance, temps de récupération)
2) Définir le schéma cible, sans le surcharger
Un schéma cible est utile s’il facilite les décisions. Il doit décrire comment les releases seront produites à l’avenir, à quoi ressembleront les interfaces, comment l’accès aux données sera standardisé et comment l’exploitation sera supervisée. Il ne doit pas signifier «tout nouveau». Souvent, un schéma cible avec trois à cinq principes directeurs suffit : p. ex. FireDAC comme standard, REST pour les intégrations, des services avec monitoring, intégration d’identité, couches claires.
3) Mise en œuvre par paquets découplables
Les paquets de modernisation doivent être délimités fonctionnellement et techniquement : «BDE supprimé et standardisation de l’accès aux données», «API REST pour les cas d’usage du portail», «client 64 bits plus capsule de compatibilité», «durcissement de l’exploitation des services». Chaque paquet nécessite des critères d’acceptation : stabilité mesurable, performances définies, processus d’exploitation documentés.
C# et Delphi : quand portails et services émergent à côté du poste de travail
Dans de nombreuses entreprises, Delphi est implanté dans le système central, tandis que les portails ou les nouveaux services d’intégration voient le jour plutôt en C#/.NET. Ce n’est pas contradictoire tant que l’architecture sépare clairement : Delphi peut continuer à assurer de manière stable le système poste de travail lié aux processus, tandis que C# portails ou C# services répondent aux exigences Web modernes. L’essentiel est le langage commun des systèmes : contrats de données clairs, identités cohérentes, versions d’interface traçables et un monitoring net au-delà des frontières des systèmes.
Pour la direction informatique, c’est souvent la voie la plus économique : la chaîne de valeur existante reste disponible, tandis que de nouveaux canaux peuvent apparaître sans 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 têtes. C’est un risque qui peut être réduit avec un effort raisonnable. 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 DB sont exécutées, comment effectuer un rollback ?
- Catalogue d’interfaces : points de terminaison/formats, échange de fichiers, interlocuteurs, 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’une exploitation planifiable, d’un traitement des incidents plus rapide et d’une moindre dépendance vis-à-vis d’individus.
Conclusion : Delphi applications d’entreprise ne sont pas le problème – ce sont les voies de modernisation manquantes
Les applications d’entreprise Delphi peuvent rester pendant des années un noyau fiable et économique pour des solutions logicielles proches des processus. Le point critique n’est rarement pas le langage, mais la somme des éléments hérités, des interfaces floues, de l’absence de durcissement de l’exploitation et des mécanismes de sécurité non entretenus. Celui qui planifie stabilisation, désaccouplement et extension comme feuille de route contrôlée évite le Big Bang risqué — et obtient néanmoins des intégrations REST, une compatibilité 64 bits, des accès aux données propres et une exploitation adaptée aux exigences actuelles.
Si vous souhaitez situer techniquement votre paysage Delphi et définir une voie de modernisation fiable pour l’accès aux données, les interfaces et l’exploitation, parlez avec nous :
Étape suivante
Lorsque le sujet devient un projet réel, 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 reportés à des phases ultérieures.
- Vous identifiez tôt quelle voie est viable économiquement et opérationnellement.