Com o objetivo de fornecer documentação extensa sobre o DROP, vou começar a série DROP Wiki, e como muitas conversas sobre o framework começam pela pergunta "O que é o DROP?", nada melhor do que começar a série tentando responder esta pergunta.
De forma mais resumida possível, O DROP é um conjunto de classes feitas em Delphi, para facilitar tarefas do cotidiano do desenvolvedor. Muitas destas classes foram desenvolvidas para suportar um framework próprio de ORM (mapeamento objeto-relacional), e é principalmente por cumprir este objetivo que o DROP é mais conhecido.
Outra coisa importante sobre o DROP é que ele é totalmente grátis e open source (licença MIT), e se você já está interessado em baixá-lo ou usá-lo, você pode fazer através do GitHub, ou fazendo o download dos fontes através de um arquivo compactado neste link. Agora, vamos esmiuçar mais um pouco o DROP.
Lembro que, enquanto o DROP estava sendo desenvolvido/remodelado, muitas vezes conversei com a equipe da Aquasoft e outros desenvolvedores (como meu amigo Muka), e o assunto de várias destas conversas era o porquê do DROP ser dividido em algumas camadas, cada camada com uma responsabilidade. Entender melhor estas camadas, faz com que o entendimento sobre o DROP seja facilitado:
- Core: contém classes úteis para diversas coisas, com fins genéricos no desenvolvimento em geral. Nesta camada ainda não há nada implementado para acessar ou conversar com SGBDs. Para falar a verdade, algumas classes nem chegam a ser consumidas direta ou indiretamente nas tarefas de ORM;
- BD: as classes contidas aqui abstraem a comunicação com SGBDs, e consequentemente, muitas destas classes são abstratas, fornecendo estruturas uniformes, que mais adiante permitem ao DROP escrever o código uma única vez, porém compatível com todos os bancos de dados suportados até então. Por mais que neste nível não existam classes concretas de acesso a dados, já existem muitas classes específicas para alguns SGBDs, como as classes que resolvem os objetos de SQL, traduzindo-os para a linguagem específica de cada um dos SGBDs suportados;
- ORM: contém as classes de ORM, propriamente ditas. Transformam estruturas de classes e seus atributos em objetos SQL, bem como possibilitam com que objetos que representam entidades sejam persistidas e recuperadas dos SGBDs;
- Base para ORM (este nome ainda precisa de um facelift do setor de marketing ;-): a camada de ORM não exige que as classes a serem mapeadas herdem de classes do DROP, no entanto, o DROP fornece, nesta camada, algumas classes que podem ser estendidas, reduzindo o trabalho do desenvolvedor ao realizar o mapeamento objeto-relacional.
A camada Core apresenta todas as suas units em um pacote homônimo, sendo que as demais camadas estão implementadas no pacote DB. É importante salientar que todas as units das camadas acima estão livres de código específico para acesso a dados via alguma das tecnologias para tal tarefa.
Para realizar o acesso físico aos dados, o DROP pode trabalhar tanto com o DBX framework, quanto FireDAC, fica a critério do desenvolvedor usar uma tecnologia ou outra. Sendo assim, cada uma das implementações do DROP para as tecnologias acima recebeu seu próprio pacote.
Falando em acesso físico a dados, o DROP atualmente suporta seis SGBDs relacionais:
- Interbase;
- Oracle;
- Microsoft SQL Server;
- PostgreSQL (somente via FireDAC);
- MySQL;
- Firebird;
- SQLite.
Concluindo, se fosse possível resumir o conteúdo acima com uma imagem, seria mais ou menos assim:
Para encerrar, os próximos posts da série alternarão assuntos de como usar ORM, bem como as classes que circundam todo o eco-sistema. Até lá!!!
Próximo Episódio |
Nenhum comentário:
Postar um comentário