Od témy magazínu k projektovej praxi
Súvisiace stránky služieb a technológií k príspevku
Video-Botschaft
Kombinácia Delphi Desktop a webových portálov: architektúra, rozhrania a modernizácia bez prerušenia
Warum „Portal statt Desktop“ oft scheitert und wie ein gemeinsamer Service-Kern Desktop und Web-Portal konsistent verbindet – mit Fokus auf Betrieb, Rechte und wartbare Schnittstellen.
Video mit KI erstellt
Transkript anzeigen
Guten Tag. Der größte Fehler ist, Portal und Desktop getrennt weiterzuentwickeln.
Im Beitrag „Delphi Desktop und Web-Portale kombinieren: Architektur, Schnittstellen und Modernisierung ohne Bruch“ geht es genau darum. Viele Firmen haben eine stabile Delphi-Desktopanwendung.
Intern läuft damit alles schnell. Aber extern brauchen Kunden und Partner ein Web-Portal – ohne VPN und ohne Client-Rollout.
Wenn man dann nur „Masken im Browser“ nachbaut, entstehen doppelte Regeln. Das merkt man im Betrieb: andere Ergebnisse, mehr Support, schwerere Fehleranalyse.
Die saubere Lösung ist ein gemeinsamer Service-Kern. Also eine zentrale Prozessschicht, die Rechte, Prüfungen und Statuswechsel übernimmt.
Desktop und Portal greifen über definierte Schnittstellen darauf zu. So modernisieren Sie schrittweise, ohne Big-Bang.
Wenn dazu Fragen offen sind, sprechen Sie mich gern an. Wenn Sie dazu Fragen haben oder das Thema auf Ihre eigene Umgebung beziehen moechten, sprechen Sie uns gern an.
V mnohých spoločnostiach sa odborné „riadiace centrum“ počas rokov vyvinulo ako Delphi-desktopová aplikácia: VCL-klient, hlboké procesné vedomosti, rýchle zadávanie údajov, tlačové a reportovacie trasy, špeciálny hardvér a často priame prístup k databáze v LAN. Súčasne rastú očakávania týkajúce sa self-service a externej spolupráce: zákazníci chcú kontrolovať stav objednávok, vymieňať si dokumenty alebo evidovať reklamácie – bez VPN, bez nasadenia desktopového klienta a bez lokálnych inštalácií.
Delphi Desktop a webové portály kombinovať v praxi znamená spojiť tieto dva svety tak, aby prevádzka, bezpečnosť a konzistencia dát zostali pod kontrolou. Rozhodujúce nie je „prekódovať“ masky do prehliadača, ale architektúra, ktorá dôsledne oddeľuje procesy, práva a dátové toky a nechá obe frontendy pracovať podľa spoločných pravidiel. Výhodou je modernizačná cesta bez Big-Bang: desktop zostáva produktívny, zatiaľ čo webový portál rastie riadeným spôsobom.
Tento článok je určený pre IT vedenie, administrátorov a technických projektových zodpovedných. V centre pozornosti sú dopady na prevádzku, administráciu, rozhrania, bezpečnosť, ukladanie dát a migráciu – menej detaily frameworkov. Dostanete praktické vzory, kritériá pre rozhodovanie a typické úskalia vrátane protiprázdnych opatrení.
Prečo je „portál namiesto desktopu“ zriedka realistický
V B2B prostredí existuje mnoho dôvodov, prečo desktopový klient zostáva opodstatnený. Administrátori to často zažívajú konkrétne: portál je ideálny pre distribuovaných používateľov, ale určité úlohy zostávajú v desktope efektívnejšie alebo sú v ňom vôbec možné.
Sily desktopu, ktoré v každodennom živote rozhodujú
- Komplexné zadávanie dát s veľmi hustými formulármi, ovládaním klávesnicou, veľkými tabuľkovými pohľadmi a rýchlym prepínaním medzi záznamami.
- Periférie a lokálne integrácie ako tlačiarne štítkov, skenery, sériové zariadenia alebo špeciálne Windows komponenty.
- Výkon blízko LAN, keď sa spracúvajú veľké objemy dát alebo proces vyžaduje extrémne nízku latenciu.
- Vytvorené workflowy s mnohými výnimkami, pri ktorých by 1:1 portovanie do portálu prinieslo vysoké riziká.
Silné stránky portálu, ktoré pokrývajú nové požiadavky
- Externý prístup pre zákazníkov, dodávateľov alebo partnerov bez nutnosti nasadzovať klienta.
- Centrálna riaditeľnosť (verzie, funkcie, oprávnenia) s jasnou vonkajšou hranicou.
- Nezávislosť na zariadení (prehliadač, mobilné používanie) pre obchodných zástupcov a manažment.
- Cielené otvorenia procesov ako dotazy na stav, nahrávanie, schvaľovania alebo ticketové postupy.
V kombinácii spočíva prínos: desktop zostáva power-nástrojom pre interné role, portál sa stane kontrolovaným vstupom pre externé skupiny používateľov. Aby to neviedlo k dvom paralelným „pravdám“, potrebuje sa prepojujúce jadro.
Keď kombinujete Delphi Desktop a webové portály: tri cieľové architektúry
Pri rozhodovaní o architektúre ide predovšetkým o zodpovednosti: Kde leží odborne pravidlo? Kto smie meniť dáta? Ktorá vrstva je „Single Source of Truth“ (teda rozhodujúcim zdrojom pre pravidlá a stavy)? Pre technických rozhodcov je dôležité: voľba má priame dôsledky na prevádzku, ladenie chýb, release management a bezpečnosť.
Varianta A: portál ako doplnok cez REST-API, desktop zostáva vedúci
Portál obsluhuje vybrané use case, typicky „čítať a spúšťať“: stav, dokumenty, schválenia, jednoduché zadávania. Na to sa zavádza Delphi REST-API alebo samostatný REST-server. Desktopová aplikácia môže spočiatku naďalej pristupovať priamo do databázy.
Prevádzková výhoda: rýchly štart, malé zásahy do desktopu, vhodné pre prvé pridanie hodnoty cez portál.
Rizikový bod: Existujú dva dátové toky (Desktop → DB priamo, Portál → API). Ak sú obchodné pravidlá len v desktope, vznikajú nekonzistencie. Ako opatrenie by portálové funkcie mali začať tam, kde sú pravidlá jednoduché a serverovo zobrazené (napr. sprístupnenie dokumentov, dotaz na stav, definované akcie schválenia).
Varianta B: servisné jadro ako spoločná procesná vrstva (odporúčané pri paralelnom prevádzke)
Tu postupne presúvate obchodnú logiku z desktopu do služieb. Desktop a portál využívajú rovnaké endpointy. Desktop sa viac stáva rich klientom (UI, lokálne integrácie), pravidlá a validácie sú server-side.
Prevádzková výhoda: jedno centrálne miesto pre práva, audit, logiku stavov a validácie; konzistentné správanie vo všetkých frontendoch.
Náročnosť: vyššia na začiatku, pretože treba dôsledne plánovať štandardy API, formáty chýb, verzionovanie, monitoring a deployment. Na druhej strane sa neskôr náklady výrazne znižujú, pretože je menej výnimiek a obchádzok.
Varianta C: portál vedie, desktop zostáva ako špecializovaný klient
Táto varianta má zmysel, ak má byť prehliadač strategicky štandardným prístupom (napr. silne distribuovaná organizácia), ale desktop zostane pre určité role so špeciálnym hardvérom alebo vysoko výkonným zadávaním. Servisné jadro must byť zvlášť stabilné a škálovateľné.
Layer-3 architektúra ako zrozumiteľná smernica
Nezávisle od varianty pomáha Layer-3 architektúra: (1) prezentácia (desktop/portál), (2) aplikačná a doménová vrstva (use casey, pravidlá), (3) infraštruktúra (databáza, úložisko súborov, messaging, externé systémy). Pre administrátorov je to dôležité, pretože hranice prevádzky sú jasné: čo je „frontend-problém“, čo je „service-problém“, čo leží v databáze alebo v storage? Toto rozdelenie skracuje pátranie po chybách a znižuje vedľajšie účinky pri deploymente.
Praktický vzťah: ako desktop a portál zdieľajú rovnaký proces
Najväčšia výzva zriedka spočíva v „postavení portálu“, ale v otázke: ako si desktop a portál rozdelia zodpovednosti v tom istom procese bez dvojitej implementácie pravidiel? Tri vzory sú v praxi obzvlášť relevantné.
1) Use-Case-API namiesto tabulkových alebo CRUD-API
Bežnou slepou uličkou je API, ktoré len mapuje databázové tabuľky navonok („Create/Read/Update/Delete“). Potom musia byť pravidlá v portáli znovu implementované a desktop si zachová svoje vlastné pravidlá. Lepšie sú Use-Case-API: endpointy popisujú odborné akcie ako „vytvoriť reklamáciu“, „uvolniť objednávku“, „nahrať dokument“, „potvrdiť stav dodávky”.
Efekt v prevádzke je citeľný: validácie prebiehajú serverovo, chybové hlásenia sú reprodukovateľné a oba klienty (desktop aj portál) spúšťajú ten istý tok cez rovnakú logiku.
2) Konflikty a opakovania udržať pod kontrolou
S portálom rastie pravdepodobnosť paralelných zmien a opakovaných requestov (napr. kvôli timeoutom, retries alebo dvojitému kliknutiu používateľa). Pomôžu tri koncepty, bez zavádzania „permanentných zámkov“:
- Idempotencia: kritické akcie sú navrhnuté tak, aby opakovanie malo rovnaký efekt a nič sa nevykonalo dvakrát. Prakticky to často prebieha cez jedinečný identifikátor requestu (Idempotency Key).
- Optimistic Concurrency: záznam nesie informáciu o verzii (napr. „Row Version“). Pri zmene service skontroluje, či verzia stále sedí, a konflikty vráti čitateľne.
- Krátke transakcie: namiesto „uzamknúť všetko“ držíte zápisové operácie krátko. Dlhšie práce (napr. exporty, balíky reportov) bežia asynchrónne.
Pre technických rozhodcov je dôležité: tieto mechanizmy znižujú nároky na support, pretože chybové stavy („stalo sa to dvakrát“, „moja zmena zmizla“) sú výrazne menej časté.
3) Stavy a predávania jasne modelovať
Ak desktop rieši komplexné prípady a portál len podáva žiadosti alebo predprípravy, potrebujete definované prechody stavov. Praktický rez je: portál vytvára alebo dopĺňa prípady v jasne ohraničených stavových oblastiach (napr. „podané“), desktop spracováva špecializované prípady a servisné jadro rozhoduje a protokoluje zmeny stavov. Tak zabrániate, aby portál priamo „zlékonfiguroval“ procesy.
Dáta a dokumenty: často podceňovaná oblasť integrácie
Takmer každý portál prináša súborové operácie: nahrávania, doklady, dodacie listy, obrázky, PDF-výstupy. Pre administrátorov je to kľúčový bod, pretože ovplyvňuje zálohovanie, oprávnenia, antivírusovú kontrolu, náklady na storage a výkon.
Kde ukladať súbory: databáza, fileshare alebo objektové úložisko?
Existujú tri bežné možnosti ukladania, z ktorých každá vedie k inej prevádzkovej realite:
- Databáza (BLOB): vhodné, keď musia byť transakcie striktne previazané a backup/restore má zostať v jednom balíku. Nevýhodou sú často väčšie databázy a dlhšie okná zálohovania.
- Filesystem/Share: typické On-Prem, dobre sa integruje do existujúcich záložných konceptov. Dôležité sú jasné oprávnenia a API vrstva, ktorá prístup kontroluje.
- Objekt-Storage: zmysluplné pri škálovaní, pravidlách životného cyklu alebo keď majú byť externé prístupy technicky čisto oddelené. Vyžaduje si vedomý model kľúčov a oprávnení.
Nezávisle od miesta uloženia platí: portál by súbory nemal načítavať „priamo z share“. Lepšie je kontrolované stiahnutie cez servisné endpointy s overením práv, protokolovaním a voliteľnou časovo obmedzenou download-URL.
PDF a reporty: server-side namiesto dvojakého riešenia
Delphi-desktopové aplikácie často majú vytvorené tlačové a reportovacie trasy. Portály často potrebujú rovnaký obsah ako PDF. Namiesto udržiavania dvoch implementácií sa oplatí centrálná generácia dokumentov v servisnom jadre: šablóny, verzionovanie a výstupné formáty sú server-side; desktop a portál konzumujú výsledok. Pre prevádzku to prináša jasné výhody: reprodukovateľné výstupy, jednotné uloženie a menšia závislosť od desktopových inštalácií.
REST-server a služby: Delphi, C# alebo hybridná architektúra
Pri rozhodovaní „Delphi alebo C#“ nejde v podnikoch toľko o ideológiu, ako o schopnosť tímu, prevádzkové prostredie a udržiavateľnosť. V mnohých prostrediach je realistická hybridná architektúra, pokiaľ sú zodpovednosti dôsledne oddelené.
Delphi ako servisná platforma: zmysluplné pri existujúcej odbornej logike
Ak je odborná logika a prístup k dátam už v Delphi dobre uchopený, môže byť Delphi-based REST-server efektívny. Pre administrátorov a rozhodcov je dôležité: prevádzka servera nie je „desktop v trvalom behu“. Produkčný servis potrebuje jasnú konfiguráciu, korektné timeouts, štruktúrované logy, health-checky a reprodukovateľný deployment.
Aj pripojenie dát by malo byť zmodernizované, ak sú stále v hre staré ovládače alebo BDE. BDE-odstránenie a prechod na moderné dátové prístupy znižuje poruchovosť v prevádzke a uľahčuje deployment, pretože je potrebné menej legacy komponentov inštalovať a spravovať.
C# služby v ekosystéme portálu: často kvôli hostingu a identity
Ak portál vzniká v .NET-dominantnom prostredí, sú C# služby často logickou voľbou – nielen kvôli integrácii identity, existujúcim prevádzkovým štandardom a hostingu za Microsoft IIS alebo v containerizovaných platformách. Kľúčové je vyhnúť sa dvojitej implementácii: buď zostáva odborné jadro v Delphi-službách a C# rieši edge-témy (napr. portálovo-špecifickú orchestráciu), alebo plánujete kontrolovanú migráciu logiky do .NET s jasnými hranicami medzi odbormi.
API-Gateway: poriadkový prvok, nie nutnosť
API-gateway môže zoskupiť centrálne funkcie (routing, rate-limits, logging, autentifikácia). Pre menšie štartovacie architektúry často postačí konzistentné API s jednotnými štandardmi. Keď však existuje viac služieb a skupín používateľov, gateway pomôže udržať vonkajšiu hranu stabilnú a politiky centrálne aplikovať.
Autentifikácia a práva: od interného desktopu k externej portálovej svetu
S portálom sa mení krajina používateľov: popri interných používateľoch pribúdajú externé účty, role a tenanty. Z toho vyplývajú požiadavky na identity, oprávnenia a auditovateľnosť. Pre administrátorov je to relevantné, pretože identity-systémy a modely rolí sa neskôr ťažko menia.
SSO so SAML 2.0 alebo OIDC: menej práce pre adminov, lepšia kontrola
V B2B nasadeniach je SAML 2.0 (single sign-on cez identity provider) rozšírený, pretože spoločnosti chcú využívať existujúce identitné zdroje. OIDC (OpenID Connect) je tiež bežný, najmä v modernejších platformách. Klasické loginy používateľ/heslo sú možné, ale znamenajú ďalšiu záťaž v podobe politiky hesiel, MFA, reset procesov a podpory.
Dôležité pre architektúru: autentifikáciu (kto si?) a autorizáciu (čo smieš?) treba kontrolovať server-side – nie v portálovom frontende.
Multi-tenancy a model rolí: nepridávať „neskoršie”
Kundenportal prakticky vždy vyžaduje oddelenie tenantov: zákazník vidí len svoje dáta. To musí byť zobrazené v servisnom jadre, ideálne cez:
- Claims v tokene (napr. Tenant-ID, role, vzťah k zmluve), aby služby mohli robiť rozhodnutia.
- Overenia na úrovni záznamu (row-level checks v odbornej logike), nie len „skrytie menu”.
- Audit-traily pre dôležité akcie (kto, čo, kedy), plus korelácia cez request-ID pre analýzu chýb.
Desktop môže – ak je žiadané – tiež pracovať s tokenmi proti tomu istému identity-stacku. To znižuje výnimky a uľahčuje sledovanie zmien, obzvlášť keď portál a desktop upravujú ten istý záznam.
Modernizovať prístup k dátam: FireDAC, PostgreSQL a kontrolované dátové cesty
Mnohé Delphi-desktop riešenia historicky rástli s priamym prístupom do DB. Keď pribudne portál, stáva sa to architektonickou otázkou: dátové cesty musia byť kontrolovateľné, validácie musia byť centrálne a výkon musí zostať stabilný aj pri paralelnej záťaži.
FireDAC ako základ pre udržiavateľný prístup k dátam
BDE-odstránenie s natívnym prepojením je v Delphi prostrediach bežný štandard pre prístup k moderným databázam. Dôležitejšie než samotná komponenta je zjednotenie: parametricované dotazy, čisté transakčné hranice, jednotné spracovanie chýb a merateľné časy vykonávania. Pre prevádzku je podstatné, že timeouts a spotreba zdrojov sú plánovateľné a problémy sú sledovateľné v logoch a monitoringu.
PostgreSQL s Delphi: dobre ovládateľné pri čistom mapovaní typov a migračnom koncepte
PostgreSQL s Delphi je robustné, ak sú typ-mapping (napr. UUID, časové značky, JSON-políčka), indexy a schéma-migrácie dôsledne riešené. Portály generujú veľa filtrovaných zoznamových dotazov. Preto by sa filtre, stránkovanie a triedenie mali realizovať server-side, aby sa zbytočne neprenášali veľké objemy dát. To znižuje záťaž a zlepšuje užívateľský zážitok bez toho, aby desktop spomalil.
Prevádzka, deployment a monitoring: dosiahnuť portálovú zrelosť pre Delphi-backendy
Portál je zvyčajne trvalo dostupný a teda prevádzkovo náročnejší než čistý desktop. Pre administrátorov je to oblasť, kde sa dobrá architektúra okamžite vypláca: cez reprodukovateľné deploymnty, jasnú observability (logy/metriky) a definované okná údržby.
Windows-service alebo Linux-service: rozhodujúci je prevádzkový model
Delphi-service môže bežať ako Windows- a Linux-services alebo ako Linux-daemon. Dôležitejšie než OS sú štandardy, ktoré robia prevádzku stabilnou:
- Health-Checks pre monitoring a load balancer (napr. „service žije“ a „databáza dostupná“).
- Štruktúrované logovanie (vrátane request-ID, používateľ/tenant, doba behu, status kódy), aby sa support prípady dali reprodukovať.
- Konfigurácia bez rebuild (napr. env. premenné, centrálne konfiguračné súbory), aby boli deploymnty automatizovateľné.
- Možnosť rollbacku cez jasné verzie a migráciami bezpečné zmeny databázy.
Profily záťaže: portál je „mnoho krátkych requestov“ namiesto „pár dlhých relácií“
Desktopová prevádzka často generuje dlhšie pracovné fázy na používateľa, zatiaľ čo portály produkujú veľa krátkych paralelných requestov. Typické technické opatrenia sú:
- konzekventné stránkovanie, server-side filtre a obmedzené veľkosti odpovedí
- caching pre masterdata a zriedkavé dotazy
- asynchrónne joby pre dlhé úlohy (exporty, report-bundle)
- rate-limity a ochranné mechanizmy proti zneužitiu
Pre rozhodcov je kľúčové: výkon nie je „doladenie na konci“, ale súčasť definície API (veľkosti odpovedí, timeouts, spracovanie na pozadí).
Modernizácia bez Big-Bang: spoľahlivá cesta v piatich krokoch
Kompletný prepis zvyčajne nie je potrebný a často je riskantný, pretože procesné vedomosti sú v Delphi-kliente. Overený prístup je fáza, pri ktorej je každá úroveň produktívne použiteľná a neohrozuje prevádzku.
1) Inventúra stavu: procesy, dátová suverenita, integrácie
Nezačínajte pri maskách, ale pri use caseoch: ktoré postupy majú ísť do portálu? Ktoré dáta smie externý používateľ vidieť alebo meniť? Aké rozhrania existujú k ERP, DMS alebo CRM? Z toho vznikne prioritizovaný zoznam API, ktorý skutočne prináša hodnotu.
2) Definovať servisné základy: auth, formát chýb, logging, verzionovanie
Táto báza rozhoduje o neskoršej udržiavateľnosti. Dohodnite sa skoro na štandardoch pre autentifikáciu/autorizáciu, konzistentný formát chýb, koreláciu requestov, verzionovanie API a telemetriu. To znižuje trenie medzi tímom portálu, backend tímom a prevádzkou.
3) Dodať prvú portálovú trasu end-to-end
Vyberte proces s jasným ohraničením (napr. oblasť dokumentov alebo dotaz na stav). Dôležité je, aby celý reťazec stál: login, kontrola práv, API, UI, logging, monitoring, prevádzka. Organizácia tak skoro zistí, ktoré štandardy fungujú v praxi.
4) Desktop cielene pripojiť: kritické zápisové cesty cez služby
Keď sú služby stabilné, presúvajte vybrané desktopové funkcie: najmä zmeny stavov, schválenia alebo centrálne validácie. Desktop zostane výkonný, ale pravidlá budú konzistentnejšie a priamy zápis do DB bude postupne klesať.
5) Konsolidovať: odstrániť dvojité pravidlá a obchádzky
Inak časom vzniknú „dva systémy“. Plánujte pravidelné konsolidácie: ktoré pravidlá existujú dvojmo? Kde môže portál použiť desktopový servis? Ktoré reporty by sa mali generovať centrálne? Cieľom je ovládateľná platforma, nie dogma.
Typické úskalia z pohľadu prevádzky – a ako sa im vyhnúť
Pravidlá sa v portáli prerábajú
To vedie k odchýlkam a podporovým prípadom. Opatrenie: Use-Case-API s server-side validáciami, jasné chybové návraty a ak je to možné, spoločné fach-testovacie scény.
Nejasná dátová suverenita medzi desktopom a portálom
Ak oba klienty „všetko“ menia, vznikajú konflikty. Opatrenie: stavový model, definované zodpovednosti a Optimistic Concurrency pre konkurenčné zmeny.
Bezpečnosť je riešená ako dodatočné doplnkové riešenie
Najmä pri zákazníckom portáli sú SSO, tenantové overenia, bezpečné sťahovanie súborov a audit potrebné od začiatku. Dodatočne je to nákladnejšie a zvyšuje to riziko bezpečnostných dier.
Chýbajúca transparentnosť v prevádzke
Bez request-ID, štruktúrovaných logov a health-checkov sa pátranie po chybách mení na detektívnu prácu. Opatrenie: observability ako povinná súčasť prvých service-releaseov.
Záver: servisné jadro spája silu desktopu s dosahom portálu
Kombinácia Delphi-desktopu a webového portálu je v mnohých spoločnostiach najrealistickejšia cesta, ako zachovať existujúce kľúčové procesy a súčasne umožniť externú spoluprácu. Rozhodujúce je neriadiť dve oddelené svety, ale vytvoriť rozhranie servisného jadra: Use-Case-API, čisté práva, sledovateľné stavy, kontrolované dátové toky a prevádzkový model s loggingom, monitoringom a plánovateľnými deploymntmi.
Tým vznikne modernizácia s medzicíľmi: desktop zostane produktívny, portál prinesie skoro hodnotu a architektúra sa krok za krokom stane konzistentnejšou a ľahšie udržiavateľnou.
V odbornom kontexte zohráva tiež Delphi modernizácia dôležitú úlohu, keď musia integrácie, dátové toky a ďalší vývoj spolu čisto fungovať.
ďalší krok
Keď sa z témy stane reálny projekt, architektúru, existujúci stav a prevádzku treba včas posudzovať spoločne.
Podporujeme nielen pri jednotlivých otázkach, ale aj vtedy, keď sa z fragmentov zdrojového kódu, tém súvisiacich s legacy systémami alebo nápadov na portál má stať robustný podnikový projekt.
- Stav, cieľový obraz a technické riziká sa hodnotia spoločne.
- REST, prístup k údajom, portály a nasadenie nebudú odložené na neskôr ako následné úlohy.
- Včas identifikujete, ktorá cesta je ekonomicky a prevádzkovo životaschopná.