<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>C# on Direto do Código</title><link>https://ivaldo.eti.br/pt/tags/c%23/</link><description>Recent content in C# on Direto do Código</description><generator>Hugo</generator><language>pt</language><copyright>© 2025 Ivaldo de Oliveira Batista Júnior</copyright><lastBuildDate>Tue, 07 Oct 2025 09:15:00 -0300</lastBuildDate><atom:link href="https://ivaldo.eti.br/pt/tags/c%23/index.xml" rel="self" type="application/rss+xml"/><item><title>Potencializando Logs em C# com [CallerFilePath] e [CallerLineNumber]</title><link>https://ivaldo.eti.br/pt/blog/supercharging-c%23-logs-with-callerfilepath-and-callerlinenumber/</link><pubDate>Tue, 07 Oct 2025 09:15:00 -0300</pubDate><guid>https://ivaldo.eti.br/pt/blog/supercharging-c%23-logs-with-callerfilepath-and-callerlinenumber/</guid><description>&lt;h2 id="introdução"&gt;Introdução&lt;/h2&gt;
&lt;p&gt;São 3 da manhã. Um alerta crítico te acorda: um serviço em produção está falhando. Você abre os logs, procurando desesperadamente por uma pista, apenas para encontrar um mar de mensagens genéricas como &lt;code&gt;&amp;quot;Ocorreu um erro durante o processamento&amp;quot;&lt;/code&gt;. A frustração aumenta. Em qual lugar, dentre as milhares de linhas de código, isso aconteceu? Todos nós já passamos por isso. É neste momento que o verdadeiro valor de um log bem estruturado se torna dolorosamente claro.&lt;/p&gt;</description></item><item><title>Arquitetura Hexagonal em .NET: Do Controller aos Ports &amp; Adapters na Prática com um Projeto Real</title><link>https://ivaldo.eti.br/pt/blog/arquitetura-hexagonal-em-dotnet-do-controller-aos-ports-e-adapters/</link><pubDate>Mon, 08 Sep 2025 15:00:00 -0300</pubDate><guid>https://ivaldo.eti.br/pt/blog/arquitetura-hexagonal-em-dotnet-do-controller-aos-ports-e-adapters/</guid><description>&lt;h2 id="introdução-a-dor-do-acoplamento"&gt;Introdução: A Dor do Acoplamento&lt;/h2&gt;
&lt;p&gt;Se você desenvolve com .NET há algum tempo, provavelmente já viu ou escreveu um &lt;code&gt;Controller&lt;/code&gt; assim: ele recebe uma requisição HTTP, valida os dados, manipula a lógica de negócio, conversa diretamente com o Entity Framework, talvez chame um &lt;code&gt;HttpClient&lt;/code&gt; para outra API e, por fim, retorna um &lt;code&gt;ActionResult&lt;/code&gt;. No início, parece produtivo. Mas com o tempo, esse controller se torna um monstro: frágil, difícil de testar e terrivelmente acoplado à tecnologia.&lt;/p&gt;</description></item><item><title>Guia Completo de Logging em Blazor WASM: Do Básico ao Avançado com um Provedor Customizado</title><link>https://ivaldo.eti.br/pt/blog/guia-completo-logging-blazor-wasm-customizado/</link><pubDate>Tue, 08 Jul 2025 11:45:00 -0300</pubDate><guid>https://ivaldo.eti.br/pt/blog/guia-completo-logging-blazor-wasm-customizado/</guid><description>&lt;p&gt;Se você já desenvolveu para a web, conhece a sensação: um usuário reporta um erro que você não consegue reproduzir. &amp;ldquo;Deu um problema na hora de salvar&amp;rdquo;, ele diz. Sem mais detalhes. Se o problema aconteceu no servidor, você provavelmente tem logs para investigar. Mas e se o erro ocorreu inteiramente no navegador do usuário? Os logs do console, se existirem, foram perdidos para sempre no momento em que a aba foi fechada.&lt;/p&gt;</description></item><item><title>Mediator Design Pattern: Simplificando Interações em Sistemas Distribuídos</title><link>https://ivaldo.eti.br/pt/blog/mediator-design-pattern-simplificando-interacoes-em-sistemas-distribuidos/</link><pubDate>Sun, 09 Jul 2023 14:35:51 -0300</pubDate><guid>https://ivaldo.eti.br/pt/blog/mediator-design-pattern-simplificando-interacoes-em-sistemas-distribuidos/</guid><description>&lt;h2 id="introdução"&gt;Introdução&lt;/h2&gt;
&lt;p&gt;Nos últimos anos, a computação tem testemunhado uma mudança significativa em direção a sistemas distribuídos. A necessidade de escalabilidade, disponibilidade e flexibilidade levou ao desenvolvimento de arquiteturas complexas, onde diferentes componentes de software interagem para fornecer funcionalidades abrangentes. No entanto, à medida que os sistemas distribuídos evoluem, surge um desafio inerente: a complexidade das interações entre esses componentes.&lt;/p&gt;
&lt;p&gt;A comunicação entre partes distintas de um sistema distribuído é essencial, mas frequentemente resulta em um aumento no acoplamento entre os componentes. Conforme novos módulos são adicionados ou alterados, as interações diretas podem levar a uma rede de dependências, tornando a manutenção e a expansão do sistema uma tarefa árdua. É aqui que o Padrão de Design Mediator entra em cena.&lt;/p&gt;</description></item></channel></rss>