Do tema da revista à prática do projeto
Páginas de serviços e técnicas correspondentes ao artigo
Video-Botschaft
Combinar Delphi Desktop e Portais Web: Arquitetura, Interfaces e Modernização sem Ruptura
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.
Em muitas empresas, o “centro de comando” funcional cresceu ao longo dos anos como uma aplicação desktop Delphi: cliente VCL, profundo conhecimento de processo, captura rápida de dados, fluxos de impressão e reporting, hardware especializado e, frequentemente, acesso direto ao banco de dados na LAN. Ao mesmo tempo, aumentam as expectativas por self-service e colaboração externa: clientes querem consultar status de pedidos, trocar documentos ou registrar reclamações — sem VPN, sem rollout de desktop e sem instalações locais.
Combinar Delphi Desktop e portais web significa, na prática, unir esses dois mundos de forma que operação, segurança e consistência de dados permaneçam gerenciáveis. Não se trata de “recriar” telas no navegador, mas de uma arquitetura que separa claramente processos, permissões e fluxos de dados e permite que ambos os frontends trabalhem com regras comuns. O ganho é um caminho de modernização sem Big-Bang: o desktop continua produtivo enquanto o portal web cresce de forma controlada.
Este artigo dirige-se à direção de TI, administradores e responsáveis técnicos por projetos. O foco são os impactos em operação, administração, interfaces, segurança, persistência de dados e migração — menos detalhes de frameworks. Você obterá padrões práticos, critérios de decisão e armadilhas típicas com contramedidas.
Por que “Portal em vez de Desktop” raramente é realista
Em ambientes B2B existem muitas razões pelas quais um cliente desktop continua a fazer sentido. Administradores experienciam isso de forma muito concreta: um portal é ideal para utilizadores distribuídos, mas certas tarefas permanecem mais eficientes ou mesmo só possíveis no desktop.
Forças do desktop que contam no dia a dia
- Entrada de dados complexa com formulários muito densos, operação por teclado, grandes vistas tabulares e trocas rápidas entre registros.
- Periféricos e integrações locais como impressoras de etiquetas, leitores, dispositivos seriais ou componentes Windows especializados.
- Performance próxima ao LAN, quando grandes volumes de dados são processados ou quando um processo exige latências extremamente baixas.
- Workflows amadurecidos com muitos casos especiais, nos quais um port mais 1:1 para o portal inicialmente acarreta riscos elevados.
Forças do portal que cobrem novas necessidades
- Acesso externo para clientes, fornecedores ou parceiros, sem necessidade de rollout de um cliente.
- Controle central (versões, funcionalidades, permissões) com uma borda exterior clara.
- Independência de dispositivo (navegador, uso móvel) para força externa e gestão.
- Aberturas de processo direcionadas como consultas de status, uploads, liberações ou trilhas de tickets.
Na combinação reside o benefício: o desktop permanece a ferramenta poderosa para papeis internos, o portal torna‑se o acesso controlado para grupos externos. Para evitar que isso resulte em duas “verdades” paralelas, é necessário um núcleo de ligação.
Quando combinar Delphi Desktop e portais web: três arquiteturas alvo
A decisão arquitetural trata sobretudo de responsabilidades: onde está a regra de negócio? Quem pode alterar dados? Qual camada é a “Single Source of Truth” (ou seja, a fonte decisiva para regras e estados)? Para decisores técnicos é importante: a escolha tem consequências diretas para operação, investigação de falhas, gestão de releases e segurança.
Variante A: Portal como complemento via REST-API, desktop permanece dominante
O portal atende casos de uso selecionados, tipicamente “ler e disparar”: status, documentos, liberações, entradas simples. Para isso é introduzida uma Delphi REST-API ou um servidor REST separado. A aplicação desktop pode, inicialmente, continuar a aceder diretamente à base de dados.
Vantagem operacional: início rápido, intervenções reduzidas no desktop, adequado para um ganho inicial com o portal.
Ponto de risco: existem duas vias de dados (Desktop → DB diretamente, Portal → API). Se regras de negócio estiverem apenas no desktop, surgirão inconsistências. Como contramedida, as funcionalidades do portal devem começar deliberadamente onde as regras podem ser representadas de forma simples e server‑side (por exemplo, disponibilização de documentos, consulta de status, ações de liberação definidas).
Variante B: Núcleo de serviços como camada de processo comum (recomendado em operação paralela)
Aqui você migra gradualmente a lógica de negócio do desktop para serviços. Desktop e portal utilizam os mesmos endpoints. O desktop torna‑se mais um Rich Client (UI, integrações locais), enquanto regras e validações residem no servidor.
Vantagem operacional: um ponto central para permissões, auditoria, lógica de status e validações; comportamento consistente em todos os frontends.
Esforço: maior no início, porque padrões de API, formatos de erro, versionamento, monitoramento e deployment precisam ser planejados com rigor. Em contrapartida, o esforço diminui significativamente depois, pois há menos caminhos especiais.
Variante C: Portal lidera, desktop permanece como cliente especializado
Esta variante faz sentido quando o navegador deve ser estrategicamente o acesso padrão (por exemplo, organizações fortemente distribuídas), mas o desktop permanece para determinados papéis com hardware especializado ou captura de alto desempenho. O núcleo de serviços precisa ser particularmente estável e escalável.
Layer-3 arquitetura como diretriz compreensível
Independentemente da variante, ajuda uma Layer-3 Architektur: (1) apresentação (Desktop/Portal), (2) camada de aplicação e domínio (use cases, regras), (3) infraestrutura (base de dados, armazenamento de arquivos, messaging, sistemas externos). Para administradores isto é importante porque os limites operacionais ficam claros: o que é “problema de frontend”, o que é “problema de serviço”, o que pertence ao banco de dados ou ao storage? Essa separação encurta a investigação de falhas e reduz efeitos colaterais em deployments.
Relação prática: como desktop e portal partilham o mesmo processo
O maior desafio raramente é “construir o portal”, mas sim responder: como desktop e portal dividem responsabilidades dentro do mesmo processo, sem duplicar regras? Três padrões são particularmente relevantes na prática.
1) APIs por caso de uso em vez de APIs de tabelas ou CRUD
Um beco comum é uma API que apenas expõe tabelas de banco de dados (“Create/Read/Update/Delete”). Nesse caso, as regras têm de ser recriadas no portal, e o desktop mantém suas próprias regras. Mais eficiente são APIs orientadas a casos de uso: endpoints que descrevem ações de negócio como “criar reclamação”, “liberar pedido”, “fazer upload de documento”, “confirmar estado de entrega”.
O efeito em operação é perceptível: validações ocorrem no servidor, mensagens de erro são reproduzíveis e ambos os clientes (desktop e portal) acionam o mesmo fluxo por meio da mesma lógica.
2) Tornar conflitos e repetição manejáveis
Com um portal cresce a probabilidade de alterações paralelas e de pedidos repetidos (por exemplo por timeouts, retries ou duplo clique do usuário). Três conceitos ajudam aqui, sem introduzir “bloqueios permanentes”:
- Idempotenz: ações críticas são desenhadas para que uma repetição tenha o mesmo efeito e não execute nada em duplicado. Na prática isso ocorre frequentemente por meio de um identificador único por requisição (Idempotency Key).
- Optimistic Concurrency: um registro carrega uma informação de versão (por exemplo, “Row Version”). Ao alterar, o serviço verifica se a versão ainda é a esperada e reporta conflitos de forma limpa.
- Transações curtas: em vez de “bloquear tudo”, operações de escrita são mantidas breves. Trabalhos longos (por exemplo, exports, pacotes de relatórios) são executados de forma assíncrona.
Para decisores técnicos é importante: esses mecanismos reduzem o esforço de suporte, pois quadros de erro como “aconteceu duas vezes” ou “minha alteração sumiu” tornam‑se muito menos frequentes.
3) Modelar estados e transições de forma clara
Se o desktop trata casos complexos e o portal “apenas” fornece pedidos ou etapas iniciais, é necessário ter transições de estado definidas. Uma divisão prática é: o portal cria ou complementa ocorrências em áreas de estado claramente limitadas (por exemplo, “submetido”), o desktop trata casos especiais, e o núcleo de serviços decide e registra as mudanças de estado. Assim evita‑se que o cliente do portal configure processos de forma indireta e “quebre” fluxos.
Dados e documentos: a área de integração frequentemente subestimada
Quase todo portal envolve operações com arquivos: uploads, comprovantes, notas de entrega, imagens, saídas em PDF. Para administradores isso é um ponto central, pois afeta backup, permissões, verificação antivírus, custos de storage e performance.
Onde armazenar arquivos: banco de dados, fileshare ou object storage?
Existem três opções comuns de armazenamento, cada uma conduzindo a uma realidade operacional distinta:
- Banco de dados (BLOB): adequado quando transações precisam estar fortemente acopladas e backup/restore devem ficar num único pacote. Desvantagens são bases de dados maiores e janelas de backup mais longas.
- Filesystem/Share: típico On‑Prem, bem integrável em conceitos de backup existentes. Importam permissões claras e uma camada API que controle o acesso.
- Object‑Storage: adequado para escalabilidade, regras de ciclo de vida ou quando acessos externos devem ser tecnicamente encapsulados. Requer um modelo consciente de chaves e permissões.
Independente do local de armazenamento vale: o portal não deveria carregar arquivos “diretamente” de um share. É preferível um download controlado via endpoints de serviço com verificação de permissões, registro em log e, opcionalmente, URLs de download com validade limitada.
PDFs e relatórios: no servidor em vez de duplicar
Aplicações Delphi desktop frequentemente têm pipelines de impressão e reporting amadurecidas. Portais frequentemente precisam dos mesmos conteúdos em PDF. Em vez de manter duas implementações, vale centralizar a geração de documentos no núcleo de serviços: modelos, versionamento e formatos de saída ficam server‑side; desktop e portal consomem o resultado. Para operação isso traz vantagens claras: saídas rastreáveis, armazenamento uniforme e menor dependência de instalações desktop.
REST-Server e serviços: Delphi, C# ou uma arquitetura mista
A decisão “Delphi ou C#” para empresas trata menos de ideologia e mais de capacidade da equipe, ambiente operacional e manutenibilidade. Em muitos ambientes uma arquitetura mista é realista, desde que as responsabilidades sejam cortadas com clareza.
Delphi como plataforma de serviços: adequado quando já existe lógica de domínio
Se a lógica de domínio e o acesso a dados já estão solidamente implementados em Delphi, um servidor REST baseado em Delphi pode ser eficiente. Para administradores e decisores é importante: operação de servidor não é “desktop em execução contínua”. Um serviço produtivo exige configuração clara, timeouts bem definidos, logs estruturados, health checks e um deployment reproduzível.
Também a ligação aos dados deve ser modernizada se ainda existirem drivers antigos ou a BDE em uso. Uma BDE-Ablösung e a migração para acessos nativos reduzem falhas em operação e facilitam o deployment, pois há menos componentes legacy para instalar e manter.
C# services no ecossistema do portal: comuns por questões de hosting e identidade
Quando o portal surge em um cenário dominado por .NET, serviços C# são frequentemente a escolha natural — não só pela integração de identidade, mas também por standards operacionais existentes e alojamento atrás de Microsoft IIS ou em plataformas containerizadas. O essencial é evitar dupla implementação: ou a lógica de domínio permanece em serviços Delphi e C# trata temas de borda (por exemplo, orquestração específica do portal), ou planeja‑se deliberadamente uma migração da lógica para .NET — então controlada e com limites de domínio bem definidos.
API‑Gateway: elemento de ordem, mas não obrigatório
Um API‑Gateway pode agregar funções centrais (routing, rate limits, logging, autenticação). Para arquiteturas pequenas de arranque frequentemente basta uma API consistente com padrões unificados. Quando vários serviços e grupos de utilizadores existem, um gateway ajuda a manter a borda exterior estável e a aplicar políticas de forma central.
Autenticação e permissões: do desktop interno ao mundo externo do portal
Com um portal muda a paisagem de utilizadores: além de utilizadores internos surgem contas externas, papéis e tenants. Isso gera requisitos de identidade, autorização e auditabilidade. Para administradores isto é relevante pois sistemas de identidade e modelos de papéis são difíceis de modificar posteriormente.
SSO com SAML 2.0 ou OIDC: menos trabalho administrativo, melhor controlo
Em setups B2B é comum o uso de SAML 2.0 (single sign‑on via um Identity Provider), porque empresas querem reutilizar identidades existentes. OIDC (OpenID Connect) também é corrente, especialmente em plataformas mais modernas. Logins clássicos por usuário/senha são possíveis, mas implicam trabalho adicional para política de senhas, MFA, processos de reset e suporte.
Importante para a arquitetura: autenticação (quem é você?) e autorização (o que você pode fazer?) devem ser verificadas no servidor — não no frontend do portal.
Multitenancy e modelo de papéis: não adicionar “mais tarde”
Um portal de clientes quase sempre exige separação de tenants: um cliente vê apenas seus dados. Isso precisa ser implementado no núcleo de serviços, idealmente por meio de:
- Claims no token (por exemplo, Tenant‑ID, papéis, referência contratual), para que os serviços possam tomar decisões.
- Verificações por registro (row‑level checks na lógica de negócio), não apenas “esconder menu”.
- Trails de auditoria para ações importantes (quem, o que, quando), além de correlação via Request‑ID para análise de falhas.
O desktop pode — se desejado — também autenticar com tokens contra o mesmo stack de identidade. Isso reduz caminhos especiais e facilita a rastreabilidade de alterações, especialmente quando portal e desktop editam o mesmo registro.
Modernizar acesso a dados: FireDAC, PostgreSQL e vias de dados controladas
Muitas soluções desktop Delphi cresceram com acesso direto ao BD. Assim que um portal é adicionado, isso torna‑se uma questão arquitetural: vias de dados precisam ser controláveis, validações devem ser centrais e a performance tem de permanecer estável mesmo sob carga paralela.
FireDAC como base para acesso a dados manutenível
BDE-Ablösung com ligação nativa é um padrão comum em ambientes Delphi para acesso a bases de dados modernas. O importante não é tanto o componente em si, mas a uniformização: queries parametrizadas, limites claros de transação, tratamento de erros consistente e tempos de execução mensuráveis. Para operação importa que timeouts e consumo de recursos sejam previsíveis e que problemas sejam rastreáveis em logs e monitoramento.
PostgreSQL com Delphi: controlável com conceito limpo de tipos e migração
PostgreSQL com Delphi é robusto quando o mapeamento de tipos (por exemplo, UUID, timestamps, campos JSON), índices e migrações de esquema são tratados de forma disciplinada. Portais tendem a gerar muitas consultas filtrantes para listas; por isso filtros, paginação e ordenação devem ser implementados no servidor, evitando a transferência de grandes volumes de dados desnecessários. Isso reduz carga e melhora a experiência do utilizador, sem tornar o desktop mais lento.
Operação, deployment e monitoramento: alcançar maturidade de portal para backends Delphi
Um portal costuma estar permanentemente acessível e, por isso, é mais intensivo em operação do que um desktop isolado. Para administradores esta é a área em que uma boa arquitetura se paga imediatamente: deployments rastreáveis, observability clara (logs/métricas) e janelas de manutenção definidas.
Windows‑Service ou Linux‑Service: o que importa é o modelo operacional
Um serviço Delphi pode ser operado como Windows‑ e Linux‑Services ou como um daemon Linux. Mais importante do que o sistema operativo são padrões que tornam a operação estável:
- Health‑Checks para monitoramento e balanceadores (por exemplo, “serviço vivo” e “base de dados acessível”).
- Logging estruturado (incl. Request‑ID, usuário/tenant, tempo de execução, códigos de status), para que casos de suporte sejam reproduzíveis.
- Configuração sem rebuild (por exemplo, variáveis de ambiente, ficheiros de configuração central), para que deployments sejam automatizáveis de forma limpa.
- Capacidade de rollback através de versões claras e alterações de BD compatíveis com migração.
Perfis de carga: portal é “muitas requests curtas” em vez de “poucas sessões longas”
O uso de desktop gera frequentemente fases de trabalho mais longas por utilizador, enquanto portais geram muitas requests curtas e paralelas. Medidas técnicas típicas incluem:
- paginação consequente, filtros server‑side e limites no tamanho das respostas
- cache para dados mestres e consultas pouco frequentes
- jobs assíncronos para tarefas longas (exports, pacotes de relatórios)
- rate limits e mecanismos de proteção contra uso indevido
Para decisores é central entender: performance não é um “afinamento no fim”, mas parte da definição da API (tamanhos de resposta, timeouts, processamento em background).
Modernização sem Big‑Bang: um caminho robusto em cinco passos
Um redeenvolvimento completo raramente é necessário e muitas vezes é arriscado, porque o conhecimento de processo está embutido no cliente Delphi. Um procedimento que tem se mostrado eficaz é aquele em que cada etapa é utilizável em produção e não põe a operação em risco.
1) Levantamento: processos, soberania de dados, integrações
Comece não pelas telas, mas pelos casos de uso: quais fluxos devem ir para o portal? Que dados um usuário externo pode ver ou alterar? Que interfaces existem para ERP, DMS ou CRM? A partir disso surge uma lista priorizada de APIs que entrega valor real.
2) Definir fundamentos de serviço: auth, formato de erro, logging, versionamento
Essa base decide a manutenibilidade futura. Combine cedo padrões para autenticação/autorização, um formato de erro consistente, correlação de requests, versionamento de API e telemetria. Isso reduz atritos entre equipe do portal, backend e operação.
3) Entregar a primeira via do portal end‑to‑end
Escolha um processo com limitação clara (por exemplo, área de documentos ou consulta de status). É importante que toda a cadeia exista: login, verificação de permissões, API, UI, logging, monitoramento, operação. Assim a organização percebe cedo quais padrões funcionam no dia a dia.
4) Integrar o desktop de forma direcionada: caminhos críticos de escrita via serviços
Quando os serviços estiverem estáveis, mova funções selecionadas do desktop para os serviços: em particular mudanças de status, liberações ou validações centrais. O desktop permanece eficiente, mas as regras ficam mais consistentes e o acesso direto de escrita ao BD é reduzido gradualmente.
5) Consolidar: eliminar regras duplicadas e caminhos especiais
Com o tempo, caso contrário surgirão “dois sistemas”. Planeje consolidações regulares: que regras existem duplicadas? Onde o portal pode reutilizar serviços do desktop? Quais relatórios devem ser gerados centralmente? O objetivo é uma plataforma gerenciável, não um dogma.
Armadilhas típicas do ponto de vista operacional — e como evitá‑las
Regras recriadas no portal
Isto leva a divergências e casos de suporte. Contramedida: APIs por caso de uso com validações server‑side, retornos de erro claros e, se possível, cenários de teste de domínio comuns.
Incerteza sobre soberania de dados entre desktop e portal
Se ambos os clientes puderem alterar “tudo”, surgirão conflitos. Contramedida: modelo de status, responsabilidades definidas e Optimistic Concurrency para alterações concorrentes.
Segurança tratada como extra posterior
Especialmente em portais de clientes, SSO, checagens de multitenancy, downloads seguros de arquivos e auditoria são necessários desde o início. Implementar isso depois é mais caro e aumenta o risco de vulnerabilidades.
Falta de transparência na operação
Sem Request‑IDs, logs estruturados e health‑checks a investigação de falhas vira trabalho de detetive. Contramedida: observability como componente obrigatório das primeiras releases de serviço.
Conclusão: um núcleo de serviços une a força do desktop ao alcance do portal
A combinação de Delphi‑Desktop e portal web é, em muitas empresas, o caminho mais realista para preservar processos centrais existentes e, simultaneamente, permitir colaboração externa. O essencial é não operar dois mundos separados, mas criar um núcleo de serviços que conecte: APIs por caso de uso, permissões claras, estados rastreáveis, vias de dados controladas e um modelo operacional com logging, monitoramento e deployments previsíveis.
Assim surge uma modernização com objetivos intermédios: o desktop permanece produtivo, o portal entrega valor cedo e a arquitetura torna‑se passo a passo mais consistente e manutenível.
No contexto de domínio, Delphi Modernisierung também desempenha um papel importante quando integrações, fluxos de dados e evolução precisam operar de forma harmoniosa.
Discutir projeto ou iniciativa de modernização com Net-Base.
Próximo passo
Quando o tema se tornar um projeto real, arquitetura, ambiente existente e operação devem ser considerados em conjunto desde o início.
Não apenas apoiamos questões pontuais, mas também quando fragmentos de código-fonte, temas legados ou ideias de portais precisam evoluir para um projeto empresarial robusto.
- Estado atual, estado-alvo e riscos técnicos são avaliados em conjunto.
- REST, o acesso a dados, os portais e o Rollout não são adiados para fases posteriores.
- Você identifica cedo qual caminho é viável econômica e operacionalmente.