Dal tema della rivista alla pratica di progetto
Pagine di servizi e tecniche correlate all'articolo
Quando nelle aziende si parla di Delphi Multiplattform per Windows, macOS e Linux, raramente si tratta di «tecnica fine a se stessa». Spesso dietro c’è una necessità concreta: un software gestionale consolidato funziona affidabilmente su Windows, ma le business unit richiedono client macOS, i team IT vogliono integrare servizi Linux negli standard di server esistenti, oppure è prevista una modernizzazione senza dover risviluppare l’intero set di funzionalità.
Delphi può costituire in questo contesto un ponte pragmatico — a condizione che la multiplatform venga considerata un aspetto operativo e architetturale. I costi reali non sorgono nel primo build, ma nella manutenzione, nel processo di rilascio, negli aggiornamenti di sicurezza, nell’accesso ai dati, nella gestione dei driver, nella confezione dei pacchetti e nel supporto. Questo articolo chiarisce come pianificare realisticamente la multiplatform, quali decisioni tecniche impattano il funzionamento quotidiano e quali insidie nei progetti emergono tipicamente in fase avanzata.
Perché la multiplatform in azienda raramente è „solo una funzionalità“
In pratica la necessità di multiplatform nasce da tre fattori tipici:
- Dispositivi eterogenei: Windows è consolidato, macOS arriva per esigenze di management, vendita, design o vertice aziendale. Linux si presenta o come desktop in ambienti specialistici o come standard server nel data center.
- Standardizzazione in esercizio: molte divisioni IT vogliono consolidare i servizi su Linux (monitoring, gestione pacchetti, hardening), anche se i client rimangono su Windows.
- Modernizzazione senza Big Bang: le applicazioni esistenti devono essere migrate passo dopo passo in livelli manutenibili, spesso in parallelo a progetti su database e interfacce.
È importante distinguere: la multiplatform lato client (app desktop) è un tema diverso dalla multiplatform lato backend (servizi/REST). Nel contesto B2B spesso conviene un approccio ibrido: client Windows stabili, ma servizi Linux lato server e API REST per integrazione, automazione e portali web.
Delphi Multiplattform per Windows, macOS e Linux: cosa significa concretamente
La multiplatform in Delphi non è una bacchetta magica, ma una cassetta degli attrezzi. Per i team IT e operativi contano tre livelli fondamentali:
- Livello UI: su Windows in molte aziende esiste un mondo VCL consolidato (la classica interfaccia Windows). Per client veramente multipiattaforma si ricorre spesso a FireMonkey (FMX), che permette la stessa interfaccia su sistemi operativi diversi — con le rispettive peculiarità native.
- Logica di dominio: il vero vantaggio sta in una logica condivisa e ben incapsulata. Chi separa la logica di dominio e l’accesso ai dati dall’interfaccia utente può cambiare piattaforma senza reinventare il prodotto.
- Esecuzione e deployment: ogni piattaforma ha requisiti diversi per installazione, permessi, firma, aggiornamenti, percorsi, certificati e librerie. È qui che si decide se la multiplatform nella pratica è «semplice» o «costosa».
Per i decisori la domanda chiave quindi non è «Può Delphi macOS e Linux?», ma: quali parti della nostra soluzione devono essere effettivamente multipiattaforma — e come garantiamo esercizio e manutenibilità nel tempo?
Architettura: il più grande moltiplicatore dei costi di manutenzione
I progetti multiplatform raramente falliscono per il compilatore, ma per la mancanza di disaccoppiamento. Nelle applicazioni esistenti spesso tutto è mescolato: eventi UI, accesso al database, logica di dominio, stampa, file system, chiamate di rete. Questo funziona su quel Windows-PC, ma diventa un cantiere permanente non appena si estendono le piattaforme o si esternalizzano servizi.
Modello a strati invece di „maschera come fulcro”
Collaudato è un chiaro modello a strati (spesso chiamato Layer-Architektur):
- Presentazione: UI desktop (VCL o FMX) o front-end web.
- Logica applicativa e di dominio: regole, workflow, autorizzazioni, validazioni; idealmente senza dipendenze dirette da UI o driver di database.
- Strato di integrazione: collegamento a ERP/DMS/CRM, interfacce di file, messaging, REST.
- Accesso ai dati: accesso consolidato tramite confini chiari di repository/servizio, invece di SQL ovunque.
Questa separazione non è un esercizio accademico: riduce i casi particolari di piattaforma, facilita i test, consente componenti server-side e rende le migrazioni di database (ad es. su PostgreSQL) decisamente più controllabili.
Logica di dominio condivisa: Multiplatform senza doppio sviluppo
Se intendete sul serio la multiplatform, la logica di dominio dovrebbe essere progettata in modo da poter essere eseguita sia in un’app desktop sia in un servizio. Questo è particolarmente rilevante se in seguito aggiungerete un portale clienti, un’interfaccia web interna o un’integrazione REST. In pratica ciò significa: le decisioni di dominio devono stare in servizi/moduli, non negli eventi di clic di una maschera.
Strategia UI: mantenere VCL, usare FMX in modo mirato, integrare il Web
Molte aziende hanno una solida base desktop Windows. Una migrazione immediata a una nuova tecnologia UI è spesso inutilmente rischiosa. Strategie praticabili tipiche sono:
Strategia A: Windows-Client rimane VCL, Backend diventa neutrale rispetto alla piattaforma
Qui la logica core viene progressivamente estratta dall’applicazione VCL: in librerie e componenti lato server. Risultato: il client Windows resta stabile, mentre integrazione, automazione e nuovi front-end nascono tramite servizi. Linux entra allora in gioco tramite l’operatività server (ad es. REST-Server o servizi in background).
Strategia B: client Multiplatform con FMX per scenari definiti
FMX è sensato quando serve effettivamente lo stesso client su Windows e macOS, ad esempio per agenti esterni, postazioni mobili o flotte miste. Importante: i dettagli UI (font, scorciatoie da tastiera, finestre di dialogo, selezione file) differiscono per piattaforma. Questo deve essere considerato in test e supporto.
Strategia C: Desktop integrato da portale
Molte aziende non risolvono il tema „macOS“ con un client completo, ma con un portale per processi chiaramente delimitati: consultazione, approvazioni, stato ordini, documenti. Questo alleggerisce i rollout desktop, riduce l’onere di installazione e spesso è più rapido da mettere in sicurezza, perché lo strato web centrale è più facilmente controllabile.
Accesso ai dati e database: FireDAC come fattore di stabilità operativa
Nelle architetture multipiattaforma l’accesso ai dati è spesso l’ambito in cui i debiti tecnici storici diventano più costosi. Soprattutto i sistemi più vecchi Delphi dipendono dalla Borland Database Engine (BDE) o da driver che funzionano correttamente solo su Windows. Per l’esercizio operativo questo rappresenta un rischio: disponibilità dei driver, questioni 32/64 bit, Unicode, patch di sicurezza e monitoring sono difficili da governare.
Strategia dei driver: uniforme, documentata, testabile
BDE-sostituzione con integrazione nativa è in Delphi uno strato di accesso ai dati diffuso, che interfaccia in modo uniforme diversi database. Operativamente rilevante è meno „quanto elegante“ appaia nel codice, e più:
- Quali librerie client sono necessarie? (p. es. client PostgreSQL, MariaDB o Oracle)
- Come vengono distribuite? Parte integrante dell’installer, gestite centralmente, immagine container
- Come vengono gestiti in modo sicuro i parametri di connessione? (secrets, configurazione protetta, nessuna password in chiaro nei file)
- Quanto stabile è il comportamento in caso di interruzioni di rete? Ritenti, timeout, pooling
Migrazioni di database: la multipiattaforma come occasione per interfacce pulite
Se si stanno comunque ampliando le piattaforme, spesso è il momento giusto per consolidare l’accesso ai dati. Una migrazione (p. es. da vecchi formati di file o database embedded a sistemi SQL come PostgreSQL o SQL Server) dovrebbe essere gestita come progetto con fasi chiare: modello dati, strumenti di migrazione, funzionamento in parallelo, collaudo/accettazione, piano di rollback. La multipiattaforma aumenta la pressione perché i driver ‚Windows-only‘ o i percorsi di file su macOS/Linux possono smettere di funzionare.
Servizi e interfacce: REST come ponte tra piattaforme
In scenari eterogenei un approccio REST (REST = interfaccia basata su HTTP con risorse e metodi chiari) è spesso la soluzione pragmatica per collegare le piattaforme. Per l’esercizio operativo questo implica: autenticazione centralizzata, protocolli standardizzati, migliore osservabilità (log/metriche) e un disaccoppiamento netto tra client e database.
Delphi REST-Server vs. accesso diretto al DB dal client
Molte soluzioni desktop legacy operano con accesso diretto al database dal client. In reti esclusivamente Windows questo era a lungo la norma. Con la multipiattaforma e requisiti di sicurezza moderni diventa più complesso:
- Segmentazione di rete: i database non si trovano più nella stessa rete dei client; i firewall diventano più restrittivi.
- VPN/Zero Trust: connessioni dirette al DB attraverso reti variabili sono soggette a errori.
- Audit e privilegi: i permessi applicativi sono difficili da rappresentare correttamente se ogni client esegue SQL direttamente.
Un REST-Server (o uno strato di servizi) può centralizzare questi aspetti: autenticazione, autorizzazioni, protocollazione, rate limiting, versioning. Per gli amministratori spesso è più semplice da gestire rispetto a „cento client con accesso al database“.
Autenticazione e SSO: SAML 2.0, OAuth, Token
Nel contesto B2B il Single Sign-on (SSO) è spesso obbligatorio. SAML 2.0 (uno standard per l’identity federation tra Identity Provider e applicazione) o OAuth/OpenID Connect (procedure basate su token) sono componenti tipici. Decisivo non è il buzzword, ma la questione operativa: dove risiedono le identità, come avviene il provisioning, come vengono protetti i token e come gli accessi vengono registrati in modo revisionabile?
Deployment und Packaging: Der unterschätzte Aufwand
Delphi Multiplattform per Windows, macOS e Linux significa anche: tre mondi nel packaging. Molti costi emergono solo dopo la prima messa in produzione, quando gli aggiornamenti devono essere distribuiti regolarmente.
Windows: Installer, permessi, Services
Su Windows sono comuni processi MSI/installer, criteri di gruppo, UAC (User Account Control) e firma del codice. Non appena sono coinvolti Windows- e Linux-Services, si aggiungono temi supplementari: account di servizio, permessi su filesystem e rete, ordine di avvio, opzioni di recovery e rotazione dei log. Per la manutenzione è importante che il servizio sia chiaramente versionato e possa aggiornarsi senza interventi manuali.
macOS: Notarisierung, Signierung und Gatekeeper
macOS richiede per applicazioni distribuite in genere la firma e, a seconda della via di distribuzione, una notarizzazione (processo di verifica affinché il Gatekeeper esegua l’app). Per le aziende questo è meno un „tema Apple“ e più un problema di processo: chi detiene i certificati, come funziona la pipeline di build, come si generano release riproducibili? Senza questa disciplina ogni hotfix diventa un’azione isolata.
Linux: Pakete, Abhängigkeiten, systemd
Su Linux sono rilevanti le unità systemd (definizioni su come i servizi si avviano e vengono monitorati), i formati di pacchetto (es. DEB/RPM) o i deployment basati su container. Per gli amministratori contano: configurazione chiara, percorsi definiti, log sensati (es. tramite journald), controlli di integrità (health checks) e una procedura di aggiornamento compatibile con la propria policy di distribuzione.
CI/CD und Release-Prozess: Multiplattform braucht reproduzierbare Builds
Al più tardi con tre piattaforme target il „build manuale“ diventa un rischio. CI/CD (Continuous Integration/Continuous Delivery) qui non significa necessariamente „tutto completamente automatico in produzione“, ma soprattutto: artefatti riproducibili, versioni tracciabili e un processo standardizzato di test e approvazione.
In pratica dovreste almeno definire:
- Build-Matrix: Quali piattaforme, quali varianti (Debug/Release), quali driver per database, quali moduli opzionali?
- Versionierung: Numerazione delle versioni unificata tra client e server, più gli stati di migrazione del database.
- Signierung: Dove si firma, come sono protette le chiavi (es. HSM o agent di build protetti)?
- Smoke-Tests: Verifiche funzionali minime per piattaforma, in grado di bloccare ogni candidato alla release.
Per i decisori è una questione di governance: senza disciplina nei rilasci il supporto multipiattaforma diventa più costoso nel tempo, perché i pattern di errore sono più difficili da riprodurre e gli hotfix possono provocare effetti collaterali diversi a seconda della piattaforma.
Monitoring, Logging und Fehleranalyse: Was im Betrieb wirklich zählt
Nella quotidianità i team IT hanno bisogno di risposte rapide: „Perché il processo si è bloccato?“, „È un problema lato client o lato backend?“, „Da quando si verifica?“ Le piattaforme multiple aumentano la variabilità, quindi l’observability deve migliorare.
Strategia di log unificata tra client e server
Collaudata è una strategia di log stratificata:
- Log client: log locali con rotazione, riferimento di correlazione univoco (es. Request-ID), conformi alla normativa sulla protezione dei dati.
- Log server: memorizzazione centrale, voci strutturate (temporalmente precise, leggibili da macchina), separazione tra log di audit e log di debug.
- Metriche: tempi di risposta, tassi di errore, lunghezze delle code, utilizzo del pool di connessioni al database.
Proprio nelle architetture REST una Request-ID (un identificatore univoco per richiesta che viene propagato attraverso tutti i componenti) vale oro, perché i casi di supporto possono essere circoscritti in minuti anziché in ore.
Gestione dei crash e analisi degli errori simbolizzati
Sulle piattaforme desktop i crash dump e gli stack trace devono essere trattati in modo che siano utilizzabili dal supporto senza esporre dati sensibili. Questo è un tema organizzativo: quali dati possono essere inviati? Come si raccoglie il consenso? Come si proteggono i simboli di debug e si associano alle versioni? Senza risposte a queste domande il supporto multi-piattaforma spesso resta privo di indicazioni chiare.
Sicurezza e conformità: le piattaforme comportano superfici di attacco differenti
Con Windows, macOS e Linux il rischio non aumenta automaticamente, ma la superficie di attacco diventa più variegata. Punti tipici che nei progetti vengono spesso affrontati troppo tardi:
- Gestione dei certificati: certificati TLS per server, certificati client, date di scadenza, rinnovo automatizzato.
- Segreti: password del database, API key, chiavi di firma — non nei file di configurazione in chiaro o negli script di installazione.
- Concetto di diritti: Least Privilege per i servizi, separazione netta tra funzioni amministrative e funzionalità utente.
- Capacità di aggiornamento: le patch di sicurezza devono poter essere distribuite rapidamente; questo dipende direttamente dal processo di packaging e release.
In aziende soggette a requisiti di audit conviene definire presto una breve checklist di sicurezza per ciascuna piattaforma e includerla nella procedura di accettazione.
Trappole tipiche nei progetti multi-piattaforma
Alcuni problemi ricorrono frequentemente — non perché i team „lavorino male“, ma perché erano invisibili nelle storie limitate a Windows:
File system e percorsi: dettaglio piccolo, grande impatto
Convenzioni di percorso differenti, case-sensitivity (distinzione tra maiuscole e minuscole), directory utente e permessi portano a errori in esportazioni, allegati, file temporanei o cache. Qui aiuta un concetto di astrazione coerente: servizi centrali per i percorsi, directory applicative definite, nessuna posizione di memorizzazione „hard-coded“.
Stampa, PDF e integrazione Office
I flussi di stampa e documentali sono spesso critici nei processi di business. Windows dispone di percorsi di stampa consolidati, macOS e Linux si comportano diversamente. Se la generazione di PDF, le firme o le stampe fiscali sono rilevanti, queste funzionalità vanno testate precocemente su tutte le piattaforme target — non solo poco prima del rilascio.
Unicode e set di caratteri
Al più tardi in presenza di piattaforme miste, interfacce e database, Unicode (uno standard di codifica per i caratteri internazionali) diventa imprescindibile. Riserve legacy con storia „ANSI“ altrimenti generano errori difficili da ricostruire nelle ricerche, negli ordinamenti, negli export CSV o nelle interfacce. Una strategia Unicode comprende UI, colonne del database, interfacce e dati di test.
32/64-Bit e dipendenze delle librerie
Un classico: un driver o una libreria di terze parti è disponibile solo per una specifica architettura. Per l’esercizio operativo questo significa: lista chiara delle dipendenze, documentare le versioni, verificare la compatibilità di licenza e la possibilità di aggiornamento. Una soluzione multipiattaforma è stabile soltanto quanto la sua dipendenza più debole.
Guida alla decisione: quando conviene davvero Delphi multipiattaforma?
Uno sguardo pragmatico a costi e benefici aiuta a rendere le discussioni più obiettive. La multipiattaforma conviene tipicamente quando:
- il nucleo funzionale è stabile a lungo termine e la riutilizzabilità ripaga nel corso degli anni,
- esistono reali motivi organizzativi per macOS-Clients (non solo „sarebbe bello“),
- Linux è già lo standard nel backend e sono previsti servizi/REST,
- l’applicazione deve essere integrata in una rete di integrazione con ERP/DMS/CRM,
- si può implementare un processo di rilascio ordinato (build, firma, test).
La multipiattaforma è meno sensata se l’applicazione dipende fortemente da componenti specifiche di Windows (p.es. automazione profonda di Office, driver speciali, integrazioni basate su COM) e queste funzionalità non sono chiaramente incapsulabili. In tal caso spesso una strategia mista è più realistica: Windows-Client per i casi speciali, portale/REST per processi neutrali rispetto alla piattaforma.
Percorso di modernizzazione: multipiattaforma senza un completo rifacimento
Per molte aziende il punto più importante è: multipiattaforma non deve significare riscrivere tutto. Un percorso affidabile spesso è il seguente:
- Analisi dello stato attuale e definizione dei confini: quali moduli sono funzionalmente stabili, quali sono vicini all’UI o al database, dove sono i maggiori rischi?
- Consolidare l’accesso ai dati: ad es. BDE-sostituzione, BDE-Ablosung mit nativer Anbindung, strategia unificata di connessione e transazioni.
- Stabilire uno strato di servizi: API REST per i processi core, sostituzione graduale dell’accesso diretto al DB.
- Prioritizzare le piattaforme: prima stabilizzare il backend su Linux, poi il macOS-Client per gruppi di utenti definiti, invece di fare tutto contemporaneamente.
- Professionalizzare Packaging/CI: build e aggiornamenti riproducibili come parte integrante del progetto.
Questo percorso è particolarmente adatto al software aziendale personalizzato con lunghi cicli di vita, perché protegge la logica di dominio e riduce i rischi tecnici in modo controllato.
Conclusione: la multipiattaforma è una decisione operativa – non solo una decisione degli sviluppatori
Delphi multipiattaforma per Windows, macOS e Linux può essere per le aziende una via molto pragmatica per evolvere tecnicamente processi consolidati senza perdere il nucleo funzionale. È fondamentale pianificare la multipiattaforma come pacchetto complessivo: architettura a strati chiari, accesso dati consolidato, interfacce orientate a servizi, build riproducibili, packaging pulito e una strategia di logging/monitoring che chiarisca rapidamente i casi di supporto.
Quando queste basi sono stabilite, la multiplattaforma non diventa un progetto interminabile, ma un’estensione controllabile della vostra soluzione aziendale digitale – con costi operativi realistici e una roadmap che collega migrazione e sviluppo continuo.
Se desiderate valutare in modo strutturato la vostra situazione di partenza (stato attuale, piattaforme target, database, interfacce e modello operativo): contattateci per un colloquio tecnico preliminare.
Nel contesto specialistico, anche Delphi Modernizzazione svolge un ruolo importante, quando integrazioni, flussi di dati e sviluppo devono interagire in modo coordinato.
Discutere progetto o iniziativa di modernizzazione con Net-Base.
Passo successivo
Quando un tema diventa un progetto reale, architettura, sistemi esistenti e gestione operativa dovrebbero essere considerati insieme fin dalle fasi iniziali.
Non forniamo solo supporto per questioni isolate, ma anche quando da frammenti di codice sorgente, tematiche legacy o idee di portale deve nascere un progetto aziendale solido.
- Stato attuale, stato obiettivo e rischi tecnici vengono valutati insieme.
- REST, l'accesso ai dati, i portali e il rollout non vengono rinviati a fasi successive.
- Vede in anticipo quale percorso è economicamente e operativamente sostenibile.