<?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>Forem: Cristian Lopes</title>
    <description>The latest articles on Forem by Cristian Lopes (@cristian_lopes).</description>
    <link>https://forem.com/cristian_lopes</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%2F892497%2Ff5cfd00f-07fd-4ebf-9c2a-d376df078ed0.jpg</url>
      <title>Forem: Cristian Lopes</title>
      <link>https://forem.com/cristian_lopes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cristian_lopes"/>
    <language>en</language>
    <item>
      <title>Net Aspire - O Futuro é Lindo</title>
      <dc:creator>Cristian Lopes</dc:creator>
      <pubDate>Thu, 30 May 2024 21:08:25 +0000</pubDate>
      <link>https://forem.com/cristian_lopes/net-aspire-o-futuro-e-lindo-4hm5</link>
      <guid>https://forem.com/cristian_lopes/net-aspire-o-futuro-e-lindo-4hm5</guid>
      <description>&lt;h2&gt;
  
  
  Net Aspire - Cloud o que?
&lt;/h2&gt;

&lt;p&gt;Faaala Galeraaa. &lt;/p&gt;

&lt;p&gt;Na minha rotina de estudos decidi dedicar um tempo ao .Net Aspire para entender porque tá todo mundo ouriçado com a mais nova "Cloud Ready Stack"&lt;/p&gt;

&lt;p&gt;E... Yes, Yes, Aspire é simplesmente sensacional. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Orchestration (Pelo pouco que entendi até aqui)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Em poucas palavras... &lt;br&gt;
Sabe o cursinho de docker que tu comprou? Cancela que tu não vai mais usar.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Já matamos o Javascript com o Blazor" &lt;br&gt;
"Flutter com o MAUI"&lt;br&gt;
"Agora chegou a hora de matar o Docker com o Aspire"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Brincadeiras a parte, mas ficou extremamente mais ágil desde a adição até a configuração das aplicações, mano, é tudo C# tá dominado. &lt;/p&gt;

&lt;p&gt;Segue os passos para adicionar um banco de dados Postgres como exemplo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adicionar Nuget Package "Aspire.Hosting.PostgreSQL"&lt;/strong&gt;&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%2Fq4wyqhq2v2hyox92byo9.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%2Fq4wyqhq2v2hyox92byo9.png" alt="Imagem do Nuget para PostgreSQL" width="800" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configurar tudo com C# + Intellisense + Copilot&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dbPassword&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddParameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"DatabasePassword"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;dbServer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddPostgres&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"dbServer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;dbPassword&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dbServer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddDatabase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"TodoApp"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;dbServer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithDataVolume&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithPgAdmin&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddProject&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TodoApp_Api&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;"todoapp-api"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithExternalHttpEndpoints&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aaaah voltando ao Docker, calmem, ele ainda está lá e ele precisa estar rodando né para não tomar estes erros como eu hahahaha.&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%2Fzb7qsz923zl5m5w457ya.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%2Fzb7qsz923zl5m5w457ya.png" alt="Imagem de erro ao subir a aplicação com o sem subir o serviço do docker" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observabilidade&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para mim a melhor parte, como Dev algumas vezes já tive que ficar acessando diferentes máquinas para analisar os logs da aplicação para entender um determinado comportamento da aplicação.&lt;/p&gt;

&lt;p&gt;E ter uma ferramenta como o Net Aspire onde tu consegue acompanhar desempenho, registrar logs e rastrear execuções tudo em tempo real é incrível, isso vira o jogo ao nosso favor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs estruturados&lt;/strong&gt;&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%2Fhb867d2zlc7qz0kjqkao.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%2Fhb867d2zlc7qz0kjqkao.png" alt="Imagem dos logs estruturados" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rastreamento da API&lt;/strong&gt;&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%2Fvhw3706iqv34nuzmxi2u.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%2Fvhw3706iqv34nuzmxi2u.png" alt="Imagem do rastreamento da API" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs do console&lt;/strong&gt;&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%2F1b90pgtcoibnbjzztur6.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%2F1b90pgtcoibnbjzztur6.png" alt="Imagem logs do console" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tooling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bom, acho que se você chegou até aqui já tem uma noção da quantidade de ferramentas que nós Dev's teremos para utilizar ao nosso favor.&lt;/p&gt;

&lt;p&gt;Bom e sem falar que estamos apenas no começo do Aspire muito ainda esta por vir, não vejo a hora de brincar de verdade. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tá querendo bater um papo sobre Tech e não sabe como me achar?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/CristianLopes/TodoAspireApp"&gt;Github &amp;gt;&amp;gt; Cristian Lopes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/cristian-lopes-3110029a/"&gt;LinkedIn &amp;gt;&amp;gt; Cristian Lopes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ou da um pulo no Sul do nosso Brasilzão e bora assar uma carne.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refêrencias&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview"&gt;https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=jwDC_UQ8H70"&gt;https://www.youtube.com/watch?v=jwDC_UQ8H70&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>docker</category>
      <category>blazor</category>
      <category>cloudnative</category>
    </item>
  </channel>
</rss>
