terça-feira, 6 de junho de 2017

DROP Wiki #1 - Introdução

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.

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 neste nível, 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:
  • Oracle;
  • Microsoft SQL Server;
  • PostgreSQL (somente via FireDAC);
  • MySQL;
  • Firebird;
  • SQLite.
E, se tudo sair conforme planejado, a próxima versão trará o suporte ao Interbase!

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á!!!

Nenhum comentário:

Postar um comentário

DROP Wiki #3 - Instruções SQL via texto

Por mais que um ORM tenha o objetivo de não escrever explicitamente instruções SQL, usuários novos de ORMs tendem a não aceitar uma ferramen...