Од теме часописа до пројектне праксе
Одговарајуће странице услуга и техничке странице за чланак
Video-Botschaft
Комбиновање Delphi Desktop-а и веб-портала: архитектура, интерфејси и модернизација без прекида
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.
У многим предузећима стручна „шалт-централа“ се током година развила као Delphi-десктоп апликација: VCL-клијент, дубоко процесно знање, брзо уношење података, штампање и reporting-траке, специјална периферија и често директан приступ бази података у LAN-у. Истовремено расту очекивања за self-service и спољашњу сарадњу: клијенти желе да проверавају статусе поруџбина, размењују документе или пријављују рекламације – без VPN-а, без десктоп-роллоута и без локалних инсталација.
Комбиновати Delphi Desktop и Web-портале у пракси значи спојити ова два света тако да су операције, безбедност и конзистентност података под контролом. Кључно није „пресликавање“ форми у претраживачу, већ архитектура која прецизно раздваја процесе, права и податке и омогућава да оба интерфејса раде по заједничким правилима. Добит је модернизациони пут без Big-Bang приступа: десктоп остаје продуктиван, док веб-портал расте контролисано.
Овај чланак је намењен ИТ-управи, администраторима и технички одговорним лицима пројекта. Фокус је на утицајима на операције, администрацију, интерфејсе, безбедност, чување података и миграцију – мање на детаље фрејмворкова. Добићете практичне шаблоне, критеријуме одлуке и типичне замке са мером противмере.
Зашто је „Портал уместо десктопа“ ретко реално
У B2B окружењима постоји много разлога зашто десктоп-клијент и даље има смисла. Администратори то често доживљавају конкретно: портал је идеалан за распоређене кориснике, али одређени задаци су у десктопу и даље ефикаснији или су уопште могући само тамо.
Снаге десктопа које значе у пракси
- Комплексно уношење података са густим формама, радом на тастатури, великим табеларним приказима и брзим пребацивањем између записа.
- Периферија и локалне интеграције као штампачи етикета, скенери, серијски уређаји или посебне Windows компоненте.
- LAN-приближна перформанса, када се обрађују велике количине података или када процес захтева изузетно малу латенцију.
- Растући радни токови са многим изузецима, где 1:1 пренос у портал носи значајан ризик.
Снаге портала које покривају нове захтеве
- Спољашњи приступ за клијенте, добављаче или партнере, без потребе за распоређивањем клијента.
- Централна контролисаност (верзије, функције, права) са јасном спољном ивицом.
- Необавезност уређаја (претраживач, мобилна употреба) за теренске тимове и управу.
- Циљано отварање процеса као што су упити за статус, отпремање, одобрења или тикет-процеси.
У комбинацији лежи корист: десктоп остаје power-tool за интерне улоге, портал постаје контролисани приступ за спољашње корисничке групе. Да се то не би распало у две паралелне „истине“, потребно је повезујуће језгро.
Када комбинујете Delphi Desktop и Web-портале: три циљне архитектуре
Код одлуке о архитектури ради се пре свега о одговорностима: где лежи пословно правило? Ко сме да мења податке? Која је слојност „Single Source of Truth“ (односно релевантни извор правила и стања)? За техничке одлуке важно је: избор директно утиче на операције, трагање за грешкама, управљање издањима и сигурност.
Варијанта A: Портал као допуна преко REST-API, десктоп остаје водећи
Портал обрађује одабране use-case-ове, типично „читање и иницирање“: статуси, документи, одобрења, једноставни уноси. За то се уводи Delphi REST-API или одвојени REST-Server. Десктоп апликација може у почетку и даље директно приступати бази података.
Оперативна предност: брз почетак, мале интервенције у десктопу, погодан за први додатак портала.
Ризично место: постоје два пута података (Desktop → DB директно, Portal → API). Ако пословна правила стоје само у десктопу, настају неконзистенције. Контрамера је да се порталске функције свесно почну тамо где правила могу једноставно и серверски да се реализују (нпр. доступност докумената, упит за статус, дефинисане акције одобрења).
Варијанта B: Сервисно језгро као заједнички слој процеса (препоручљиво при паралелном раду)
Овде постепено премештате пословну логику из десктопа у сервисе. Десктоп и портал користе исте крајње тачке. Десктоп постаје више Rich Client (UI, локалне интеграције), а правила и валидације се налазе серверски.
Оперативна предност: централно место за права, audit, логику статуса и валидације; конзистентно понашање на свим фронтендима.
Напор: већи у почетку, јер се морају уредно планирати стандарди API-ја, формати грешки, верзионисање, мониторинг и деплоyment. Заузврат се касније напор значајно смањује, јер има мање појединачних изузетака.
Варијанта C: Портал води, десктоп остаје као специјални клијент
Ова варијанта има смисла када је претраживач стратешки стандардни приступ (нпр. јако распоређена организација), а десктоп остаје за одређене улоге са специјалном периферијом или високопродуктивним уносом. Сервисно језгро мора тада бити посебно стабилно и скалабилно.
Layer-3 архитектура као разумљива смерница
Независно од варијанте, помаже Layer-3 архитектура: (1) презентација (Desktop/Portal), (2) применски и доменски слој (use-cases, правила), (3) инфраструктура (база података, датотечни склад, messaging, спољашњи системи). За администраторе је то важно јер се границе операција јасно виде: шта је „frontend-проблем“, шта је „service-проблем“, шта лежи у бази или у складишту? Ово раздвајање скраћује време трагања за грешкама и смањује нежељене ефекте при деплоyментима.
Практична примена: Како десктоп и портал деле исти процес
Највећи изазов ретко је „направити портал“, већ питање: како десктоп и портал деле одговорности у истом процесу, без дупле имплементације правила? Три шаблона су у пракси посебно релевантна.
1) Use-Case-API-ји уместо табеларних или CRUD-API-ја
Често ћете заглавити са API-јем који само пресликава базе података („Create/Read/Update/Delete“). Тада мора портал да поново имплементира правила, а десктоп остаје на својим правилима. Погоднији су Use-Case-API-ји: крајње тачке описују пословне акције као „пријави рекламацију“, „одобри налог“, „отпреми документ“, „потврди статус испоруке“.
Ефекат у раду је приметан: валидације се врше серверски, поруке о грешкама су репродуцибилне и оба клијента (десктоп и портал) покрећу исти ток преко исте логике.
2) Управљање конфликтима и поновним захтевима
Са порталом расте вероватноћа паралелних измена и поновљених захтева (нпр. због timeout-а, retries или двоструког клика корисника). Три концепта помажу без увођења „дуготрајних закључавања“:
- Idempotencja: Критичне акције су дизајниране тако да поновљење даје исти ефекат и не извршава ништа двапут. У пракси се то често остварује преко јединственог ID захтева (Idempotency Key).
- Optimistic Concurrency: Запис носи информацију о верзији (нпр. „Row Version“). При изменама сервис проверава да ли верзија одговара и враћа конфликт ако не одговара.
- Кратке транзакције: Уместо „закључати све“ операције писања се држе кратким. Дужи задаци (нпр. експорти, пакетни извештаји) раде асинхроно.
За техничке одлучиоце важно је: ови механизми смањују оптерећење подршке јер се слике грешака („поновило се двапут“, „моја измена је нестала“) значајно ређе појављују.
3) Стања и преноси јасно моделовани
Ако десктоп обрађује сложене случајеве а портал „само“ доставља захтеве или предфазе, потребни су дефинисани прелази статуса. Практичан распоред је: портал креира или допуњује послове у јасно ограниченим статусима (нпр. „предато“), десктоп обрађује специјалне случајеве, сервисно језгро одлучује и бележи промене статуса. Тако се избегава да портал-Client индиректно „поквари“ процесе погрешном конфигурацијом.
Подaци и документи: често потцењено подручје интеграције
Практично сваки портал доноси манипулацију датотекама: отпремања, доказе, отпремнице, слике, PDF-извештаје. За администраторе је то кључно, јер утиче на backup, права, антивирусну контролу, трошкове складишта и перформансе.
Где се чувају фајлови: база, файл-шејр или објект-сторе?
Постоје три уобичајене опције складиштења, које свака доводе до другачије оперативне реалности:
- База података (BLOB): прикладно када транзакције морају бити тесно повезане и backup/restore треба да буду свеобухватни. Недостаци су често веће базе и дужи прозори за backup.
- Filesystem/Share: типично он-премис, добро интегрисано у постојеће backup концепте. Кључно је јасно управљање правима и API-слој који контролише приступ.
- Објект-Storage: смислено за скалирање, lifecycle правила или када се спољашњи приступи технички чисто изолују. Захтева свестан модел кључева и права.
Независно од локације, правило је: портал не би требало да учитава фајлове „директно“ са share-а. Боље је контролисано преузимање преко сервисних ендпоинта са провером права, логовањем и опционалним временски ограниченим URL-ом за преузимање.
PDF-ови и извештаји: серверски уместо дуплих имплементација
Delphi-десктоп апликације често имају развијене траке за штампу и reporting. Портали често захтевају исте садржаје као PDF. Уместо одржавања две имплементације, исплати се централна генерисање докумената у сервисном језгру: шаблони, верзионисање и формати за излаз налазе се серверски; десктоп и портал конзумирају резултат. За оперативу то доноси предности: проверљиви извештаји, једнообразно чување и мања зависност од десктоп инсталација.
REST-сервери и сервисни слој: Delphi, C# или мешовита архитектура
При избору „Delphi или C#“ за предузећа је мање питање идеологије, а више тимске способност, оперативно окружење и одржавање. У многим срединама мешовита архитектура је реална, ако су одговорности јасно раздвојене.
Delphi као сервисна платформа: смислено кад већ постоји пословна логика
Aко пословна логика и приступ подацима већ чврсто постоје у Delphi, Delphi-базиран REST-Server може бити ефикасан. За администраторе и одлучиоце је важно: рад сервера није „десктоп који непрестано ради“. Продуктиван сервис захтева јасну конфигурацију, уредне timeout-е, структуриран логинг, health-checks и репродуцибилни деплоyment.
Такође, повезивање на податке треба модернизовати ако су и даље у игри стари драјвери или BDE. BDE-Ablösung и прелазак на модерније приступе подацима смањују проблеме у операцијама и олакшавају деплоyment, јер је мање legacy компоненти за инсталацију и одржавање.
C# сервисни слојеви у порталној екосистеми: често због хостинга и Identity
Када се портал гради у .NET-доминираној околини, C# Services су често логичан избор – не само због интеграције Identity-а, већ и постојећих оперативних стандарда и хостинга иза Microsoft IIS или у контейнеризованим платформама. Кључно је избегавати дупле имплементације: или остаје пословна логика у Delphi-сервисима и C# покрива edge-слојеве (нпр. портал-специфичну оркестрацију), или планирате контролисану миграцију логике у .NET са јасним границама по пословним областима.
API-Gateway: елемент реда, али није обавезан
API-Gateway може да консолидује централне функције (routing, rate-limits, logging, аутентификација). За мање старт-архитектуре често је довољан доследан API са уједначеним стандардима. Међутим, када постоји више сервиса и корисничких група, Gateway помаже да спољашња ивица остане стабилна и да се политике централизовано спровode.
Аутентификација и права: од интерног десктопа до спољашњег портала
Са увођењем портала мења се састав корисника: поред интерних корисника долазе спољашњи налози, улоге и тенанти. То генерише захтеве за Identity-ом, правима и audit-абилношћу. За администраторе је то релевантно јер је каснија промена Identity система и моделa улога тешка.
SSO са SAML 2.0 или OIDC: мање админ-оптерећење, боља контрола
У B2B поставкама је SAML 2.0 (Single Sign-on преко Identity провајдера) уобичајен, јер предузећа желе да користе постојеће идентитете. OIDC (OpenID Connect) је такође распрострањен, посебно на модернијим платформама. Класичан пријавни образац корисник/лозинка је могућ, али доноси додатан рад око политике лозинки, MFA, reset процеса и подршке.
Архитектонски важно: аутентификација (ко си ти?) и ауторизација (шта смеш да урадиш?) морају се проверавати серверски – не у портал-фронтенду.
Мултитенантност и модел улога: не допуштајте „после“
Клијентски портал обично захтева раздвајање тенантности: клијент види само своје податке. То мора бити реализовано у сервисном језгру, по могућности преко:
- Claims у токену (нпр. Tenant-ID, улоге, референца уговора), да сервис може да доноси одлуке.
- Провере по запису (Row-Level-Checks у пословној логици), не само „скривање менија”.
- Audit-Trails за важне акције (ко, шта, када) плус корелација преко Request-ID за анализу грешака.
Десктоп може – ако је потребно – такође да ради са токенима према истом Identity-стеку. То смањује појединачне путеве и олакшава праћење измена, посебно када портал и десктоп раде на истом запису.
Модернизација приступа подацима: FireDAC, PostgreSQL и контролисани путеви података
Многе Delphi-десктоп решења су историјски расла са директним приступом БД-у. Чим се дода портал, то постаје архитектонско питање: путеви података морају бити контролисани, валидације централне, а перформансе стабилне и под паралелним оптерећењем.
FireDAC као основа за одржив приступ подацима
BDE-Ablösung mit nativer Anbindung је у Delphi-окружењима распрострањен стандард за приступ модерним базама података. Мање је важно која је компонента у питању, а важније је уједначавање: параметризовани упити, чисте транзакционе границе, уједначено руковање грешкама и мерљиво време извршења. За оперативу је важно да timeout-и и потрошња ресурса буду предвидљиви и да се проблеми могу пратити у логовима и мониторингу.
PostgreSQL са Delphi: добро контролисано уз чист концепт типова и миграција
PostgreSQL mit Delphi је робустан ако је тип-мапирање (нпр. UUID, временски ознаци, JSON-полја), индекси и миграције шема правилно решено. Портали генеришу много filter-ова за листе; зато филтри, paging и сортирање треба да се реализују серверски, да се не преносе непотребно велике количине података. То смањује оптерећење и побољшава корисничко искуство без утицаја на брзину десктопа.
Операције, деплоyмент и мониторинг: подигните Portal-режим за Delphi-бекенд
Портал је обично стално доступан и због тога оперативно захтевнији од самог десктопа. За администраторе је то подручје у ком се добра архитектура одмах исплати: кроз поуздане деплоyменте, јасну observability (логови/метрике) и дефинисане прозоре одржавања.
Windows-Service или Linux-Service: кључно је оперативни модел
Delphi-сервис може да ради као Windows- и Linux-Services или као Linux-daemon. Већа важност од ОС-а имају стандарди који чине рад стабилним:
- Health-Checks за мониторинг и load balancer (нпр. „Service живи“ и „База доступна“).
- Структурирани логинг (укључујући Request-ID, корисника/tenant, време извршавања, status-кодове), како би се случајеви подршке могли репродуковати.
- Конфигурација без поновног build-а (нпр. окружне променљиве, централне конфигурационе датотеке), да би деплоyменти били аутоматизовани.
- Способност rollback-а кроз јасне верзије и миграције базе које су сигурне за враћање.
Профили оптерећења: портал је „много кратких захтева“ уместо „неколико дугих сесија“
Коришћење десктопа често генерише дужи радни период по кориснику, док портал ствара многе кратке, паралелне захтеве. Типичне техничке мере су:
- конзеквентни paging, серверски филтри и ограничене величине одговора
- cache-ирање мастер-датих и ретких упита
- асинхрони задаци за дуге операције (експорти, пакетни извештаји)
- rate-limiting и механизми заштите од злоупотребе
За одлучиоце је овде кључно: перформансе нису „финално подешавање“, већ део дефиниције API-ја (величина одговора, timeout-и, позадинска обрада).
Модернизација без Big-Bang-а: робустан пут у пет корака
Потпуни поновни развој ретко је потребан и често ризичан јер је процесно знање закључано у Delphi-клијенту. Проверена је пракса у којој је свака фаза продуктивна и не доводи у питање рад система.
1) Попис стања: процеси, власништво над подацима, интеграције
Не почињите од форми, већ од use-case-ова: који токови требају у портал? које податке спољашњи корисник може да види или мења? које интерфејсе имате према ERP-у, DMS-у или CRM-у? Из тога настаје приоритетна листа API-ја која доноси стварну вредност.
2) Дефинисати сервис-базу: Auth, формат грешака, логовање, верзионисање
Ова основа одређује будућу одрживост. Договарајте рано стандарде за аутх/ауторизацију, уједначен формат грешака, корелацију захтева, верзионисање API-ја и телеметрију. Ово смањује трење између порталноg тима, бекенд тима и операција.
3) Испоручити прву порталну трасу end-to-end
Одаберите процес са јасним границама (нпр. област докумената или упит за статус). Важно је да цео ланац функционише: login, провера права, API, UI, логовање, мониторинг, операције. Тако организација рано види који стандарди у пракси раде.
4) Циљано повежите десктоп: критични путеви писања преко сервиса
Када су сервисии стабилни, преместите изабране десктоп-функције: посебно промене статуса, одобрења или централне валидације. Десктоп остаје перформантан, али правила постају конзистентнија, а директан DB-писање се постепено смањује.
5) Консолидовати: смањити дупла правила и посебне путеве
Успут иначе настају „два система“. Планирајте редовну консолидацију: која правила су дуплирана? где портал може да користи десктоп-сервис? који извештаји треба да се генеришу централизовано? Циљ је управљива платформа, не догма.
Типичне замке из угла операција – и како их избегнути
Правила се поново имплементирају у порталу
То води до одступања и подршке. Контрамера: Use-Case-API-ји са серверским валидацијама, јасним повратним порукама о грешкама и, ако је могуће, заједничким пословним тест сценаријима.
Нејасно власништво података између десктопа и портала
Ако оба клијента могу да мењају „све“, настају конфликти. Контрамера: модел статуса, дефинисане одговорности и Optimistic Concurrency за паралелне измене.
Безбедност третирана као накнадна ставка
Посебно код клијентског портала SSO, тенант-провере, сигурни download-ови фајлова и audit су потребни од почетка. Накнадно је то скупље и повећава ризик од безбедносних пропуста.
Недостатак транспарентности у операцијама
Без Request-ID-ова, структурираног логинга и health-check-ова трагање за грешкама постаје детективски посао. Контрамера: observability као обавезни део првих service-релиза.
Закључак: Сервисно језгро повезује снагу десктопа са дохватом портала
Комбинација Delphi-десктопа и веб-портала у многим предузећима представља најреалнији пут да се очувају постојећи критични процеси, а истовремено омогући спољашња сарадња. Кључно је да се не воде два одвојена света, већ да се успостави повезујуће сервисно језгро: Use-Case-API-ји, чиста права, проверљива стања, контролисани путеви података и оперативни модел са логовањем, мониторингом и предвидљивим деплоyментима.
Тако настаје модернизација са међутраговима: десктоп остаје продуктиван, портал рано доноси вредност, а архитектура постаје корак по корак конзистентнија и одрживија.
У стручном контексту, и Delphi Modernisierung игра важну улогу када интеграције, токови података и даљи развој морају да функционишу усклађено.
Следећи корак
Када из теме настане реалан пројекат, архитектуру, постојеће стање и операције треба рано разматрати заједно.
Подржавамо не само у појединачним питањима, већ и када из исечака изворног кода, застарелих тема или идеја за портале треба да настане поуздан корпоративни пројекат.
- Постојеће стање, циљано стање и технички ризици оцењују се заједно.
- REST, приступ подацима, портали и увођење неће бити одложени за касније фазе.
- Ви рано увидите који пут је економски и оперативно одржив.