Repository navigation
migrar para 2.0
Home > Atualizar de versão > Migrar para a 2.0
Important
Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.
Nível: intermediário
Em uma frase: a 2.0 reorganizou as pastas e os pacotes do RAL: o núcleo ficou menor, cada recurso opcional ganhou um pacote próprio, e alguns pacotes mudaram de nome, de uma vez, para não mudar mais.
Você vai precisar: saber quais pacotes do RAL você tem instalados hoje. O instalador faz tudo desta página sozinho: ele troca os pacotes antigos pelos novos e já marca os que herdaram o que você usava. Esta página é para quem instala à mão, compila os fontes direto ou tem pacotes próprios que exigem os do RAL.
As mudanças de código da 2.0 (servidor com plugins, corpo sem cópias...) estão em Atualizar de versão.
O PascalRAL agora tem só o servidor, o cliente, as rotas, os parâmetros, os
plugins básicos (segurança, CORS, compressão, cifra, fila), compressão gzip,
criptografia e utilitários. O resto virou pacote à parte:
| Recurso | Pacote na 2.0 | Delphi | Lazarus |
|---|---|---|---|
| Autenticação: Basic, JWT, Digest, OAuth2 | RALPluginAuthPackage |
pkg\Delphi\Plugins |
pkg\Lazarus\Plugins |
Certificado automático (TRALSelfSignedPlugin) |
RALPluginTLSPackage |
pkg\Delphi\Plugins |
pkg\Lazarus\Plugins |
| Storages BIN, JSON e CSV | RALStoragePackage |
pkg\Delphi\Storage |
pkg\Lazarus\Storage |
Servir site e arquivos (TRALWebModule) |
RALModuleWebPackage |
pkg\Delphi\Modules |
pkg\Lazarus\Modules |
| Swagger e Postman | RALModuleSwaggerPackage |
pkg\Delphi\Modules |
pkg\Lazarus\Modules |
As classes não mudaram de nome, e as units também não (RALAuthentication,
RALStorageBIN, RALWebModule, RALSwaggerModule...). O que muda é o pacote
que você instala e, no Lazarus, o pacote que o seu projeto exige.
| 1.x (Delphi) | 1.x (Lazarus) | 2.0 |
|---|---|---|
PascalRAL, PascalRALDsgn
|
pascalral, pascalraldsgn
|
os mesmos |
IndyRAL, SynopseRAL... (todos os motores) |
indyral, synopseral... |
os mesmos |
RALDBPackage |
raldbpackage |
RALDBPackage + RALDBDsgn (o de design separado) |
RALDBFireDACLink |
— |
RALDBFireDACPackage + RALDBFireDACDsgn
|
RALDBFireDACObjects |
— | RALDBFireDACDAOPackage |
RALDBZeosLink |
raldbzeoslink |
RALDBZeosPackage + RALDBZeosDsgn
|
| — | raldbsqldblink |
raldbsqldbpackage + raldbsqldbdsgn
|
RALBSONStorage |
raldbbson |
RALStorageBSONPackage |
RALZStdCompress |
ralzstdcompress |
RALCompressZStdPackage |
RALBrotliCompress |
ralbrotlicompress |
RALCompressBrotliPackage |
RALXMLPackage |
ralxmlpackage |
RALModuleXMLPackage |
RALSOAPPackage |
ralsoappackage |
RALModuleSOAPPackage + RALModuleSOAPDsgn
|
RALWizard |
ralwizardpack |
RALWizardDsgn |
O padrão dos nomes daqui para a frente: RAL<Categoria><Item>Package para o
pacote e RAL<Categoria><Item>Dsgn para o de design. Os motores continuam
<Motor>RAL de propósito: o nome lembra que o RAL não funciona sem um motor
instalado.
| 1.x | 2.0 |
|---|---|
base |
core (servidor, cliente, rotas, parâmetros, a base dos plugins e da autenticação) e storage
|
base\plugins |
plugins (os do núcleo), plugins\auth, plugins\tls
|
base\modules |
common (o que era utilitário do núcleo), modules\web, modules\swagger
|
utils |
common, compress, crypto, storage
|
others (units do RAL + submódulos) |
others só com os submódulos (ZSTD, pascal_brotli, kxBSON); as units do RAL foram para bindings, compress\zstd, compress\brotli, storage\bson
|
database, database\FireDAC... |
os mesmos |
engine\<motor> |
os mesmos; o MsQuic e o Sagui também precisam de bindings
|
Modelo mínimo, Indy + NetHTTP, só código:
$(PascalRAL)\core;$(PascalRAL)\common;$(PascalRAL)\compress;$(PascalRAL)\crypto;$(PascalRAL)\plugins;$(PascalRAL)\engine\indy;$(PascalRAL)\engine\netHTTP
Acrescente o que usar: plugins\auth (autenticação), storage (storages e
DBWare), modules\web, modules\swagger, database e database\FireDAC
(banco), bindings (MsQuic, Sagui). Um arquivo que falta em others é sempre
um submódulo que não foi baixado: git submodule update --init --recursive.
Quem compila os fontes direto (sem pacotes) e esquece uma pasta vê
F2613 Unit 'RALAuthentication' not found (ou outra unit): a tabela acima diz
de qual pasta ela é.
| 1.x | 2.0 | Precisa mexer? |
|---|---|---|
RALDBTypes |
RALStorageTypes |
não: RALDBTypes continua existindo e avisa que é obsoleta |
RALIndyRegister, RALSynopseRegister... |
RALIndyReg, RALSynopseReg... |
só se você citava a unit de registro |
raldbregister |
RALDBReg |
idem |
RALDBFireDACLinkReg, RALDBZeosLinkReg, RALDBSQLDBLinkReg
|
RALDBFireDACReg, RALDBZeosReg, RALDBSQLDBReg
|
idem |
RALBSONReg, RALXMLReg, RALSOAPReg
|
RALStorageBSONReg, RALModuleXMLReg, RALModuleSOAPReg
|
idem |
No Lazarus, um projeto que tem a unit do pacote no uses do .lpr
(raldbzeoslink, raldbsqldblink...) troca pelo nome novo do pacote
(raldbzeospackage, raldbsqldbpackage...).
-
Pacote seu que exige
PascalRALDsgnsó para usar o RAL: troque porPascalRAL. Na 2.0 oPascalRALDsgné{$DESIGNONLY}e exige odesignide. O compilador não avisa nada; o problema aparece em runtime, num programa compilado com pacotes de runtime, que passa a precisar doPascalRALDsgn.bple dodesignide.bpl(que não pode ser distribuído). Exija odesignidesó no pacote que registra componentes na IDE. -
Pacote seu que exige um pacote renomeado (
RALDBFireDACLink,RALBSONStorage...): não compila até trocar pelo nome novo da tabela. -
Projeto do Lazarus: acrescente os pacotes novos que guardam as units que
ele usa (por exemplo
ralpluginauthpackageparaRALAuthentication,ralstoragepackageparaRALStorageBIN,ralmodulewebpackageparaRALWebModule). No Delphi, sem pacotes de runtime, basta o library path. -
Formulários: abrem como antes, desde que o pacote novo esteja instalado (o
.dfmguarda a classe, não o pacote). Sem ele, a IDE avisa que a classe não foi encontrada. As propriedades do servidor que viraram plugins são outra mudança, explicada em Atualizar de versão.
| Mensagem | Causa | O que fazer |
|---|---|---|
Required package 'RALDBFireDACLink' not found (ou outro nome antigo) |
o .dpk/.dproj ainda cita o nome da 1.x |
troque pelo nome novo da tabela |
Class TRALServerJWTAuth not found ao abrir o formulário |
RALPluginAuthPackage não instalado |
instale o pacote (vale o mesmo para storage, Web e Swagger) |
F2613 Unit 'RALServer' not found |
library path da 1.x (base, utils) |
troque pelas pastas da 2.0 |
no Lazarus, Can't find unit RALAuthentication
|
o projeto não exige o pacote novo | Project Inspector > Add > New Requirement |
| o instalador recusa: "nenhum motor escolhido" | nenhum pacote de Engine marcado |
marque ao menos um motor: o RAL não funciona sem um |
Começar
Servidor
- Rotas e parâmetros
- Rotas avançadas: tipos, grupos, versões 🚧
- 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