<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ports &amp; Adapters on Straight from the Code</title><link>https://ivaldo.eti.br/tags/ports--adapters/</link><description>Recent content in Ports &amp; Adapters on Straight from the Code</description><generator>Hugo</generator><language>en</language><copyright>© 2025 Ivaldo de Oliveira Batista Júnior</copyright><lastBuildDate>Mon, 08 Sep 2025 15:15:00 -0300</lastBuildDate><atom:link href="https://ivaldo.eti.br/tags/ports--adapters/index.xml" rel="self" type="application/rss+xml"/><item><title>Hexagonal Architecture in .NET: From Controllers to Ports &amp; Adapters in a Real Project</title><link>https://ivaldo.eti.br/blog/hexagonal-architecture-in-dotnet-from-controllers-to-ports-and-adapters/</link><pubDate>Mon, 08 Sep 2025 15:15:00 -0300</pubDate><guid>https://ivaldo.eti.br/blog/hexagonal-architecture-in-dotnet-from-controllers-to-ports-and-adapters/</guid><description>&lt;h2 id="introduction-the-pain-of-coupling"&gt;Introduction: The Pain of Coupling&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;ve been developing with .NET for a while, you&amp;rsquo;ve probably seen or written a &lt;code&gt;Controller&lt;/code&gt; like this: it receives an HTTP request, validates the data, handles business logic, talks directly to Entity Framework, maybe calls another API with &lt;code&gt;HttpClient&lt;/code&gt;, and finally, returns an &lt;code&gt;ActionResult&lt;/code&gt;. At first, it seems productive. But over time, this controller becomes a monster: fragile, difficult to test, and terribly coupled to technology.&lt;/p&gt;</description></item></channel></rss>