<?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/tr/tags/deployment/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>tr</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/tr/tags/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>Yerel MAF Ajansınız Artık Üretimde Bir Yuva Buldu</title><link>https://thedotnetblog.com/tr/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/tr/news/emiliano-montesdeoca/maf-agent-local-to-production-foundry-hosted-agents/</guid><description>Foundry Hosted Agents, Microsoft Agent Framework ajanınıza kimlik, ölçekleme, oturum kalıcılığı ve ekstra kurulum gerektirmeyen gözlemlenebilirlik sağlar. Pratikte nasıl göründüğünü inceleyelim.</description><content:encoded>&lt;p&gt;Bir ajanı yerel olarak çalıştırmak eğlenceli kısımdır. Zor kısım sonrasında gelen her şeydir: aklını kaybetmeden deploy etmek, oturumları yönetmek, kimlik oluşturmak, gözlemlenebilirliği bağlamak. Genellikle bu çok sayıda özel altyapı gerektirmek anlamına gelir.&lt;/p&gt;
&lt;p&gt;Foundry Hosted Agents, Microsoft Agent Framework (MAF) kullanıcıları için bu altyapının büyük bölümünü ortadan kaldırdı.&lt;/p&gt;
&lt;h2 id="foundry-hosted-agents-gerçekte-ne-yapar"&gt;Foundry Hosted Agents Gerçekte Ne Yapar&lt;/h2&gt;
&lt;p&gt;Bir MAF ajanını Foundry Hosted Agents&amp;rsquo;a deploy ettiğinizde, platform normalde kendiniz oluşturmanız gereken şaşırtıcı derecede uzun bir liste işlemi üstlenir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sıfıra ölçekleme&lt;/strong&gt; — ajanınız boşta iken hiçbir şey ücretlendirmez ve otomatik olarak yeniden başlar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oturum başına VM-izole sandbox&amp;rsquo;lar&lt;/strong&gt; — her kullanıcı oturumu, ölçek küçültme olaylarını atlatan dosya sistemi kalıcılığı olan kendi sandbox&amp;rsquo;ını alır&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yerleşik Entra ID&lt;/strong&gt; — her ajan, imaja gömülü sırlar olmaksızın Foundry modellerini, Toolbox&amp;rsquo;ı ve Azure hizmetlerini çağırabilmek için kendi kimliğini alır&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sürümlü deployment&amp;rsquo;lar&lt;/strong&gt; — her deployment, blue/green ve canary rollout desteği olan değiştirilemez bir snapshot&amp;rsquo;tır&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sıfır yapılandırmalı gözlemlenebilirlik&lt;/strong&gt; — &lt;code&gt;APPLICATIONINSIGHTS_CONNECTION_STRING&lt;/code&gt; çalışma zamanında enjekte edilir, böylece MAF&amp;rsquo;ın OpenTelemetry izleri App Insights&amp;rsquo;a otomatik olarak akar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sonuncusu gerçekten güzel. Ekstra kablo bağlantısı yok, ekstra yapılandırma yok. İzler sadece görünür.&lt;/p&gt;
&lt;h2 id="kod-farkı-minimumdur"&gt;Kod Farkı Minimumdur&lt;/h2&gt;
&lt;p&gt;Bu entegrasyonda en çok takdir ettiğim budur. Ajanınızı yeniden yazmanıza gerek yok. Sadece sarmanız yeterli:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;.NET&amp;rsquo;te:&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;Python&amp;rsquo;da:&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;Hepsi bu kadar. Yerel olarak test ettiğiniz mantığın aynısı üretimde çalışır. Platform bunu oturum yönetimi, kimlik ve ölçekleme altyapısıyla sarar.&lt;/p&gt;
&lt;h2 id="iki-protokol-bir-ajan"&gt;İki Protokol, Bir Ajan&lt;/h2&gt;
&lt;p&gt;Hosted Agents iki endpoint stili destekler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Responses&lt;/strong&gt; (&lt;code&gt;/responses&lt;/code&gt;) — OpenAI uyumlu, konuşma geçmişini ve akışı yönetir. Sohbet biçimli ajanlar için iyi varsayılan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Invocations&lt;/strong&gt; (&lt;code&gt;/invocations&lt;/code&gt;) — istek/yanıt şemasını kendiniz tanımlarsınız. Konuşma dışı iş akışları için uygundur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Konuşmaya benzeyen bir şey oluşturuyorsanız Responses ile başlayın. Yapılandırılmış girdi alan ve yapılandırılmış çıktı döndüren API biçimli bir ajan oluşturuyorsanız Invocations size esneklik sağlar.&lt;/p&gt;
&lt;h2 id="azd-ile-deployment-akışı"&gt;&lt;code&gt;azd&lt;/code&gt; ile Deployment Akışı&lt;/h2&gt;
&lt;p&gt;Bir MAF ajanıyla &lt;code&gt;azd up&lt;/code&gt; çalıştırdığınızda:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;İsteğe bağlı olarak Foundry projesi oluşturur ve model deploy eder&lt;/li&gt;
&lt;li&gt;Kodunuzu paketler ve Azure Container Registry&amp;rsquo;ye imaj iter&lt;/li&gt;
&lt;li&gt;ACR imajından işlem kapasitesi sağlar&lt;/li&gt;
&lt;li&gt;Ajana özel bir Entra ID atar&lt;/li&gt;
&lt;li&gt;Stabil bir endpoint açar (&lt;code&gt;https://{project_endpoint}/agents/{agent_name}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;O noktadan itibaren geri kalan her şeyi yönetir&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Oturumlar 30 güne kadar devam eder. Boşta işlem kapasitesi 15 dakika sonra kaldırılır ve bir sonraki istekte şeffaf şekilde geri yüklenir. Ajanın bakış açısından hiçbir şey değişmemiştir.&lt;/p&gt;
&lt;h2 id="sonuç"&gt;Sonuç&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;Yerel olarak çalışan&amp;rdquo; ile &amp;ldquo;üretimde çalışan&amp;rdquo; arasındaki mesafe, AI ajanları için tarihsel olarak uzun ve acı verici olmuştur. Foundry Hosted Agents + MAF bu boşluğu önemli ölçüde kapatır. Agent Framework ile oluşturulmuş yerel bir ajanınız varsa bugün denemek değer.&lt;/p&gt;
&lt;p&gt;Ekip GA&amp;rsquo;nın yakında geleceğini söylüyor — bu şu anda önizlemede. Başlamak için &lt;a href="https://learn.microsoft.com/en-us/agent-framework/hosting/foundry-hosted-agent"&gt;MAF Hosted Agent entegrasyon belgelerine&lt;/a&gt; ve &lt;a href="https://github.com/microsoft/agent-framework/tree/main/dotnet/samples/04-hosting/FoundryHostedAgents"&gt;.NET örneklerine&lt;/a&gt; bakın.&lt;/p&gt;
&lt;p&gt;Orijinal makale: &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>