<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Renato Santos Dos Anjos</title>
    <description>The latest articles on DEV Community by Renato Santos Dos Anjos (@resantosdosanjos).</description>
    <link>https://dev.to/resantosdosanjos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1301604%2Fc522791b-54bc-42a5-b750-492b7712efc6.png</url>
      <title>DEV Community: Renato Santos Dos Anjos</title>
      <link>https://dev.to/resantosdosanjos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/resantosdosanjos"/>
    <language>en</language>
    <item>
      <title>Explorando o Mundo dos Middlewares no ASP.NET Core: Uma Jornada pela Camada Intermediária</title>
      <dc:creator>Renato Santos Dos Anjos</dc:creator>
      <pubDate>Wed, 28 Feb 2024 13:12:32 +0000</pubDate>
      <link>https://dev.to/resantosdosanjos/explorando-o-mundo-dos-middlewares-no-aspnet-core-uma-jornada-pela-camada-intermediaria-1l3d</link>
      <guid>https://dev.to/resantosdosanjos/explorando-o-mundo-dos-middlewares-no-aspnet-core-uma-jornada-pela-camada-intermediaria-1l3d</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;No vasto ecossistema do ASP.NET Core, os Middlewares desempenham um papel crucial, muitas vezes operando como a camada intermediária entre a requisição do cliente e a resposta do servidor. Neste artigo, embarcaremos em uma jornada para entender o que são os Middlewares, como funcionam e por que são uma parte essencial do desenvolvimento de aplicações web modernas.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é Middleware do ASP.NET Core
&lt;/h2&gt;

&lt;p&gt;Os Middlewares são componentes que podem processar requisições HTTP, modificando-as, adicionando funcionalidades, ou até mesmo curvando o fluxo da requisição. Eles formam uma corrente de processamento, onde cada elo (Middleware) executa uma tarefa específica. No ASP.NET Core, a implementação modular e flexível dos Middlewares permite a construção de pipelines personalizados para atender às necessidades específicas de uma aplicação.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como Funciona
&lt;/h2&gt;

&lt;p&gt;O pipeline de Middlewares no ASP.NET Core funciona de forma sequencial, com a requisição passando por cada Middleware na ordem em que foram configurados. Cada Middleware pode decidir passar a requisição adiante, encerrá-la, ou modificar tanto a requisição quanto a resposta. Isso proporciona um controle granular sobre o fluxo da aplicação e a capacidade de injetar funcionalidades em pontos específicos do ciclo de vida da requisição.&lt;/p&gt;

&lt;h2&gt;
  
  
  Para que Serve
&lt;/h2&gt;

&lt;p&gt;Os Middlewares servem para uma variedade de propósitos, desde autenticação e autorização até logging, compressão de resposta, e manipulação de erros. Eles oferecem uma abordagem modular para construir e estender funcionalidades, permitindo que os desenvolvedores personalizem o comportamento da aplicação de acordo com as necessidades específicas do projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quando Usar
&lt;/h2&gt;

&lt;p&gt;A utilização de Middlewares é recomendada sempre que há a necessidade de manipular ou estender o processamento de requisições HTTP. Eles são particularmente úteis para adicionar funcionalidades globais à aplicação, como autenticação, logging e tratamento de erros, sem acoplar essas responsabilidades diretamente ao código dos controladores.&lt;/p&gt;

&lt;p&gt;Vamos criar um exemplo simples de um Middleware no ASP.NET Core que adiciona um cabeçalho personalizado a cada resposta. Este é um Middleware de exemplo para ilustrar o conceito.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkzsk9mv2vlhv7ox1gfw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkzsk9mv2vlhv7ox1gfw.PNG" alt="Image description" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora, para usar esse Middleware, você o registraria no método Configure no arquivo Startup.cs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6727ih93nsnr1cbib7u0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6727ih93nsnr1cbib7u0.PNG" alt="Image description" width="540" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Em resumo, os Middlewares no ASP.NET Core representam uma ferramenta poderosa para a construção de aplicações web flexíveis e eficientes. Ao compreender como eles funcionam e para que servem, os desenvolvedores podem criar pipelines robustos que atendem às demandas específicas de seus projetos. Ao incorporar Middlewares de maneira inteligente, é possível alcançar um código mais modular, manutenível e adaptável às mudanças no cenário de desenvolvimento de software.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>programming</category>
    </item>
    <item>
      <title>Desvendando a Injeção de Dependência no .NET</title>
      <dc:creator>Renato Santos Dos Anjos</dc:creator>
      <pubDate>Sun, 25 Feb 2024 21:13:06 +0000</pubDate>
      <link>https://dev.to/resantosdosanjos/desvendando-a-injecao-de-dependencia-no-net-4k28</link>
      <guid>https://dev.to/resantosdosanjos/desvendando-a-injecao-de-dependencia-no-net-4k28</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Se você é desenvolvedor .NET, certamente já ouviu falar sobre Injeção de Dependência (DI). No entanto, compreender profundamente esse conceito pode ser fundamental para criar aplicações mais flexíveis, testáveis e de fácil manutenção. Neste guia completo, vamos explorar a Injeção de Dependência no contexto do .NET, desde o que é até como aplicá-la eficientemente em seus projetos. Vamos começar desvendando os mistérios por trás desse conceito poderoso.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é Injeção de Dependência
