Del tema de la revista a la pràctica del projecte
Pàgines de serveis i tècniques pertinents per a l'article
En moltes empreses funcionen de manera fiable des de fa anys Delphi aplicacions empresarials: captació de dades a nivell de producció, planificació, magatzem, expedició, servei, control de qualitat o processos administratius centrals. Aquests sistemes rarament són „bonics“, però sovint són extremadament valuosos — perquè modelen fluxos que no es poden encaixar en programari estàndard. Precisament per això Delphi continua essent rellevant a la pràctica: no com una tendència, sinó com una base estable per a programari empresarial a mida que va sorgir sota pressió de temps i que ha crescut al llarg d’anys.
Per a la direcció d’IT i l’administració la qüestió no és tant „Delphi: sí o no?“, sinó: Com mantinc el sistema operatiu, segur i modificable, sense paralitzar l’operativa amb un nou desenvolupament tipus Big-Bang? Aquest article situa les tipologies típiques de paisatges Delphi i mostra vies de modernització pràctiques – amb enfocament en l’explotació, les dades, les interfícies, la mantenibilitat, la seguretat i la migració. Sense entrar en els detalls interns dels frameworks, però amb decisions concretes que compten en el dia a dia.
Per què Delphi s’arrela a les empreses — i per què això no és necessàriament dolent
Moltíssimes aplicacions Delphi es van construir en èpoques en què el programari d’escriptori (VCL, és a dir, la clàssica Windows-interfície) era la via més ràpida per digitalitzar processos. D’aquí van sorgir sistemes amb alta densitat de lògica de negoci, vincles estrets amb la base de dades i molts casos especials „petits“ que, en conjunt, sostenen l’explotació. Això explica la longevitat: la lògica de negoci està provada — no mitjançant proves unitàries, sinó per anys d’operació en producció.
Situacions de partida típiques: així es presenten en la realitat les aplicacions Delphi empresarials
Qui assumeix o ha d’estabilitzar un paisatge Delphi sovint troba formes mixtes. Per a la planificació i el pressupost és útil anomenar clarament la situació de partida:
- Client d’escriptori monolític amb accés directe a la base de dades (sovint resultat d’un creixement històric, en part amb lògica „Fat Client“).
- Client-Servidor amb serveis: Windows- i Linux-Services o un Linux-daemon s’encarrega de tasques en segon pla (imports, exports, processos d’impressió, correu electrònic, planificacions).
- Híbrid: l’escriptori continua sent predominant, a més una REST-API per a portals o integracions de tercers (REST = interfície basada en HTTP que sol lliurar dades com JSON).
- Diverses fonts de dades: SQL Server/PostgreSQL i sistemes heretats (Firebird, fitxers Paradox, DBF, Access).
- Terminalserver/RDS o infraestructures de Virtual Desktop (VDI) per a una explotació centralitzada, parcialment amb connexió de perifèrics (escàners, bàscules, impressió d’etiquetes).
Cadascuna d’aquestes variants pot funcionar – però els punts centrals de la modernització difereixen. Un monòlit d’escriptori sovint necessita primer desacoblament i interfícies més clares. Un entorn basat en serveis requereix una operativa neta, versionat i monitoratge. I en formes mixtes, l’estratègia de dades i d’interfícies es converteix en la palanca central.
Modernització sense Big Bang: Lògica de decisió per a IT i decisors
La decisió més important és: Què cal estabilitzar a curt termini i què es pot modernitzar pas a pas? Un nou desenvolupament complet comporta riscos elevats: treball paral·lel en l’elaboració del concepte funcional, manteniment duplicat, finestres de migració i sovint les «funcions marginals» estan subestimades (impressos especials, fluxos de correcció, processos d’emergència). Alhora no s’han d’ignorar bloquejos reals (p. ex. BDE, dependències no parchejables, seguretat no auditable).
A la pràctica, una fulla de ruta en tres parts demostra la seva validesa:
- Estabilitzar: procés de build reproducible, versions reproduïbles, registre (logging) net, proves de còpia de seguretat i restauració, millores ràpides en seguretat.
- Desacoblar: capes clares (p. ex. arquitectura Layer-3: UI, lògica de negoci, accés a dades), definir interfícies, modernitzar l’accés a dades.
- Ampliar: REST-APIs, portals, nous clients, noves bases de dades, multi-plataforma, multitenència – allà on sigui tècnicament i econòmicament pertinent.
La clau és que cada etapa lliuri un estat operatiu i no només generi «feines prèvies». Així es manté la capacitat de procés i els canvis són controlables.
Delphi Modernització: On es troben realment els riscos més grans
El terme «modernització» sovint s’utilitza massa de manera genèrica. Per a l’operació, típicament cinc zones de risc són decisives:
1) Accés a dades i ecosistema de controladors (BDE, ODBC, clients obsolets)
La BDE-sustitució és un clàssic: mentre la Borland Database Engine estigui en producció, sorgeixen conflictes amb versions actuals de Windows, controladors, permisos i baselines de seguretat. A més, l’operació es torna fràgil perquè components deixen de rebre manteniment. Sovint la BDE-sustitució amb connexió nativa és el pas pragmàtic de modernització: una capa d’accés a dades moderna dins de Delphi que connecta de manera neta diverses bases de dades i fa més manejables els temes de controladors / pooling.
Important per a IT: una BDE-sustitució no és només «canviar controladors». Treballs típics posteriors són adaptacions de l’SQL-dialecte, límits de transacció (transacció = canvis a la base de dades que pertanyen junts i que s’apliquen o no s’apliquen en bloc), gestió d’errors, codificació/Unicode i perfilatge de rendiment.
2) Dependències de 32 bits i la migració a 64 bits
La transició a 64 bits rarament falla per Delphi en si, sinó per components externs: wrappers de controladors d’impressió, biblioteques COM/ActiveX antigues, SDKs de maquinari especials o clients de bases de dades obsolets. Per a la planificació és obligatori un inventari de dependències: quines DLL es carreguen? Quins components no són compatibles amb 64 bits? Hi ha substituts o es pot externalitzar la funció en un procés separat (p. ex. com a servei)?
Un enfocament net és introduir primer els 64 bits on aportin avantatges operatius (necessitat de memòria, grans volums de dades, requisits de plataforma moderns) — i aïllar temporalment les funcions marginals en 32 bits, en lloc de bloquejar tot el client.
3) Migració a Unicode i consistència de dades
Unicode significa: els textos ja no s’emmagatzemen en pàgines de codis locals, sinó en un joc de caràcters unificat (típicament UTF‑16/UTF‑8 segons la capa). En aplicacions Delphi evolucionades això afecta camps de dades antics, formats d’exportació, plantilles d’impressió i interfícies. Els problemes sovint només apareixen en l’operativa diària: caràcters especials en noms, adreces internacionals, textos d’articles, contingut de correus electrònics.
Per a les empreses és fonamental comprovar-ho extrem a extrem: col·lació de la base de dades, importació/exportació (CSV, XML, JSON), formats EDI, generació de PDF, SMTP/IMAP, i també la visualització a la UI. Una migració a Unicode és factible, però requereix proves amb dades reals i criteris d’acceptació clars.
4) Interfícies i integracions (REST, ERP, DMS, Identity)
Molts sistemes Delphi són «illes», perquè l’accés directe a la base de dades històricament era la via més ràpida. Avui calen integracions netes: ERP, DMS, CRM, portals, connexió a màquines. Aquí ha demostrat ser útil externalitzar la lògica d’integració en serveis REST o serveis en segon pla. Una API i servidor REST per a Delphi no és un fi en si mateix, sinó un element operatiu: punts finals versionats, autenticació clara, registre controlat i compartició de dades limitada.
A més, la identitat esdevé rellevant: SAML 2.0 (Single Sign-on entre la identitat de l’empresa i l’aplicació) o OAuth2/OpenID Connect, segons l’entorn. La decisió no només afecta l’aplicació, sinó també l’explotació, l’auditoria i els processos de desvinculació.
5) Explotació: actualitzacions, monitoratge, recuperació
Una aplicació en una empresa només és tan bona com la seva explotació. Vulnerabilitats típiques: instal·lacions manuals, manca d’estratègia de rollback, gairebé sense telemetria i responsabilitats poc clares davant d’incidents. Modernitzar aquí no vol dir «Cloud», sinó: desplegaments reproduïbles, configuració rastrejable i estat mesurable del sistema.
Arquitectura que ajuda en el dia a dia: Layer-3, límits clars, menys efectes col·laterals
Quan els projectes Delphi creixen durant anys, sovint la lògica de la UI es barrega amb regles de negoci i accés a dades. Això fa que els canvis siguin arriscats: un camp nou al diàleg de sobte provoca efectes secundaris en imports o informes. L’arquitectura Layer-3 (presentació, lògica de negoci, accés a dades) no és tant teoria com un recurs pràctic per fer els canvis calculables.
És important la direcció de les dependències: la UI pot utilitzar funcions de negoci, però el negoci no hauria de saber com es diuen els botons. L’accés a dades subministra objectes/dades, però no decideix sobre regles de negoci. Això facilita:
- proves específiques de regles de negoci sense haver d’arrencar la UI,
- reemplaçament pas a pas de l’accés a dades (p. ex. de BDE a BDE-Ablosung mit nativer Anbindung),
- operativa paral·lela de diverses interfícies (escriptori més portal),
- versions més estables, perquè es redueixen els efectes col·laterals.
Per als decisors això és un argument de cost: no perquè l’arquitectura sigui «bonica», sinó perquè fa que el manteniment sigui més previsible.
Datenbanken modernisieren: FireDAC, PostgreSQL, SQL Server – und was das für den Betrieb bedeutet
Les decisions sobre bases de dades en aplicacions empresarials Delphi sovint tenen un caràcter històric. En l’explotació compten sobretot: Backup/Restore, Monitoring, HA/Failover, Security-Patching i gestió de permisos. L’accés a les dades hauria d’adaptar‑se a això.
FireDAC als una capa d’estandardització
FireDAC pot servir com a estandardització tècnica, perquè el gestió de connexions, el binding de paràmetres, les transaccions i la selecció de drivers esdevenen més consistents. Per a l’explotació és important: Connection Pooling (reutilització de connexions), timeouts i una classificació d’errors clara (p. ex. “Deadlock”, “Timeout”, “Unique Constraint”).
PostgreSQL productiu amb Delphi: oportunitats i entrebancs
PostgreSQL s’escull sovint quan es prioritzen estàndards oberts, una bona funcionalitat SQL i capacitats sòlides d’explotació. Punts típics en una migració:
- Tipus de dades: data/temps, boolean, UUID, JSONB – utilitzar‑los de manera neta en el model de dades, en lloc d’emmagatzemar-ho tot com a text.
- Aïllament de transaccions: consistència versus paral·lelisme; rellevant en la lògica de registre i el processament per lots.
- Estratègia d’índexs: el rendiment rarament prové de “més CPU”, sinó d’índexs adients i consultes ben redactades.
Per als administradors és important que l’aplicació no requereixi privilegis de „superuser“, sinó que treballi amb rols mínims. Això és un punt clau per a auditories i verificacions de seguretat.
Modernitzar la connexió amb SQL Server
En molts entorns SQL Server ja està establert. En aquest cas es tracta menys de migrar i més d’un ús acurat: consultes parametritzades (contra SQL‑Injection), aïllament adequat, ús de Stored Procedures on la governança ho exigeixi, i una separació clara entre l’inici de sessió de l’aplicació i els logins d’administració. A la pràctica també convé revisar les collations (ordenació/comparació de caràcters), ja que influeixen en temes Unicode i en comparacions (p. ex. majúscules/minúscules).
REST-API nachrüsten: Integrationen ermöglichen, ohne die Datenbank zu „öffnen“
Quan cal integrar portals, processos mòbils o tercers, l’accés directe a la base de dades sol ser la pitjor opció: difícil de versionar, arriscat per a la integritat de les dades i poc auditable. Una REST-API crea una capa d’integració controlada. Defineix quines dades són disponibles, en quin format i amb quines regles.
Per a l’explotació i la seguretat hi ha quatre aspectes decisius:
- Autenticació: basada en token, idealment connectada a identitats centrals (p. ex. via SAML 2.0/OIDC en un gateway anterior, segons l’arquitectura).
- Autorizació: comprovació de drets sobre objectes de domini, no només “l’usuari pot accedir a l’endpoint”.
- Versionament: endpoints o versions de payload, perquè el portal i el backend es puguin desplegar de manera independent.
- Limits de taxa i registre: protecció contra abús i diagnosi fiable en cas d’incidències.
En moltes xarxes corporatives aquests serveis funcionen darrere d’un Reverse Proxy (p. ex. nginx). En aquest cas la gestió dels headers Forwarded ha d’estar correctament configurada (IP real del client, detecció HTTPS, bases d’URL correctes), perquè sinó els logs, els redireccionaments i les regles de seguretat no seran fiables. Això no és un detall: és rellevant per a l’anàlisi d’incidents i el compliment normatiu.
Windows-Service und Linux-Services: Hintergrundprozesse richtig betreiben
Delphi s’utilitza a les empreses no només per a clients d’escriptori, sinó també per a serveis: imports de dades, planificadors, enviament de correus, generació de PDF, workers d’interfícies. Per a l’explotació és important que un servei no «funcioni d’alguna manera», sinó que es pugui iniciar, aturar i monitoritzar de manera controlada.
Llista de comprovació per a components Delphi preparats per a servei
- Configuració externa: cap ruta/host «fix» dins l’executable; configuració com a fitxer o variables d’entorn, amb documentació clara.
- Aturada ordenada: finalitzar o cancel·lar netament les tasques en execució perquè no es generin registres incomplets.
- Idempotència: l’execució repetida d’una tasca no ha de generar registres duplicats (idempotència = mateixa crida, mateix resultat).
- Registre amb correlació: una ID per comanda/transacció perquè els logs puguin consolidar-se entre diverses components.
- Monitorització: endpoints d’estat o, com a mínim, mètriques verificables (p. ex. «última execució», «percentatge d’errors», «cua»).
En Linux-Services (p. ex. com a daemon sota systemd) cal afegir paquetització, concepte de permisos i disposició del sistema de fitxers. És fonamental que la identitat del servei tingui permisos mínims i que els secrets (contrasenyes, tokens) no es trobin en text clar en el desplegament. Segons l’entorn pot ser necessari un magatzem de secrets o, com a mínim, un camí de configuració protegit.
Seguretat i compliment: què s’ha d’abordar típicament en aplicacions Delphi
Moltes aplicacions existents són funcionalment correctes, però la seguretat es valorava «aleshores» d’una altra manera. Avui les exigències són més clares: capacitat de patch, traçabilitat, xifrat, control d’accés. Mesures típiques amb una bona relació benefici-risc:
- Xifrat del transport: TLS per a serveis i comunicació d’API; evitar trajectes HTTP sense xifrar a la xarxa interna «per costum».
- Gestió de contrasenyes i secrets: no posar contrasenyes en fitxers INI sense protecció; si és possible, gestió d’identitat centralitzada i tokens.
- Audit-logging: qui ha executat quina acció crítica (dades mestres, aprovacions, exportacions), amb marca temporal i identificació.
- Concepte de permisos: modelar rols i permisos a nivell funcional; separar funcions d’administrador; revisar la separació per mandants.
- Criptografia pragmàtica i neta: no utilitzar solucions casolanes; procediments establerts com AES (simètric) i funcions hash actuals, amb protecció d’integritat.
Important: la seguretat no és només codi. Afecta també l’explotació (permisos d’accés als servidors, retenció de logs, xifrat dels backups) i els processos (gestió d’incidents, actualitzacions regulars, retirada de components).
Planificar la migració: del «sistema crescut» a una plataforma preparada per al full de ruta
Si una aplicació Delphi s’ha de continuar estratègicament, necessita un full de ruta que integri aspectes tècnics i organitzatius. Un procediment pràctic comença per la transparència:
1) Inventari tècnic que reflecteixi l’explotació i el risc
- Llista de components (Delphi-versions, biblioteques de tercers, controladors, serveis, instal·ladors)
- Bases de dades i fluxos de dades (import/export, tasques per lots, informes)
- Interfícies (fitxer, TCP/IP, REST, SOAP, correu electrònic, ERP/DMS/CRM)
- Procés de desplegament i d’actualització (manual, script, distribució centralitzada)
- Quadre de fallades (errors freqüents, colls d’ampolla de rendiment, temps de recuperació)
2) Definir una visió objectiu, però sense sobrecarregar-la
Una visió objectiu és útil si facilita la presa de decisions. Hauria de descriure com es generaran els releases en el futur, com seran les interfícies, com s’estandarditzarà l’accés a dades i com es monitoritzarà l’operació. No cal que signifiqui „tot de nou“. Sovint és suficient una visió amb tres a cinc directrius: p. ex. FireDAC com a estàndard, REST per a integracions, serveis amb monitoring, connexió d’identitat, capes clares.
3) Execució en paquets delimitables
Els paquets de modernització han de ser delimitables tant funcionalment com tècnicament: “treure BDE i estandarditzar l’accés a dades”, “API REST per a casos d’ús de portal”, “client de 64‑bit més càpsula de compatibilitat”, “endurir l’operació dels serveis”. Cada paquet necessita criteris d’acceptació: estabilitat mesurable, rendiment definit, processos d’operació documentats.
C# i Delphi posats en comú: quan portals i serveis sorgeixen al costat del desktop
En moltes empreses Delphi està establert al sistema central, mentre que portals o nous serveis d’integració sovint neixen a C#/.NET. Això no és contradictori sempre que l’arquitectura separi de manera neta: Delphi pot continuar operant de manera estable com a sistema proper al procés, mentre que portals C# o servicis C# donen resposta a requisits web moderns. El que importa és un llenguatge comú entre sistemes: contractes de dades clars, identitats consistents, versions d’interfície traçables i un monitoratge net més enllà dels límits del sistema.
Per a la direcció de TI sovint és la via més econòmica: la generació de valor existent queda disponible mentre que es poden obrir nous canals sense una migració completa.
Què cal preparar internament: documentació, manual d’operacions, transferència de coneixement
Els sistemes Delphi sovint estànen sostenuts per poques persones. Això és un risc que es pot reduir amb un esforç raonable. Són especialment efectius:
- Manual d’operacions: serveis, ports, configuració, Cron/Scheduler, fallades típiques, passos de recuperació.
- Notes de llançament: què canvia, quines migracions de BD s’executen, com es pot fer rollback?
- Catàleg d’interfícies: punts finals/formats, intercanvi de fitxers, persones de contacte, versions.
- Visió general del model de dades: taules/entitats centrals, claus, lògica de multiclient, arxivat.
Això no és burocràcia, sinó la base per a un funcionament planificat, una gestió d’incidents més ràpida i menys dependència d’individus.
Conclusió: les aplicacions empresarials Delphi no són el problema – sí que ho són la manca de rutes de modernització
Les aplicacions empresarials Delphi poden ser durant anys un nucli fiable i econòmic per a solucions de software properes al procés. El punt crític rarament és el llenguatge, sinó la suma de factors llegats, interfícies poc clares, manca d’enduriment operatiu i mecanismes de seguretat poc mantinguts. Qui planifica estabilització, desacoblament i ampliació com una roadmap controlada evita el riscós Big Bang — i obté igualment integracions REST, compatibilitat de 64 bits, accessos a dades nets i una operació que s’adapta als requisits actuals.
Si voleu classificar tècnicament la vostra infraestructura Delphi i establir un camí de modernització sòlid per a l’accés a dades, les interfícies i l’operació, parleu amb nosaltres:
Parlar d’un projecte o d’una iniciativa de modernització amb Net-Base.
Pas següent
Quan un tema esdevé un projecte real, l'arquitectura, l'entorn existent i les operacions s'haurien de considerar conjuntament des de bon començament.
No només donem suport en qüestions puntuals, sinó també quan, a partir de fragments de codi font, temes de sistemes heredats o idees de portal, ha de sorgir un projecte empresarial sòlid.
- L'estat actual, la visió objectiu i els riscos tècnics s'avaluen conjuntament.
- REST, l'accés a les dades, els portals i el desplegament no es releguen a fases posteriors.
- Vostè veurà aviat quin camí és econòmicament i operativament viable.