Från magasinets tema till projektpraxis
Passande tjänste- och tekniksidor för inlägget
När företag talar om Delphi Multiplattform för Windows, macOS och Linux handlar det sällan om „teknik för teknikens skull“. Oftast ligger en konkreta situation bakom: En etablerad affärsprogramvara körs stabilt på Windows, men verksamhetsområden kräver macOS-klienter, IT-team vill integrera Linux-tjänster i befintliga serverstandarder, eller en modernisering är planerad utan att återutveckla hela funktionaliteten.
Delphi kan i denna spänningsyta vara en pragmatisk bro – förutsatt att multiplattform ses som ett drift- och arkitekturfråga. De verkliga kostnaderna uppstår inte vid första bygget, utan i underhåll, releaseprocess, säkerhetsuppdateringar, dataåtkomst, drivrutinslandskap, paketering och support. Denna artikel ger en överblick över hur ni realistiskt planerar multiplattform, vilka tekniska beslut som märks i driften och vilka fallgropar som typiskt upptäcks sent i projekt.
Varför multiplattform i företag sällan „bara en funktion“ är
I praktiken uppstår behovet av multiplattform av tre typiska drivkrafter:
- Heterogena enheter: Windows är etablerat, macOS tillkommer via ledning, försäljning, design eller ledningsnivåer. Linux dyker upp antingen som skrivbord i specialmiljöer eller som serverstandard i datacentret.
- Standardisering i driften: Många IT-avdelningar vill konsolidera tjänster på Linux (övervakning, paketförvaltning, härdning), även om klienterna fortsatt är Windows.
- Modernisering utan Big Bang: Befintliga applikationer ska stegvis föras över till underhållbara lager, ofta parallellt med databas- och gränssnittsprojekt.
Viktigt är skillnaden: Multiplattform på klienten (desktop-app) är ett annat ämne än Multiplattform i backend (tjänster/REST). Särskilt i B2B-konteksten är en hybridansats ofta värdefull: stabila Windows-klienter, men på serversidan Linux-tjänster och REST-API:er för integration, automatisering och webbportaler.
Delphi Multiplattform för Windows, macOS och Linux: Vad det konkret innebär
Multiplattform i Delphi är ingen trollstav, utan en verktygslåda. För IT- och driftssidan är tre nivåer avgörande:
- UI-skikt: På Windows finns i många företag en etablerad VCL-värld (klassiskt Windows-gränssnitt). För riktiga multiplattformsklienter kommer ofta FireMonkey (FMX) in i bilden, vilket möjliggör samma gränssnitt på olika operativsystem – med vardera sina nativa egenheter.
- Affärslogik: Den stora påverkan ligger i gemensam, ordentligt kapslad logik. Den som separerar affärslogik och dataåtkomst från UI kan byta plattform utan att behöva återuppfinna produkten.
- Körtid och Deployment: Varje plattform har olika krav på installation, rättigheter, signering, uppdateringar, sökvägar, certifikat och bibliotek. Precis här avgörs om multiplattform i vardagen är „lätt“ eller „dyr“.
För beslutsfattare är kärnfrågan därför inte „Kan Delphi macOS och Linux?“, utan: Vilka delar av vår lösning måste verkligen vara multiplattformsstödjande – och hur säkerställer vi drift och underhållbarhet över år?
Arkitektur: Den största multipliceraren för underhållskostnader
Multiplattformsprojekt misslyckas sällan på grund av kompilatorn, utan på grund av bristande lös koppling. I befintliga applikationer är ofta allt blandat: UI-händelser, databasåtkomst, domänlogik, utskrift, filsystem, nätverksanrop. Det fungerar på ”den ena Windows-PC:n”, men blir en ständig byggarbetsplats så snart ni utökar plattformar eller flyttar ut tjänster.
Skiktmodell istället för ”formuläret som nav”
En beprövad lösning är en tydlig skiktmodell (ofta kallad layer-arkitektur):
- Presentation: Desktop-UI (VCL eller FMX) eller webb-frontends.
- Applikations- och domänlogik: Regler, arbetsflöden, behörigheter, valideringar; helst utan direkt beroende av UI eller databasdrivrutiner.
- Integrationsskikt: Anslutning till ERP/DMS/CRM, filgränssnitt, messaging, REST.
- Dataåtkomst: Konsoliderad åtkomst över klart definierade repository-/service-gränser, istället för SQL i varje hörn.
Denna separation är ingen akademisk övning: den minskar plattforms-specifika specialfall, förenklar tester, möjliggör serverbaserade komponenter och gör databasmigrationer (t.ex. till PostgreSQL) avsevärt mer kontrollerbara.
Gemensam domänlogik: Multiplattform utan dubbelutveckling
Om ni menar allvar med multiplattform bör den fackliga logiken utformas så att den kan köras lika väl i en desktop-app som i en tjänst. Det är särskilt relevant om ni senare ska lägga till ett kundportal, en intern webbgränssnitt eller en REST-integration. I praktiken betyder det: domänbeslut hör hemma i tjänster/moduler, inte i klickhändelser i ett formulär.
UI-strategi: Behåll VCL, använd FMX målmedvetet, komplettera med webben
Många företag har en stark Windows-desktopbas. En omedelbar övergång till en ny UI-teknologi är ofta onödigt riskfylld. Typiska hållbara strategier är:
Strategi A: Windows-klienten behåller VCL, backend blir plattformsneutral
Här extraheras kärnlogiken stegvis ur VCL-applikationen: till bibliotek och serverbaserade komponenter. Resultat: Windows-klienten förblir stabil medan integration, automatisering och nya frontend skapas via tjänster. Linux kommer då in genom serverdrift (t.ex. REST-server eller bakgrundstjänster).
Strategi B: Multiplattforms-klient med FMX för definierade scenarier
FMX är meningsfullt om ni verkligen behöver samma klient på Windows och macOS, till exempel för fältarbete, mobila arbetsstationer eller blandade klientflottor. Viktigt: UI-detaljer (typsnitt, kortkommandon, dialoger, filval) skiljer sig mellan plattformarna. Det måste räknas in i tester och support.
Strategi C: Desktop kompletteras med portal
Flera företag löser ”macOS-frågan” inte med en fullständig klient, utan med en portal för väl avgränsade processer: information, godkännanden, orderstatus, dokument. Det avlastar desktoputrullningar, minskar installationsarbete och är ofta snabbare att säkra eftersom det centrala webbskiktet är enklare att kontrollera.
Dataåtkomst och databaser: FireDAC som en operativ stabilitetsfaktor
I multiplattformsarkitekturer är åtkomst till data ofta det område där historiska kvarstående systemkostnader blir som högst. Särskilt äldre Delphi-system är beroende av Borland Database Engine (BDE) eller av drivrutiner som bara fungerar korrekt på Windows. För driften utgör det en risk: drivrutinstillgänglighet, 32/64-bitfrågor, Unicode, säkerhetspatchar och övervakning är svåra att hantera.
Drivrutinstrategi: Enhetlig, dokumenterad, testbar
BDE-ersättning med nativ anslutning är i Delphi ett vanligt lager för dataåtkomst som adresserar olika databaser enhetligt. Operativt relevant är mindre „hur elegant“ det ser ut i koden, utan:
- Vilka klientbibliotek krävs? (t.ex. PostgreSQL-, MariaDB- eller Oracle-klient)
- Hur distribueras de? Ingår i installern, centralt hanterade, containerimage
- Hur hanteras anslutningsparametrar säkert? (hemligheter, skyddad konfiguration, inga klartextlösenord i filer)
- Hur stabilt är beteendet vid nätverksstörningar? Retries, timeouts, pooling
Databasmigrationer: Multiplattform som anledning för rena gränssnitt
När plattformar ändå utökas är det ofta rätt tidpunkt att konsolidera dataåtkomsten. En migration (t.ex. från gamla filformat- eller inbäddade databaser till SQL-system som PostgreSQL eller SQL Server) bör drivas som ett projekt med tydliga faser: datamodell, migrationsverktyg, parallell drift, godkännande, rollback-plan. Multiplattform ökar här trycket, eftersom „Windows-only“-drivrutiner eller sökvägar till filer på macOS/Linux inte längre fungerar.
Tjänster och gränssnitt: REST som bro mellan plattformar
I heterogena landskap är en REST-ansats (REST = HTTP-baserat gränssnitt med tydliga resurser och metoder) ofta det mest pragmatiska sättet att koppla ihop plattformar. För driften innebär det: central autentisering, standardiserade protokoll, bättre observability (loggar/metriker) och en ren avkoppling mellan klient och databas.
Delphi REST-server vs. direkt DB-åtkomst från klienten
Många befintliga desktoplösningar arbetar med direkt databasåtkomst från klienten. I rena Windows-nätverk var det länge vanligt. Med multiplattform och modern säkerhet blir det svårare:
- Nätverkssegmentering: Databaser ligger inte längre i samma nätverk som klienter; brandväggar blir strängare.
- VPN/Zero Trust: Direkta DB-anslutningar över skiftande nätverk är känsliga för fel.
- Revision och behörigheter: Funktionella behörigheter i applikationen är svåra att avbilda korrekt när varje klient kör SQL direkt.
En REST-server (eller ett tjänstelager) kan centralisera dessa punkter: autentisering, behörigheter, loggning, rate-limiting, versionering. För administratörer är det ofta enklare att drifta än „hundra klienter med databasåtkomst“.
Autentisering och SSO: SAML 2.0, OAuth, Token
I B2B-miljön är Single Sign-on (SSO) ofta obligatoriskt. SAML 2.0 (en standard för identitetsfederation mellan identitetsleverantör och applikation) eller OAuth/OpenID Connect (token-baserade förfaranden) är typiska byggstenar. Avgörande är inte buzzwordet, utan driftsfrågan: Var lagras identiteter, hur fungerar provisioning, hur skyddas tokens, och hur loggas åtkomster revisionssäkert?
Deployment och paketering: Den underskattade arbetsinsatsen
Delphi Multiplattform för Windows, macOS och Linux innebär också: tre världar i paketering. Många kostnader uppstår först efter första go-live, när uppdateringar regelbundet måste rullas ut.
Windows: Installationsprogram, behörigheter, tjänster
På Windows är MSI/installer-processer, gruppolicyer, UAC (User Account Control) och Code-Signing vanliga. Så snart en Windows- och Linux-tjänst är involverad tillkommer ytterligare frågor: tjänstekonto, behörigheter på filsystem och nätverk, startordning, återställningsalternativ och loggrotation. För underhållet är det viktigt att tjänsten är tydligt versionerad och kan uppdateras utan manuella ingrepp.
macOS: Notarisering, signering och Gatekeeper
macOS kräver för distribuerade applikationer i regel signering och beroende på distributionsväg en notarisering (granskningsprocess så att Gatekeeper kör appen). För företag är det mindre ett „Apple-ämne“ än ett processproblem: Vem förvaltar certifikaten, hur ser build-pipelinen ut, hur skapas releaser reproducerbart? Utan denna disciplin blir varje hotfix en engångsåtgärd.
Linux: Paket, beroenden, systemd
På Linux är systemd-enheter (definitioner för hur tjänster startar och övervakas), paketformat (t.ex. DEB/RPM) eller containerbaserade deployments relevanta. För administratörer räknas: tydlig konfiguration, definierade sökvägar, meningsfulla loggar (t.ex. via journald), hälsokontroller och en uppdateringsväg som är kompatibel med den egna distributionspolicyn.
CI/CD und Release-Prozess: Multiplattform braucht reproduzierbare Builds
Senast med tre målplattformar blir „Build per Hand“ en risk. CI/CD (Continuous Integration/Continuous Delivery) betyder här inte nödvändigtvis „allt helt automatiskt i produktion“, utan framför allt: reproducerbara artefakter, spårbara versioner och en standardiserad test- och godkännandeprocess.
I praktiken bör ni åtminstone fastställa:
- Build-matris: Vilka plattformar, vilka varianter (Debug/Release), vilka databasdrivrutiner, vilka valfria moduler?
- Versionering: Enhetliga versionsnummer över klient och server, plus databasmigreringars status.
- Signering: Var signeras det, hur skyddas nycklar (t.ex. HSM eller säkrade build-agenter)?
- Smoke-Tester: Minimala funktionskontroller per plattform som kan blockera varje releasekandidat.
För beslutsfattare är detta en styrningsfråga: Utan release-disciplin blir multiplattform dyrare över åren, eftersom felbilder blir svårare att reproducera och hotfixar får plattformsberoende bieffekter.
Monitoring, Logging und Fehleranalyse: Was im Betrieb wirklich zählt
I vardagen behöver IT-team snabba svar: „Varför har processen fastnat?“, „Är det ett klientproblem eller ett backendproblem?“, „Sedan när uppstår det?“ Multiplattform ökar variationsmängden, så observabiliteten måste bli bättre.
Enhetlig loggstrategi för klient och server
En flerstegs loggstrategi är beprövad:
- Klientloggar: lokala loggar med rotation, entydig korrelationsreferens (t.ex. Request-ID), i enlighet med dataskyddsregler.
- Serverloggar: central lagring, strukturerade poster (tidsmässigt korrekta, maskinläsbara), separation av audit- och debug-loggar.
- Metriker: svarstider, felkvoter, kölängder, databaspoolbelastning.
Speciellt i REST-arkitekturer är en Request-ID (en entydig identifierare per begäran som förs vidare genom alla komponenter) ovärderlig, eftersom supportfall därmed kan avgränsas på minuter istället för timmar.
Kraschhantering och symboliserad felanalys
På desktopplattformar måste crash-dumps och stacktraces hanteras så att de är användbara i supporten utan att läcka känsliga data. Det är en organisatorisk fråga: vilka data får överföras? Hur inhämtas samtycke? Hur säkras debug-symboler och kopplas till versioner? Utan dessa frågor återstår multiplattforms-support ofta som att famla i mörkret.
Säkerhet och regelefterlevnad: plattformar innebär olika angreppsytor
Med Windows, macOS och Linux ökar inte automatiskt risken, men angreppsyta blir mer mångsidig. Typiska punkter som i projekt ofta adresseras för sent:
- Certifikatshantering: TLS-certifikat för servrar, klientcertifikat, utgångsdatum, automatiserad förnyelse.
- Secrets: databaslösenord, API-nycklar, signeringsnycklar – inte i klartextkonfigurationer eller i installationsskript.
- Behörighetskoncept: principen om minst privilegium för tjänster, tydlig separation mellan admin- och användarfunktioner.
- Uppdaterbarhet: säkerhetsfixar måste kunna rullas ut snabbt; det är direkt beroende av paketerings- och releaseprocessen.
Särskilt i företag med revisionskrav är det värt att tidigt definiera en kort säkerhetschecklista per plattform och inkludera den i godkännandet.
Typiska fallgropar från multiplattformsprojekt
Vissa problem återkommer – inte för att teamen „arbetar dåligt“, utan för att de var osynliga i historik som bara omfattade Windows:
Filsystem och sökvägar: liten detalj, stor påverkan
Olika sökvägskonventioner, skiftlägeskänslighet (stor-/liten bokstav), användarkataloger och rättigheter leder till fel vid export, bilagor, temporära filer eller cache. Här hjälper ett konsekvent abstraktionskoncept: centrala sökvägstjänster, definierade appkataloger, inga „hårdkodade“ lagringsplatser.
Utskrift, PDF och Office-integration
Utskrifts- och dokumentarbetsflöden är ofta kritiska i affärsprocesser. Windows har etablerade utskriftsvägar, macOS och Linux beter sig annorlunda. Om PDF-generering, signaturer eller verifikatutskrifter är relevanta bör dessa funktioner testas tidigt på alla målplattformar – inte först strax före lansering.
Unicode och teckenuppsättningar
Senast när det handlar om blandade plattformar, gränssnitt och databaser blir Unicode (en teckenuppsättningsstandard för internationella tecken) ett måste. Äldre system med „ANSI“-historik ger annars svårförståeliga fel i sökning, sortering, CSV-exporter eller gränssnitt. En Unicode-strategi omfattar UI, databaskolumner, gränssnitt och testdata.
32/64-Bit und Bibliotheksabhängigkeiten
En klassiker: en drivrutin eller ett tredjepartsbibliotek finns bara för en arkitektur. För drift innebär det: tydlig beroendelista, dokumentera versioner, kontrollera licens- och uppdateringsmöjlighet. Multiplattform är bara så stabilt som den svagaste beroendekomponenten.
Entscheidungshilfe: Wann lohnt sich Delphi Multiplattform wirklich?
Ett pragmatiskt perspektiv på insats och nytta hjälper att sakliggöra diskussioner. Multiplattform lönar sig typiskt när:
- den funktionella kärnan är långsiktigt stabil och återanvändning lönar sig över flera år,
- det finns verkliga organisatoriska skäl för macOS-klienter (inte bara ‚trevligt att ha‘),
- Linux i backend redan är standard och tjänster/REST planeras,
- applikationen måste integreras i ett integrationsnätverk med ERP/DMS/CRM,
- en ordnad release-process kan etableras (Build, signering, tester).
Multiplattform är mindre meningsfullt när applikationen i hög grad är beroende av Windows-specifika komponenter (t.ex. djup Office-automation, särskilda drivrutiner, COM-baserade integrationer) och dessa funktioner inte kan klart kapslas in. Då är ofta en hybridstrategi mer realistisk: Windows-klient för specialfall, portal/REST för plattformsneutrala processer.
Modernisierungspfad: Multiplattform ohne kompletten Neustart
För många företag är den viktigaste poängen: Multiplattform behöver inte innebära att allt måste skrivas om. En hållbar väg ser ofta ut så här:
- Nulägesanalys och definiera gränssnitt: Vilka moduler är funktionellt stabila, vilka är UI- eller databasknära, var finns de största riskerna?
- Konsolidera dataåtkomst: t.ex. BDE-ersättning, BDE-Ablosung mit nativer Anbindung, enhetlig anslutnings- och transaktionsstrategi.
- Inför en serviceskikt: REST-API för kärnprocesser, successiv ersättning av direkt DB-åtkomst.
- Prioritera plattformar: Stabilisera först backend på Linux, sedan macOS-klient för definierade användargrupper, istället för att göra allt samtidigt.
- Professionaliser packaging/CI: reproducerbara Builds och uppdateringar som en fast del av projektet.
Denna väg är särskilt lämplig för individuell företagsprogramvara med långa livscykler, eftersom den skyddar affärslogik och kontrollerat minskar tekniska risker.
Fazit: Multiplattform ist eine Betriebsentscheidung – nicht nur eine Entwicklerentscheidung
Delphi Multiplattform för Windows, macOS och Linux kan för företag vara en mycket pragmatisk väg för att tekniskt vidareutveckla befintliga processer utan att förlora den funktionella kärnan. Avgörande är att planera Multiplattform som ett helhetspaket: arkitektur med tydliga lager, konsoliderad dataåtkomst, servicevänliga gränssnitt, reproducerbara Builds, ordnad packaging och en logging-/monitoring-strategi som snabbt klargör supportfall.
Om dessa grundläggande förutsättningar är på plats blir multiplattform inte ett långvarigt projekt, utan en kontrollerbar utbyggnad av ert digitala företagslösning – med realistiska driftskostnader och en roadmap som förbinder migration och vidareutveckling.
Om ni vill bedöma ert utgångsläge (bestånd, målplattformar, databas, gränssnitt och driftsmodell) strukturerat: kontakta oss för ett tekniskt inledande samtal.
I det tekniska sammanhanget spelar även Delphi Modernisering en viktig roll när integrationer, dataflöden och vidareutveckling måste samspela på ett ordnat sätt.
nästa steg
När ett ämne blir ett verkligt projekt bör arkitektur, befintligt bestånd och drift tidigt ses över gemensamt.
Vi stöder inte bara vid enstaka frågor, utan även när kodsfragment, legacy-frågor eller portalidéer ska utvecklas till ett robust företagsprojekt.
- Nuläge, målbild och tekniska risker bedöms tillsammans.
- REST, dataåtkomst, portaler och utrullning skjuts inte upp som sena följder.
- Ni ser tidigt vilken väg som är ekonomiskt och driftmässigt hållbar.