&lt;/h2&gt;

&lt;p&gt;A Injeção de Dependência é um padrão de design fundamental para criar sistemas modularizados e de fácil manutenção. Em essência, trata-se de fornecer as dependências necessárias a uma classe a partir de uma fonte externa, em vez de criá-las internamente. Isso promove o desacoplamento entre componentes, facilitando a substituição, teste unitário e evolução do código ao longo do tempo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como Funciona a Injeção de Dependência
&lt;/h2&gt;

&lt;p&gt;No .NET, a Injeção de Dependência funciona por meio da passagem das dependências requeridas para os componentes dependentes, seja através do construtor, propriedades ou métodos. Essa prática possibilita a flexibilidade na escolha e alteração de implementações, proporcionando um código mais limpo e modular.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tipos de Injeção de Dependência
&lt;/h2&gt;

&lt;p&gt;No ecossistema .NET, três métodos comuns para registrar serviços e gerenciar o ciclo de vida das dependências são AddScoped, AddTransient e AddSingleton. Cada um desses métodos tem suas características únicas que afetam a forma como as dependências são instanciadas e mantidas durante a execução da aplicação.&lt;/p&gt;

&lt;p&gt;AddScoped: Cria uma instância por solicitação dentro do mesmo escopo (por exemplo, uma solicitação HTTP).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public interface IServicoScoped
{
    void ExibirMensagem();
}

public class ServicoScoped : IServicoScoped
{
    public Guid Id { get; } = Guid.NewGuid();

    public void ExibirMensagem()
    {
        Console.WriteLine($"Instância de Scoped - ID: {Id}");
    }
}

services.AddScoped&amp;lt;IServicoScoped, ServicoScoped&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, uma nova instância do serviço ServicoScoped será criada por solicitação HTTP. Dentro do mesmo escopo, a instância será a mesma para todos os componentes dependentes.&lt;/p&gt;

&lt;p&gt;AddTransient: Cria uma nova instância sempre que a dependência é solicitada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public interface IServicoTransient
{
    void ExibirMensagem();
}

public class ServicoTransient : IServicoTransient
{
    public Guid Id { get; } = Guid.NewGuid();

    public void ExibirMensagem()
    {
        Console.WriteLine($"Instância de Transient - ID: {Id}");
    }
}

services.AddTransient&amp;lt;IServicoTransient, ServicoTransient&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, uma nova instância do serviço ServicoTransient será criada sempre que a dependência for solicitada. Cada componente dependente receberá uma instância diferente.&lt;/p&gt;

&lt;p&gt;AddSingleton: Cria uma única instância que é reutilizada em todas as solicitações durante a vida da aplicação.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public interface IServicoSingleton
{
    void ExibirMensagem();
}

public class ServicoSingleton : IServicoSingleton
{
    public Guid Id { get; } = Guid.NewGuid();

    public void ExibirMensagem()
    {
        Console.WriteLine($"Instância de Singleton - ID: {Id}");
    }
}

services.AddSingleton&amp;lt;IServicoSingleton, ServicoSingleton&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui, uma única instância do serviço ServicoSingleton será criada e reutilizada em todas as solicitações durante a vida da aplicação. Todas as partes dependentes compartilharão a mesma instância.&lt;/p&gt;

&lt;p&gt;Entender quando usar cada um desses métodos é crucial para garantir o comportamento desejado de suas dependências ao longo do ciclo de vida da aplicação.&lt;/p&gt;

</description>
      <category>dotnet</category>
    </item>
  </channel>
</rss>
