Od tématu magazínu k projektové praxi
Vhodné stránky služeb a technické stránky k příspěvku
Když se ve firmách mluví o Delphi Multiplattform pro Windows, macOS a Linux, málokdy jde o „techniku pro techniku samu“. Většinou je za tím konkrétní situace: dlouhodobě provozovaný podnikový software běží spolehlivě na Windows, ale oborová oddělení požadují macOS-klienty, IT týmy chtějí Linux-Services integrovat do stávajících serverových standardů, nebo se plánuje modernizace, aniž by se měl znovu vyvíjet celý funkční rozsah.
Delphi může v tomto napětí fungovat jako pragmatický most – za předpokladu, že multiplatformu chápeme jako provozní a architektonické téma. Skutečné náklady nevznikají při prvním sestavení, ale při údržbě, release-procesu, bezpečnostních aktualizacích, přístupu k datům, správě ovladačů, balíčkování a podpoře. Tento příspěvek objasňuje, jak multiplatformu realisticky plánovat, která technická rozhodnutí se v provozu projeví a která úskalí se v projektech typicky objeví pozdě.
Proč je multiplatforma ve firmách zřídka „jen funkce“
V praxi vzniká potřeba multiplatformy ze tří typických hnacích sil:
- Heterogenní koncová zařízení: Windows je zavedené, macOS přichází z managementu, prodeje, designu nebo vedení. Linux se objevuje buď jako desktop v specializovaných prostředích, nebo jako serverový standard v datovém centru.
- Standardizace v provozu: Mnoho IT oddělení chce konsolidovat Services na Linux (monitoring, správa balíčků, hardening), i když klienti zůstanou nadále Windows.
- Modernizace bez Big Bang: Stávající aplikace by měly být krok za krokem převedeny do udržovatelných vrstev, často paralelně s databázovými a integračními projekty.
Důležité je rozlišení: Multiplatforma na klientovi (desktopová aplikace) je jiné téma než multiplatforma v backendu (Services/REST). Právě v B2B kontextu se často vyplatí hybridní přístup: stabilní Windows-klienti, ale na serverové straně Linux-Services a REST-API pro integraci, automatizaci a webové portály.
Delphi Multiplattform für Windows, macOS und Linux: Co to konkrétně znamená
Multiplatforma v Delphi není kouzelná hůlka, ale soubor nástrojů. Pro IT a provoz jsou přitom rozhodující tři úrovně:
- UI vrstva: Na Windows v mnoha firmách existuje zavedený svět VCL (klasické Windows-rozhraní). Pro skutečné multiplatformní klienty se obvykle používá FireMonkey (FMX), které umožňuje stejný vzhled na různých operačních systémech – s příslušnými nativními zvláštnostmi.
- Doménová logika: Hlavní páka je ve společné, čistě enkapsulované logice. Kdo oddělí doménovou logiku a přístup k datům od UI, může měnit platformy, aniž by musel produkt znovu vynalézat.
- Runtime a nasazení: Každá platforma má odlišné požadavky na instalaci, práva, podepisování, aktualizace, cesty, certifikáty a knihovny. Právě zde se rozhoduje, zda je multiplatforma v každodenním provozu „lehké“ nebo „nákladné“.
Pro rozhodovatele tedy hlavní otázka není „Kann Delphi macOS und Linux?“, ale: Které části našeho řešení musí skutečně být multiplatformní – a jak zajistíme provoz a udržovatelnost po léta?
Architektura: Největší násobitel nákladů na údržbu
Multiplatformní projekty zřídka krachují kvůli kompilátoru, ale kvůli chybějící odpojenosti. Ve stávajících aplikacích je často všechno promícháno: UI-události, přístup k databázi, podniková logika, tisk, souborový systém, síťová volání. To funguje na „tom jednom Windows-PC“, ale stává se to trvalým stavem, jakmile rozšiřujete platformy nebo outsourcujete služby.
Vrstevný model místo „formuláře jako středobod“
Osvědčené je jasné vrstevné rozdělení (často označované jako architektura vrstev):
- Prezentace: desktopové UI (VCL nebo FMX) nebo webová frontendy.
- Aplikační a odborná logika: pravidla, workflowy, oprávnění, validace; ideálně bez přímé závislosti na UI nebo ovladačích databází.
- Integracní vrstva: napojení na ERP/DMS/CRM, souborové rozhraní, messaging, REST.
- Přístup k datům: konsolidovaný přístup přes jasně definované hranice repository-/service, místo SQL na každém kroku.
Toto oddělení není akademická cvičení: snižuje počet platformních výjimek, usnadňuje testování, umožňuje serverové komponenty a dělá migrace databází (např. na PostgreSQL) výrazně lépe kontrolovatelnými.
Sdílená odborná logika: multiplatforma bez dvojího vývoje
Pokud to s multiplatformností myslíte vážně, měla by být odborná logika navržena tak, aby běžela stejně v desktopové aplikaci i v servisu. To je zvlášť relevantní, když později doplníte zákaznický portál, interní webové rozhraní nebo integraci REST. V praxi to znamená: odborná rozhodnutí patří do servisů/modulů, ne do klikacích událostí v masce.
UI-strategie: ponechat VCL, cíleně nasadit FMX, doplnit webem
Mnoho firem má silnou Windows-desktopovou základnu. Okamžitý přechod na novou UI technologii je často zbytečně rizikový. Typické udržitelné strategie jsou:
Strategie A: Windows-klient zůstává VCL, backend se stává platformně neutrálním
Zde se jádrová logika postupně extrahuje z VCL-aplikace: do knihoven a serverových komponent. Výsledek: Windows-klient zůstává stabilní, zatímco integrace, automatizace a nové frontendy vznikají přes služby. Linux vstupuje do hry přes provoz serveru (např. REST-Server nebo background služby).
Strategie B: multiplatformní klient s FMX pro definované scénáře
FMX dává smysl, pokud skutečně potřebujete tentýž klient na Windows a macOS, například pro terénní pracovníky, mobilní pracovní stanice nebo smíšené flotily. Důležité: UI detaily (písma, klávesové zkratky, dialogy, výběr souborů) se liší podle platformy. To je třeba zohlednit v testování a podpoře.
Strategie C: desktop doplněný portálem
Mnoho firem neřeší „macOS-téma“ plnohodnotným klientem, ale portálem pro jasně vymezené procesy: dotazy, schvalování, stav zakázek, dokumenty. To odlehčí desktopovým rolloutům, sníží náklady na instalaci a často se rychleji zpevní, protože centrální webová vrstva je snáze kontrolovatelná.
Přístup k datům a databáze: FireDAC jako provozní faktor stability
V multiplatformních architekturách je přístup k datům často oblastí, kde se historické dědictví stává nejdražším. Zejména starší Delphi-systémy jsou vázané na Borland Database Engine (BDE) nebo na ovladače, které fungují spolehlivě pouze na Windows. Pro provoz to představuje riziko: dostupnost ovladačů, otázky 32/64 bitů, Unicode, bezpečnostní záplaty a monitoring jsou obtížně zvládnutelné.
Strategie ovladačů: jednotná, dokumentovaná, testovatelná
Náhrada BDE s nativním připojením je v Delphi rozšířená vrstva přístupu k datům, která jednotně oslovuje různé databáze. Pro provoz je méně relevantní „jak elegantně“ to vypadá v kódu, než:
- Které klientské knihovny jsou potřeba? (např. PostgreSQL-, MariaDB- nebo Oracle-klient)
- Jak budou distribuovány? Součást instalátoru, centrálně spravováno, image kontejneru
- Jak budou bezpečně spravovány parametry připojení? (Secrets, chráněná konfigurace, žádná hesla v prostém textu v souborech)
- Jak stabilní je chování při poruchách sítě? Retries, Timeouts, Pooling
Migrace databází: multiplatforma jako příležitost pro čisté rozhraní
Pokud se platformy stejně rozšiřují, je to často správný okamžik konsolidovat přístup k datům. Migrace (např. ze starých formátů souborů nebo embedded databází na SQL systémy jako PostgreSQL nebo SQL Server) by měla probíhat jako projekt s jasnými fázemi: datový model, migrační nástroje, paralelní provoz, akceptace, plán návratu. Multiplatforma zde zvyšuje tlak, protože „Windows-only“-ovladače nebo cesty k souborům na macOS/Linux už nebudou fungovat.
Služby a rozhraní: REST jako most mezi platformami
V heterogenních prostředích je přístup REST (REST = HTTP‑založené rozhraní s jasnými zdroji a metodami) často nejpraktičtějším způsobem propojení platforem. Pro provoz to znamená: centrální autentizace, standardizované protokoly, lepší observability (logy/metriky) a čisté oddělení mezi klientem a databází.
Delphi REST-Server vs. přímý přístup klienta k DB
Mnoho stávajících desktopových řešení pracuje s přímým přístupem k databázi z klienta. V čistých Windows sítích to dlouho bylo obvyklé. S multiplatformou a moderní bezpečností se to stává obtížnějším:
- Segmentace sítě: Databáze už neleží ve stejné síti jako klienti; firewally jsou přísnější.
- VPN/Zero Trust: Přímá spojení k DB přes proměnné sítě jsou náchylná k chybám.
- Audit a práva: Odborná práva v aplikaci je těžké přesně zmapovat, pokud každý klient přímo posílá SQL.
REST-Server (nebo vrstva služeb) může tyto body centralizovat: autentizace, oprávnění, protokolování, omezení počtu požadavků (rate limiting), správa verzí. Pro administrátory je to často snazší provozovat než „sto klientů s přístupem k databázi“.
Autentizace a SSO: SAML 2.0, OAuth, Token
V B2B prostředí je Single Sign-on (SSO) často povinný. SAML 2.0 (standard pro federaci identit mezi Identity Provider a aplikací) nebo OAuth/OpenID Connect (postupy založené na tokenech) jsou typické stavební bloky. Rozhodující není buzzword, ale provozní otázka: kde jsou identity uloženy, jak probíhá provisioning, jak jsou tokeny zabezpečeny a jak jsou přístupy vedeny v auditovatelných záznamech?
Nasazení a balení: podceňované úsilí
Delphi Multiplatformní pro Windows, macOS a Linux znamená také: tři světy v balení. Mnoho nákladů vzniká až po prvním uvedení do provozu, když je třeba pravidelně nasazovat aktualizace.
Windows: Instalátory, práva, služby
Na Windows jsou standardem MSI/instalační procesy, skupinové zásady, UAC (User Account Control) a podepisování kódu. Jakmile je zapojen Windows- a Linux-služby, přidávají se další témata: služební účet, oprávnění k souborovému systému a síti, pořadí spuštění, možnosti obnovy a rotace logů. Pro údržbu je důležité, aby byla služba jasně verzována a aby se dala aktualizovat bez manuálních zásahů.
macOS: Notarizace, podepisování a Gatekeeper
macOS obvykle vyžaduje pro distribuované aplikace podepisování a v závislosti na způsobu distribuce notarizaci (ověřovací proces, aby Gatekeeper aplikaci spustil). Pro firmy je to méně „Apple-téma“ než procesní problém: kdo drží certifikáty, jak běží build-pipeline, jak jsou releasy reprodukovatelně vytvářeny? Bez této disciplíny se každý hotfix stane jednorázovou akcí.
Linux: Balíčky, závislosti, systemd
Na Linux jsou relevantní systemd jednotky (definice, jak se služby spouštějí a monitorují), formáty balíčků (např. DEB/RPM) nebo kontejnerová nasazení. Pro administrátory platí: jasná konfigurace, definované cesty, smysluplné logy (např. přes journald), health-checky a cesta aktualizací, která je kompatibilní s interní distribuční politikou.
CI/CD a proces vydávání: Multiplatforma vyžaduje reprodukovatelné sestavení
S třemi cílovými platformami se „ruční build“ stává rizikem. CI/CD (Continuous Integration/Continuous Delivery) zde neznamená nutně „vše plně automaticky do produkce“, ale především: reprodukovatelné artefakty, sledovatelné verze a standardizovaný testovací a schvalovací proces.
V praxi byste měli minimálně stanovit:
- Build-matrix: Které platformy, které varianty (Debug/Release), které databázové ovladače, které volitelné moduly?
- Správa verzí: Jednotná čísla verzí pro klienta a server, plus stavy migrací databáze.
- Podepisování: Kde se podepisuje, jak jsou klíče chráněny (např. HSM nebo zabezpečení build-agentů)?
- Smoke-testy: Minimální funkční kontroly pro každou platformu, které mohou blokovat kandidáta na vydání.
Pro rozhodovatele je to otázka governance: bez disciplíny při vydávání se multiplatformní řešení v průběhu let prodraží, protože chybové stavy jsou hůře reprodukovatelné a hotfixy mají rozdílné vedlejší účinky na jednotlivých platformách.
Monitoring, Logging und Fehleranalyse: Was im Betrieb wirklich zählt
V každodenním provozu potřebují IT týmy rychlé odpovědi: „Proč proces uvázl?“, „Je to problém klienta nebo backendu?“, „Od kdy se to vyskytuje?“ Víceplatformní prostředí zvyšuje variabilitu, proto musí Observability zlepšit.
Jednotná logovací strategie pro klienta a server
Osvědčená je stupňovitá logovací strategie:
- Logy na klientovi: lokální logy s rotací, jednoznačné korelační vazby (např. Request-ID), v souladu s ochranou osobních údajů.
- Logy na serveru: centrální uložení, strukturované záznamy (časově přesné, strojově čitelné), oddělení auditních a debug logů.
- Metriky: časy odezvy, chybovost, délky front, vytížení poolu databázových připojení.
Zvláště u REST-architektur je Request-ID (jedinečný identifikátor pro každé volání, který se předává přes všechny komponenty) nesmírně cenná, protože díky ní se případy podpory ohraničí v minutách místo hodin.
Zpracování pádů a symbolizované vyhodnocení chyb
Na desktopových platformách musí být crash-dumpy a stacktrace tak ošetřeny, aby byly v podpoře použitelné, aniž by došlo k úniku citlivých dat. To je organizační otázka: jaká data je dovoleno přenášet? Jak se získává souhlas? Jak jsou debug symboly zabezpečeny a jak se párují s verzemi? Bez vyřešení těchto otázek bývá víceplatformní podpora často tápáním naslepo.
Bezpečnost a compliance: platformy znamenají různé útočné plochy
S Windows, macOS a Linux se riziko automaticky nezvyšuje, ale útočná plocha je rozmanitější. Typické body, které se v projektech často řeší příliš pozdě:
- Správa certifikátů: TLS certifikáty pro servery, klientské certifikáty, data expirace, automatizovaná obnova.
- Secrets: databázová hesla, API klíče, podepisovací klíče – nesmí být v konfiguračních souborech v plném textu ani v instalačních skriptech.
- Koncept práv: princip nejmenších práv (Least Privilege) pro služby, jasné oddělení administrátorských a uživatelských funkcí.
- Schopnost aktualizací: bezpečnostní opravy musí být rychle nasaditelné; to přímo závisí na procesu balení a vydávání.
Právě ve firmách s auditorskými požadavky se vyplatí brzy definovat krátký bezpečnostní checklist pro každou platformu a zahrnout ho do akceptace.
Typické úskalí z víceplatformních projektů
Některé problémy se opakují – ne proto, že týmy „pracují špatně“, ale protože byly v historiích omezených pouze na Windows neviditelné:
Souborový systém a cesty: malý detail, velký dopad
Různé konvence cest, case-sensitivity (rozlišování velkých a malých písmen), uživatelské adresáře a práva vedou k chybám při exportech, přílohách, dočasných souborech nebo cache. Pomůže konsekventní koncept abstrakce: centrální path služby, definované app adresáře, žádná „pevně zakódovaná“ umístění.
Tisk, PDF a integrace s Office
Tiskové a dokumentové workflow jsou v podnikových procesech často kritické. Windows má zavedené tiskové cesty, macOS a Linux se chovají odlišně. Pokud jsou relevantní generování PDF, podpisy nebo výstupy dokladů, měly by být tyto funkce testovány brzy na všech cílových platformách – ne až těsně před roll-outem.
Unicode a znakové sady
Nejpozději u smíšených platforem, rozhraní a databází se Unicode (standard znakové sady pro mezinárodní znaky) stává nutností. Staré záznamy s historií „ANSI“ jinak způsobují těžko vysledovatelné chyby při vyhledávání, řazení, CSV exportech nebo rozhraních. Strategie pro Unicode zahrnuje uživatelské rozhraní, sloupce v databázi, rozhraní a testovací data.
32/64-Bit a závislosti knihoven
Klasika: ovladač nebo knihovna třetí strany je dostupná pouze pro jednu architekturu. Pro provoz to znamená: jasný seznam závislostí, zdokumentované verze, ověření licencí a možnost aktualizace. Multiplatformní řešení je tak stabilní, jako jeho nejslabší závislost.
Rozhodovací pomůcka: Kdy se Delphi Multiplattform opravdu vyplatí?
Pragmatický pohled na náklady a přínos pomůže diskuse zkonkretizovat. Multiplatformní řešení se typicky vyplatí, když:
- je věcné jádro dlouhodobě stabilní a opakované využití se v průběhu let vyplatí,
- existují reálné organizační důvody pro macOS-klienty (nejen „bylo by pěkné“),
- Linux je v backendu i tak standard a plánují se služby/REST,
- musí být aplikace integrována do sítě ERP/DMS/CRM,
- lze vybudovat čistý release-proces (build, podepisování, testy).
Multiplatforma má menší smysl, pokud aplikace výrazně závisí na komponentách specifických pro Windows (např. hluboká Office-automace, speciální ovladače, integrace založené na COM) a tyto funkce nejsou jasně kapslovatelné. V takovém případě je často realističtější smíšená strategie: Windows-klient pro speciální případy, portál/REST pro platformně neutrální procesy.
Modernizační cesta: Multiplatforma bez kompletního přepisování
Pro mnoho firem je klíčové: multiplatforma nemusí znamenat psát vše znovu. Robustní cesta často vypadá takto:
- Analýza stavu a definování hranic rozhraní: Které moduly jsou věcně stabilní, které jsou blíže uživatelskému rozhraní nebo databázi, kde jsou největší rizika?
- Konsolidace přístupu k datům: např. BDE-Ablösung, BDE-Ablosung mit nativer Anbindung, jednotná strategie připojení a transakcí.
- Zavedení servisní vrstvy: REST-API pro klíčové procesy, postupné nahrazování přímého přístupu k DB.
- Prioritizace platforem: Nejprve stabilizovat backend na Linux, pak macOS-klienta pro definované skupiny uživatelů, místo všeho najednou.
- Profesionalizace Packaging/CI: reprodukovatelné buildy a aktualizace jako pevná součást projektu.
Tato cesta je obzvlášť vhodná pro individuální podnikový software s dlouhými životními cykly, protože chrání doménovou logiku a kontrolovaně snižuje technická rizika.
Závěr: Multiplattform je provozní rozhodnutí – ne jen rozhodnutí vývojářů
Delphi Multiplattform für Windows, macOS und Linux může být pro společnosti velmi pragmatickou cestou, jak technicky posunout zavedené procesy, aniž by se ztratil věcný střed. Rozhodující je plánovat multiplatformu jako celek: architektura s jasnými vrstvami, konsolidovaný přístup k datům, rozhraní vhodná pro služby, reprodukovatelné buildy, pořádek v packagingu a strategie logování/monitoringu, která rychle objasní případné podpůrné incidenty.
Když jsou tyto základy na místě, multiplatformní řešení se nestane trvalým projektem, ale kontrolovatelným rozšířením vašeho digitálního podnikového řešení – s realistickými provozními náklady a roadmapou, která propojuje migraci a další rozvoj.
Pokud chcete svou výchozí situaci (stávající stav, cílové platformy, databázi, rozhraní a provozní model) strukturovaně zhodnotit: Kontaktujte nás pro technické úvodní jednání.
V odborném prostředí hraje také Delphi modernizace důležitou roli, pokud musí integrace, datové toky a další vývoj bezproblémově spolupracovat.
Další krok
Když se z tématu stane reálný projekt, měly by být architektura, stávající systém a provoz včas posuzovány společně.
Podporujeme nejen při jednotlivých otázkách, ale i v případě, že se z útržků zdrojového kódu, legacy témat nebo nápadů na portál má vyvinout robustní podnikový projekt.
- Současný stav, cílový stav a technická rizika jsou hodnoceny společně.
- REST, přístup k datům, portály a nasazení nebudou odkládány na později.
- Vidíte včas, která cesta je ekonomicky i provozně životaschopná.