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

Compartilhe
Autor
Leia mais
Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *