<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Deployment | The .NET Blog</title><link>https://thedotnetblog.com/ca/tags/deployment/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ca</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Sat, 30 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ca/tags/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>El Vostre Agent MAF Local Acaba de Trobar una Llar en Producció</title><link>https://thedotnetblog.com/ca/news/emiliano-montesdeoca/maf-agent-local-to-production-foundry-hosted-agents/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ca/news/emiliano-montesdeoca/maf-agent-local-to-production-foundry-hosted-agents/</guid><description>Foundry Hosted Agents dóna al vostre agent Microsoft Agent Framework identitat, escalat, persistència de sessió i observabilitat sense configuració addicional. Aquí és com es veu a la pràctica.</description><content:encoded>&lt;p&gt;Aconseguir que un agent funcioni localment és la part divertida. La part complicada és tot el que ve després: desplegar-lo sense perdre el cap, gestionar sessions, configurar la identitat, connectar la observabilitat. Normalment això significa molta infraestructura personalitzada.&lt;/p&gt;
&lt;p&gt;Foundry Hosted Agents ha eliminat la major part d&amp;rsquo;aquesta infraestructura per als usuaris de Microsoft Agent Framework (MAF).&lt;/p&gt;
&lt;h2 id="què-fa-realment-foundry-hosted-agents"&gt;Què Fa Realment Foundry Hosted Agents&lt;/h2&gt;
&lt;p&gt;Quan desplegueu un agent MAF a Foundry Hosted Agents, la plataforma gestiona una llista sorprenentment llarga de coses que altrament hauríeu de construir vosaltres mateixos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Escalar a zero&lt;/strong&gt; — el vostre agent no costa res quan és inactiu i torna a arrencar automàticament&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandboxes aïllats per VM per sessió&lt;/strong&gt; — cada sessió d&amp;rsquo;usuari obté el seu propi sandbox amb persistència del sistema de fitxers que sobreviu als esdeveniments de reducció d&amp;rsquo;escala&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entra ID integrat&lt;/strong&gt; — cada agent obté la seva pròpia identitat per cridar models Foundry, Toolbox i serveis Azure sense secrets codificats a la imatge&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desplegaments versionats&lt;/strong&gt; — cada desplegament és un snapshot immutable, amb suport de desplegament blue/green i canary&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observabilitat sense configuració&lt;/strong&gt; — &lt;code&gt;APPLICATIONINSIGHTS_CONNECTION_STRING&lt;/code&gt; s&amp;rsquo;injecta en temps d&amp;rsquo;execució perquè les traces OpenTelemetry de MAF flueixin automàticament a App Insights&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;rsquo;últim és genuïnament pràctic. Sense connexió addicional, sense configuració extra. Les traces simplement apareixen.&lt;/p&gt;
&lt;h2 id="la-diferència-en-el-codi-és-mínima"&gt;La Diferència en el Codi És Mínima&lt;/h2&gt;
&lt;p&gt;Això és el que més aprecio d&amp;rsquo;aquesta integració. No reescriviu el vostre agent. Simplement l&amp;rsquo;emboliqueu:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;En .NET:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Agents.AI.Foundry.Hosting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&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;WebApplication&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddFoundryResponses&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;app&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;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MapFoundryResponses&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;En Python:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ResponsesHostServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Això és tot. La mateixa lògica que vau provar localment és la que s&amp;rsquo;executa en producció. La plataforma l&amp;rsquo;embolica amb la infraestructura de gestió de sessions, identitat i escalat.&lt;/p&gt;
&lt;h2 id="dos-protocols-un-agent"&gt;Dos Protocols, Un Agent&lt;/h2&gt;
&lt;p&gt;Els Hosted Agents suporten dos estils d&amp;rsquo;endpoint:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Responses&lt;/strong&gt; (&lt;code&gt;/responses&lt;/code&gt;) — compatible amb OpenAI, gestiona l&amp;rsquo;historial de conversa i l&amp;rsquo;streaming. Bon valor predeterminat per a agents amb forma de xat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invocations&lt;/strong&gt; (&lt;code&gt;/invocations&lt;/code&gt;) — vosaltres definiu l&amp;rsquo;esquema de sol·licitud/resposta. Bo per a fluxos de treball no conversacionals.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si esteu construint quelcom que sembla una conversa, comenceu amb Responses. Si esteu construint un agent amb forma d&amp;rsquo;API que pren entrada estructurada i retorna sortida estructurada, Invocations us dóna la flexibilitat.&lt;/p&gt;
&lt;h2 id="el-flux-de-desplegament-amb-azd"&gt;El Flux de Desplegament amb &lt;code&gt;azd&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Quan executeu &lt;code&gt;azd up&lt;/code&gt; amb un agent MAF:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Opcionalment crea un projecte Foundry i desplega un model&lt;/li&gt;
&lt;li&gt;Empaqueta el vostre codi i envia una imatge a Azure Container Registry&lt;/li&gt;
&lt;li&gt;Aprovisiona còmput des de la imatge ACR&lt;/li&gt;
&lt;li&gt;Assigna un Entra ID dedicat a l&amp;rsquo;agent&lt;/li&gt;
&lt;li&gt;Exposa un endpoint estable (&lt;code&gt;https://{project_endpoint}/agents/{agent_name}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Gestiona tot el resta a partir d&amp;rsquo;aquell punt&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Les sessions persisteixen fins a 30 dies. El còmput inactiu es desaprovisiona després de 15 minuts i es restaura de manera transparent a la propera sol·licitud. Des de la perspectiva de l&amp;rsquo;agent, res no ha canviat.&lt;/p&gt;
&lt;h2 id="conclusió"&gt;Conclusió&lt;/h2&gt;
&lt;p&gt;La distància entre &amp;ldquo;funciona localment&amp;rdquo; i &amp;ldquo;s&amp;rsquo;executa en producció&amp;rdquo; ha estat històricament llarga i dolorosa per als agents d&amp;rsquo;IA. Foundry Hosted Agents + MAF tanca significativament aquesta bretxa. Si ja teniu un agent local construït amb Agent Framework, val la pena provar-ho avui.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;equip diu que GA arribarà aviat — actualment està en preview. Consulteu els &lt;a href="https://learn.microsoft.com/en-us/agent-framework/hosting/foundry-hosted-agent"&gt;docs d&amp;rsquo;integració MAF Hosted Agent&lt;/a&gt; i els &lt;a href="https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/04-hosting/FoundryHostedAgents"&gt;exemples .NET&lt;/a&gt; per començar.&lt;/p&gt;
&lt;p&gt;Article original: &lt;a href="https://devblogs.microsoft.com/agent-framework/from-local-to-production-deploy-your-microsoft-agent-framework-agent-with-foundry-hosted-agents/"&gt;From Local to Production: Deploy Your Microsoft Agent Framework Agent with Foundry Hosted Agents&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>