A história do BEF
O BEF é um Framework, ou seja, é um ORM (Object Relational Mapper – Mapeamento de Objeto Relacional) voltado para as necessidades específicas da Benner.
A Benner tem sua estrutura de código muito ligada à estrutura de dados, ou seja, desde a criação dos metadados usando o Builder até a geração de interfaces usando Runner ou WES, tudo é muito ligado às estruturas de dados definidas. Nos ambientes desktop, as regras de negócio são implementadas através de macros que são disparadas utilizando gatilhos para disparar eventos de CRUD e até mesmo comandos ligados à botões de função.
A necessidade de migrar esse código legado de macros para C#, foi o que inspirou a criação do BEF, além claro, de proporcionar uma maneira alternativa de escrita de regra de negócio mantendo o legado. Aproveitando-se da criação WES que utiliza conceito de entidades, o BEF incorpora esses recursos, vinculando DLL de C# para execução dos métodos da entidade, o que proporcionou uma ligação com o legado e o desenvolvimento de novas funcionalidades.
E o .NET Core?
O desacoplamento dos produtos com a criação de micro aplicações/microsserviços demandou a necessidade de ter uma estrutura mais enxuta. Adicionando a isso o suporte a multiplataforma, redução de custo e aumento de performance, motivaram a escrita BEF em .NET Core.
Vale ressaltar que o BEF em si foi desenvolvido em .NET Standard 2.0, isso viabiliza o seu uso em qualquer versão de .NET.
O principal propósito neste momento é a criação de serviços sem necessidade do WES, criando WEB API por exemplo, sem necessidade do “peso” do WES (componentes de interface por exemplo). Portanto, não temos o objetivo de substituir o BEF atual neste momento, mas sim, complementar o que temos atualmente.
Como características principais podemos elencar:
- ORM com padrão Data Mapper: o BEF .NET Core implementa um padrão de Data Mapper (utilizando-se do Dapper, mais simples e mais leve que o Entity Framework).
- Padrão de mapeamento: separa a lógica do negócio da persistência de dados.
- Flexibilidade: possibilidade de alterar as implementações do mapper sem afetar as classes de domínio.
- Performance: possibilidade de trabalhar com objetos reduzidos, sem correspondência direta dos objetos de domínio com as tabelas do banco de dados, sem necessidade de mapeamento completo da entidade.
O que a Tecnologia oferece para usar .NET Core?
A Tecnologia oferece vários recursos para a implementação do .NET Core nos produtos Benner, podemos citar:
- Conexão com o BEF: abstração para obter dados do SuperServer – Benner.Core.Abstractions.ISuperServerSettings.
- Pacote de componentes: o pacote Benner.Core.Infrastructure oferece vários recursos para resolução de problemas com a infraestrutura: conexão com o BServer, realizar injeção de dependências, mapeamento de entidades, etc.
- Plugins (IBefPlugin): conceito implementado para adicionar componentes independentes e desacoplados do sistema, sem a necessidade de carga de toda a estrutura de negócio em uma aplicação que vai utilizar apenas partes das funcionalidades. Isso torna a aplicação mais leve.
- Mapeamento de entidades (IEntity): mapeamento através de modelos:
- BefEntity tableName: atributo de classe obrigatório, que mapeia a tabela com a classe.
- Handle: atributo nullable, obrigatório mesmo para tabelas sem handle.
- BefProperty FieldName: atributo de propriedade opcional, obrigatório apenas quando o nome do campo na entidade não é o mesmo nome do campo na tabela.
- Métodos para CRUD: os métodos implementados para realizar o CRUD no BEF:
- Query: utilizado para consultas.
- CreateNew: utilizado para inserir registros nas tabelas.
- Query ForEdit/Save: consulta o registro com a possibilidade de edição, após alterar utiliza-se o Save.
- DeleteByHandle/DeleteMany: exclusão diretamente pelo handle, ou com alguma condição (um ou vários registros).
Cuidado apenas ao utilizar as consultas dentro do contexto do BEF para não onerar o banco de dados, devemos usar os métodos do BEF.
Para saber mais
A Tecnologia produziu uma série de documentos disponíveis na Wiki, que são complementados conforme as novas funcionalidades são desenvolvidas:
Além disso, o Augusto Francisco Ferbonink juntamente com o Danilo Pereira da Silva gravaram um BE.TECH explicando tudo sobre BEF .NET Core com vários exemplos, baixe os fontes usados no BE.TECH aqui e veja o vídeo a seguir:
Com esse material você vai poder usar o BEF .NET Core e ficar fera no assunto. Se tiver dúvidas, procure-nos na Tecnologia.
Te vejo no próximo post, um abraço,
Danton C. Franco Junior
#TimeTec