[ETP] Integração .Net + PostgreSQL
ESTUDO TÉCNICO PRELIMINAR - ETP
Devido a complexidade de adoções de licenças de ferramentas pelo Governo, a solução dos profissionais de TI é buscar ferramentas que sejam boas e gratuitas para utilizações robustas, devido a isso o uso do banco de dados do Postgress é recomendado devido suas praticidades. O PostgreSQL é um banco de dados de código aberto mais avançado, oferece muitas vantagens para a SETIC do que outros sistemas de banco de dados. Ele também está disponível para quase todos os sistemas operacionais com a versão estável mais recente. Por fim a intenção deste estudo é integrar esse banco de dados junto a tecnologia de desenvolvimento do C#/.NET.
2 - Complexidade de cada funcionalidade
Basicamente a integração do ..NET com o PostgreSQL é intermediada pelo EF Core (Entity Framework Core), de acordo com o site oficial da microsoft (https://docs.microsoft.com/pt-br/ef/core/), o conceito de Entity Framework Core é disponibilizado a seguir:
O EF (Entity Framework) Core é uma versão leve, extensível, de software livre e multiplataforma da popular tecnologia de acesso a dados do Entity Framework.
EF Core pode servir como um mapeador relacional de objeto (O/RM), que:
- Permite que os desenvolvedores do .NET trabalhem com um banco de dados usando objetos .NET.
- Elimina a necessidade da maior parte do código de acesso a dados que normalmente precisa ser gravado.
O EF Core é compatível com vários mecanismos de banco de dados, consulte detalhes em Provedores de Banco de Dados.
Fonte: Microsoft
Para esta integração os provedores de banco são pontes para outros tipos de bancos dados. A microsoft também aborda o conceito de provedores para o banco de dados, esses provedores fornecem conectividade com a tecnologia .NET Core para sua integração.
O próprio site de documentação do PostgreSQL aborda como é feita a configuração desses provedores, vejamos:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.3" />
</ItemGroup>
</Project>
Fonte: Npgsql
Após a instalação e configuração do provedor que dá acesso é necessário a criação do contexto que representará o modelo de negócio do projeto por meio da classes, reparemos:
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace ConsoleApp.PostgreSQL
{
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseNpgsql("Host=my_host;Database=my_db;Username=my_user;Password=my_pw");
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
Fonte: Npgsql
3 - Possíveis problemas
4 - Valor agregado
5 - Conclusão do estudo
O presente ESTUDO TÉCNICO PRELIMINAR, elaborado pelos integrantes TÉCNICOS do time TITÃS, considerando a análise dos desafios técnicos envolvidos e citados, conclui pela VIABILIDADE DA IMPLEMENTAÇÃO DA NOTIFICAÇÃO DE MODO CRITERIOSO, uma vez que foram considerados os potenciais benefícios em termos de eficiência e também os problemas envolvidos, principalmente potenciais problemas de desempenho da aplicação. Em complemento, os contratempos identificados são administráveis, pelo que RECOMENDAMOS o prosseguimento da demanda. Ressalva-se que o ideal é que a periodicidade de envio dos e-mails seja no máximo diária, para esta atividade recomenda-se a construção de um Job que faça o envio no período desejado.