Repository navigation
qual motor
mobius1qwe edited this page Oct 29, 2026
·
8 revisions
Home > Qual motor escolher?
Em uma frase: o motor é quem conversa com a rede; o seu código é o mesmo em todos. Escolha pelo cenário abaixo e troque depois, se precisar, mudando duas linhas.
Note
As medições de desempenho estão sendo refeitas com um roteiro padronizado e entram aqui quando estiverem prontas.
| Cenário | Servidor | Cliente | Configuração recomendada |
|---|---|---|---|
| API na rede da empresa, Windows, dezenas de usuários | Indy ou mORMot2 | netHTTP (sem DLL) ou Indy | o padrão de cada um |
| Delphi antigo (7 a 2007) | mORMot2 | mORMot2 | — |
| API na internet atrás do nginx (HTTPS no nginx) | mORMot2 | — |
Mode := smAsync (1.2); servidor em http só para o nginx (nginx) |
| Muitas conexões abertas e paradas (apps que ficam conectados) | mORMot2 | — |
Mode := smAsync (1.2: conexão parada custa só o socket, não uma thread) e MaxConnections
|
| Windows Server com HTTP/2 e certificado do Windows | mORMot2 | netHTTP com HTTPVersion := rhv2
|
Mode := smHttpSys (1.2, HTTP/2) |
| Rotas demoradas (consultas longas, chamadas a outros serviços) | mORMot2 smThreads, Indy, ou Sagui com ThreadPerConnection (2.0 🚧) |
— | DBWare com pool de conexões |
| Lazarus no Linux | mORMot2 ou fpHTTP (fpHTTP não precisa de nada além do FPC) | fpHTTP ou mORMot2 |
cthreads primeiro no uses
|
| Hospedagem que só aceita CGI | CGI | — | assistente, opção CGI |
| Sistema UniGUI | UniGUI | — | o servidor é o do UniGUI |
| App Android consumindo API | — | netHTTP (simples) ou OkHttp 1.2 (HTTP/2, pin) |
ebMultiThread sempre (Android) |
| Rede ruim / celular trocando de Wi-Fi para 4G, RAL nos dois lados | MsQuic 1.2
|
MsQuic ou Kwik 1.2
|
QUIC |
| Servidor dentro do celular | MsQuic 1.2 (Android 9+) |
— | Android |
| HTTPS sem preparar certificado | qualquer um com HTTPS próprio | — |
Certificado automático 2.0 🚧
|
| Resposta aos pedaços (progresso, SSE, MCP) | Indy, fpHTTP, Sagui ou mORMot2 smThreads
|
Indy, fpHTTP ou mORMot2 |
Resposta em fluxo 2.0 🚧
|
| Motor | Servidor | Cliente | Delphi | Lazarus | HTTPS próprio | HTTP/2 | Precisa instalar | Fluxo 2.0 🚧
|
|---|---|---|---|---|---|---|---|---|
| Indy | sim | sim | sim | sim | sim (OpenSSL 1.0.2) | não | Indy 10.6.2+; DLLs do OpenSSL para HTTPS | ao vivo |
| mORMot2 | sim | sim | 2009+ | sim | sim (Windows: SChannel; Linux: OpenSSL) | servidor smHttpSys
|
mORMot2 | smThreads |
| Sagui | sim | não | 2009+ | sim | sim (libsagui com TLS) | não |
libsagui (.dll/.so) |
ao vivo |
| fpHTTP | sim | sim | não | sim | sim (OpenSSL) | não | nada (vem com o FPC); DLLs do OpenSSL para HTTPS | ao vivo |
| NetHTTP | não | sim | XE8+ | não | sim (do sistema) | cliente, no Windows | nada | no fim |
| CGI | sim | não | sim | sim | do servidor da frente | não | IIS, Apache ou nginx | Lazarus |
| UniGUI | sim | não | sim | não | do UniGUI | não | UniGUI | no fim |
MsQuic 1.2
|
sim | sim | sim | sim | obrigatório | — (QUIC) |
msquic (.dll/.so) |
no fim |
OkHttp 1.2
|
não | Android | sim | não | sim | sim | 2 jars | no fim |
Kwik 1.2
|
não | Android 8+ | sim | não | obrigatório | — (QUIC) | 5 jars | no fim |
| Motor / modo | Como atende |
|---|---|
Indy, mORMot2 smThreads
|
uma thread por conexão aberta: simples; muitas conexões paradas = muitas threads |
mORMot2 smAsync, smHttpSys (1.2) |
poucas threads atendem muitas conexões |
| Sagui | grupo de threads (PoolCount), ou uma por conexão com ThreadPerConnection (2.0 🚧, padrão) |
| fpHTTP | um pedido por conexão; grupo de threads reaproveitadas na 2.0 🚧
|
Para segurar picos sem cair, na 2.0 🚧: TRALConcurrencyPlugin.
Começar
Servidor
- Rotas e parâmetros
- Ler o pedido e responder
- Resposta em fluxo 🚧
- Plugins 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- Swagger e Postman
- Servidor SOAP 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
MQTT 🚧
- O que é e quando usar 🚧
- Cliente MQTT 🚧
- Broker MQTT 🚧
- MQTT-SN 🚧
- Ponte REST 🚧
- Segurança 🚧
- Rede ruim 🚧
Cliente
Motores
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar