<?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>Aspire | The .NET Blog</title><link>https://thedotnetblog.com/ru/tags/aspire/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ru</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 19 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ru/tags/aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>Частные Endpoints, VNets, NSG — Aspire Теперь Управляет Сетью</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-azure-enterprise-networking-private-endpoints/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-azure-enterprise-networking-private-endpoints/</guid><description>Новая поддержка корпоративных сетей Azure для Aspire позволяет моделировать VNet, частные endpoints, NAT-шлюзы, NSG и периметры сетевой безопасности прямо в AppHost — без дрейфа инфраструктуры.</description><content:encoded>&lt;p&gt;Я видел этот сценарий слишком много раз. Приложение готово. Демонстрация великолепна. Затем появляется чеклист безопасности: убрать хранилище из публичного интернета, запустить внутри VNet, предоставить исходящие IP для allowlist партнёра, доказать, что только правильные подсети общаются с правильными сервисами.&lt;/p&gt;
&lt;p&gt;В этот момент модель приложения и модель инфраструктуры начинают расходиться способами, которые болезненно поддерживать.&lt;/p&gt;
&lt;p&gt;Новая поддержка корпоративных сетей Azure для Aspire решает это напрямую. Вы описываете форму сети рядом с ресурсами, которые её используют, в вашем AppHost.&lt;/p&gt;
&lt;h2 id="строительные-блоки"&gt;Строительные блоки&lt;/h2&gt;
&lt;p&gt;Вот для чего предназначена каждая концепция сети Azure, в кратком изложении:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Функция&lt;/th&gt;
&lt;th&gt;Используйте когда&lt;/th&gt;
&lt;th&gt;Почему это важно&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Виртуальная сеть&lt;/td&gt;
&lt;td&gt;Вам нужно частное адресное пространство&lt;/td&gt;
&lt;td&gt;Сетевая граница для подсетей, частных endpoints и маршрутизации&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Подсеть&lt;/td&gt;
&lt;td&gt;Вам нужно разделить рабочие нагрузки внутри VNet&lt;/td&gt;
&lt;td&gt;Каждая часть системы получает свой собственный диапазон адресов и поверхность политики&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Делегированная подсеть&lt;/td&gt;
&lt;td&gt;Платформенный сервис (например, ACA) должен управлять подсетью&lt;/td&gt;
&lt;td&gt;Позволяет сервису безопасно размещать управляемую инфраструктуру в вашей VNet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NAT-шлюз&lt;/td&gt;
&lt;td&gt;Вам нужны предсказуемые исходящие публичные IP&lt;/td&gt;
&lt;td&gt;Стабильный адрес для allowlist и аудита&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Частный endpoint&lt;/td&gt;
&lt;td&gt;Вы хотите, чтобы ресурс PaaS был доступен приватно&lt;/td&gt;
&lt;td&gt;Помещает частный IP для этого сервиса внутри вашей VNet, убирает публичную экспозицию&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NSG&lt;/td&gt;
&lt;td&gt;Вам нужны правила трафика на уровне подсети&lt;/td&gt;
&lt;td&gt;Явное разрешение/запрет для входящего и исходящего трафика на подсеть&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="описание-в-apphost"&gt;Описание в AppHost&lt;/h2&gt;
&lt;p&gt;Ключевое изменение здесь состоит в том, что вы моделируете сеть &lt;em&gt;вместе&lt;/em&gt; с ресурсами, которые её используют, а не в отдельном файле Bicep, который со временем расходится с моделью приложения.&lt;/p&gt;
&lt;p&gt;Из AppHost вы можете:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Создавать VNet и подсети с &lt;code&gt;AddVirtualNetwork()&lt;/code&gt; и &lt;code&gt;AddSubnet()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Прикреплять NAT-шлюз к подсетям для стабильных исходящих IP&lt;/li&gt;
&lt;li&gt;Создавать частные endpoints для хранилища, Key Vault, SQL и других PaaS-сервисов&lt;/li&gt;
&lt;li&gt;Определять NSG с правилами входящей и исходящей безопасности&lt;/li&gt;
&lt;li&gt;Настраивать периметры сетевой безопасности для межресурсных политик&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В результате когда вы запускаете &lt;code&gt;azd up&lt;/code&gt;, инфраструктура соответствует тому, что модель приложения говорит, что ей нужно. Не то, что говорит вручную поддерживаемый шаблон.&lt;/p&gt;
&lt;h2 id="почему-это-важно-для-реальных-приложений"&gt;Почему Это Важно для Реальных Приложений&lt;/h2&gt;
&lt;p&gt;Несколько вещей, которые становятся значительно проще, как только сеть смоделирована в Aspire:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Частные endpoints для Key Vault и хранилища&lt;/strong&gt; — вы описываете &lt;code&gt;WithPrivateEndpoint()&lt;/code&gt; на этих ресурсах, и Aspire берёт на себя настройку DNS-зон и присоединение endpoints. Приложение никогда не меняется.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Стабильные исходящие IP&lt;/strong&gt; — добавьте NAT-шлюз к соответствующей подсети, и каждый исходящий запрос вашего приложения проходит через известный, стабильный IP. Партнёры могут добавить его в allowlist. Аудиторы могут его отследить.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Правила NSG из кода&lt;/strong&gt; — вместо того чтобы кликать по порталу или поддерживать фрагмент Bicep, ваши правила безопасности живут в AppHost рядом с ресурсами, которые они защищают.&lt;/p&gt;
&lt;p&gt;Это тот тип интеграции, который не делает демонстрации захватывающими, но делает производственные системы обслуживаемыми.&lt;/p&gt;
&lt;h2 id="итог"&gt;Итог&lt;/h2&gt;
&lt;p&gt;Сетевая безопасность, появляющаяся поздно в жизненном цикле проекта, — решённая проблема, если вы моделируете её вместе с приложением с самого начала. Поддержка корпоративных сетей Aspire делает это возможным без необходимости отдельного инфраструктурного трека.&lt;/p&gt;
&lt;p&gt;Полные подробности в оригинальном посте: &lt;a href="https://devblogs.microsoft.com/aspire/aspire-azure-enterprise-networking/"&gt;Securing Azure apps with Aspire enterprise networking&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.3: Поддержка Kubernetes, журналы браузера и навык Aspireify</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</guid><description>Через пять недель после 13.2 выходит Aspire 13.3 с 45 новыми функциями, включая первоклассное развёртывание AKS, навык онбординга с ИИ, захват журналов браузера и структурированные результаты команд.</description><content:encoded>&lt;p&gt;Пять недель — небольшой срок для релиза, но Aspire 13.3 так не ощущается. Ключевые элементы весомые: первоклассное развёртывание Kubernetes и AKS с Helm, навык онбординга с помощью агента под названием Aspireify, захват журналов браузера прямо в дашборде и структурированные результаты команд. Плюс 45 новых функций, 134 улучшения и 93 исправления ошибок.&lt;/p&gt;
&lt;p&gt;Давайте разберём основные моменты.&lt;/p&gt;
&lt;h2 id="aspireify-онбординг-с-помощью-агента"&gt;Aspireify: Онбординг с помощью агента&lt;/h2&gt;
&lt;p&gt;Добавление Aspire к существующему проекту звучит просто — добавьте AppHost, готово. На практике это требует немало исследований: какие порты важны, какие переменные окружения являются реальными зависимостями, какие сервисы Docker Compose должны отображаться на интеграции Aspire.&lt;/p&gt;
&lt;p&gt;Новый &lt;strong&gt;навык Aspireify&lt;/strong&gt; даёт вашему агенту кодирования управляемый рабочий процесс именно для этого. Когда &lt;code&gt;aspire init&lt;/code&gt; создаёт скелетный AppHost, навык Aspireify помогает агенту проверить репозиторий, понять как он уже работает и подключить AppHost так, чтобы он соответствовал приложению — а не наоборот.&lt;/p&gt;
&lt;p&gt;Позиция по умолчанию — &amp;ldquo;минимизировать изменения в вашем коде.&amp;rdquo; Если ваше приложение уже читает &lt;code&gt;DATABASE_URL&lt;/code&gt;, агент сопоставляет это с &lt;code&gt;WithEnvironment()&lt;/code&gt; вместо того, чтобы просить вас переписать конфигурацию. Если порт жёстко задан, навык указывает агенту, когда его сохранить.&lt;/p&gt;
&lt;p&gt;Это именно тот тип ИИ-инструментов, который реально экономит время, а не генерирует больше работы для проверки.&lt;/p&gt;
&lt;h2 id="первоклассное-развёртывание-kubernetes-и-aks"&gt;Первоклассное развёртывание Kubernetes и AKS&lt;/h2&gt;
&lt;p&gt;Это было в списке пожеланий уже давно. Aspire 13.3 поставляется с &lt;strong&gt;первоклассной поддержкой развёртывания Kubernetes и AKS с Helm&lt;/strong&gt;. Теперь вы можете указывать AKS в качестве целевого объекта развёртывания прямо из инструментов Aspire.&lt;/p&gt;
&lt;p&gt;Для команд, которые уже запускают производственные нагрузки на AKS, это закрывает значительный пробел. Ваша модель приложения Aspire теперь имеет чёткий путь от локальной разработки до Kubernetes без ручного создания Helm-чартов.&lt;/p&gt;
&lt;h2 id="журналы-браузера-в-дашборде"&gt;Журналы браузера в дашборде&lt;/h2&gt;
&lt;p&gt;Это одна из тех функций, которые кажутся небольшими, пока вы не отлаживаете проблему с фронтендом.&lt;/p&gt;
&lt;p&gt;Новый API &lt;code&gt;WithBrowserLogs()&lt;/code&gt; прикрепляет отслеживаемый ресурс браузера к любому ресурсу, поддерживающему endpoint&amp;rsquo;ы. Aspire запускает Chromium с использованием приватного CDP-пайпа и передаёт журналы консоли, сетевые запросы и ошибки прямо в поток журналов ресурса:&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="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;frontend&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;AddViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;../frontend&amp;#34;&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithBrowserLogs&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;TypeScript AppHost поддерживает то же самое:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;frontend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;../frontend&amp;#34;&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt;: &lt;span class="kt"&gt;3000&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withBrowserLogs&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;Ошибки консоли, неудавшиеся сетевые запросы, исключения на стороне клиента — всё видно в том же дашборде, где вы уже следите за трассировками и метриками. Больше не нужно переключаться на DevTools браузера для базовых вещей.&lt;/p&gt;
&lt;h2 id="структурированные-результаты-команд"&gt;Структурированные результаты команд&lt;/h2&gt;
&lt;p&gt;Команды ресурсов получили значительное обновление. До сих пор команды возвращали успех/неудачу. Теперь они возвращают структурированные результаты: текст, JSON или markdown, который проходит через модель, интерфейс дашборда, CLI и MCP-инструменты.&lt;/p&gt;
&lt;p&gt;Дашборд связывает всё это с новым центром уведомлений в заголовке. Результаты команд отображаются как уведомления с временными метками с рендерингом markdown и действием &amp;ldquo;Просмотреть ответ&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Это делает команды ресурсов по-настоящему компонуемыми. Интеграция теперь может предоставлять команду, которая возвращает значимый вывод — например, URL туннеля — вместо того, чтобы просто изменять состояние где-то.&lt;/p&gt;
&lt;h2 id="итог"&gt;Итог&lt;/h2&gt;
&lt;p&gt;Aspire 13.3 стоит обновления хотя бы ради поддержки Kubernetes. Журналы браузера и структурированные результаты команд — это тип улучшений качества жизни, которые быстро накапливаются в повседневном рабочем процессе разработки.&lt;/p&gt;
&lt;p&gt;Полные заметки о выпуске: &lt;a href="https://devblogs.microsoft.com/aspire/whats-new-aspire-13-3/"&gt;What&amp;rsquo;s New in Aspire 13.3&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2: Поддержка Bun, Улучшенные Контейнеры и Меньше Трений при Отладке</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 добавляет первоклассную поддержку Bun для Vite-приложений, исправляет надёжность Yarn и улучшает контейнеры, делая поведение при локальной разработке более предсказуемым.</description><content:encoded>&lt;p&gt;&lt;em&gt;Этот пост был автоматически переведён. Для оригинальной версии &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;нажмите здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Если вы строите .NET-бэкенды с JavaScript-фронтендами в Aspire, 13.2 — это обновление, которое тихо делает ваш день лучше.&lt;/p&gt;
&lt;h2 id="bun-теперь-первоклассный"&gt;Bun теперь первоклассный&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&amp;#34;&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withBun&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;Если ваша команда уже использует Bun, Aspire больше не заставляет плыть против течения.&lt;/p&gt;
&lt;h2 id="yarn-стал-надёжнее"&gt;Yarn стал надёжнее&lt;/h2&gt;
&lt;p&gt;Пользователи Yarn получают меньше загадочных сбоев с &lt;code&gt;withYarn()&lt;/code&gt; и &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="улучшения-контейнеров"&gt;Улучшения контейнеров&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ImagePullPolicy.Never&lt;/code&gt; для использования локального образа без обращения к registry. PostgreSQL 18+ с томами данных теперь работает корректно.&lt;/p&gt;
&lt;h2 id="улучшения-отладки"&gt;Улучшения отладки&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; на основных типах, лучшие сообщения об ошибках для &lt;code&gt;WaitFor&lt;/code&gt;, &lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; срабатывает в нужный момент.&lt;/p&gt;
&lt;p&gt;Оригинальный пост Дэвида Пайна: &lt;a href="https://devblogs.microsoft.com/aspire/aspire-bun-support-and-container-enhancements/"&gt;Aspire 13.2: Bun Support and Container Enhancements&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title>Global Azure Spain 2026</title><link>https://thedotnetblog.com/ru/events/global-azure-spain-2026/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://thedotnetblog.com/ru/events/global-azure-spain-2026/</guid><description>Крупнейшее Azure-мероприятие сообщества в Испании — полный день сессий по Azure, ИИ, данным, безопасности и облачной разработке с 38 спикерами на 3 треках.</description><content:encoded>&lt;p&gt;Global Azure Spain 2026 проходит &lt;strong&gt;18 апреля 2026 года&lt;/strong&gt; в &lt;strong&gt;Kinépolis Diversia&lt;/strong&gt; в Алькобендасе, Мадрид. Это крупнейшее сообщественное Azure-мероприятие в Испании, объединяющее 38 спикеров на 3 параллельных треках: ИИ-агенты, сети Azure, Cosmos DB, Fabric, IoT, безопасность и многое другое.&lt;/p&gt;
&lt;p&gt;Мероприятие проходит с &lt;strong&gt;08:30 до 18:30&lt;/strong&gt; и включает в себя кейноут, кофе-брейки, обед и заключительную сессию вопросов и ответов.&lt;/p&gt;
&lt;h2 id="основные-моменты-программы"&gt;Основные моменты программы&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domando Agentes de IA&lt;/strong&gt;: управление, инструменты и API с Azure AI Foundry и Azure API Management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construyendo agentes con LibreChat en Azure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How Can I Steal Your Data with Azure Private Endpoints&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop Building APIs. Forge Agents with Azure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agentic DevOps Meets IoT: Real-Time Systems with Fabric and GitHub Copilot&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El regreso de los tamagotchis!&lt;/strong&gt;: мультиагентные системы в действии&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foundry Control Plane como plataforma de Agentes global&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rompiendo el perímetro: Zero Trust aplicado en Azure&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="билеты"&gt;Билеты&lt;/h2&gt;
&lt;p&gt;Регистрация — символическое пожертвование. Вся стоимость билета направляется в &lt;strong&gt;Plan International&lt;/strong&gt; на поддержку прав детей и равенства по всему миру. Количество мест ограничено, поэтому бронируйте заранее.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.eventbrite.es/e/entradas-global-azure-spain-2026-en-madrid-1981594189564"&gt;Билеты на Eventbrite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://globalazure.es/"&gt;Сайт мероприятия&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="azure-tour-2026"&gt;Azure Tour 2026&lt;/h2&gt;
&lt;p&gt;Помимо Мадрида, Global Azure Tour 2026 также проходит в &lt;strong&gt;Сарагосе&lt;/strong&gt;, &lt;strong&gt;Тенерифе&lt;/strong&gt; и &lt;strong&gt;Севилье&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Хватит нянчить терминал: отсоединённый режим Aspire меняет рабочий процесс</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>Aspire 13.2 позволяет запускать AppHost в фоновом режиме и освобождать терминал. В сочетании с новыми командами CLI и поддержкой агентов это значит больше, чем кажется.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинал можно прочитать &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Каждый раз, когда вы запускаете Aspire AppHost, ваш терминал пропадает. Заблокирован. Занят, пока вы не нажмёте Ctrl+C. Нужно быстро выполнить команду? Откройте ещё одну вкладку. Хотите проверить логи? Ещё одна вкладка. Мелкое неудобство, которое быстро накапливается.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 решает эту проблему. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;описал все подробности&lt;/a&gt;, и, честно говоря, это одна из тех фич, которая сразу меняет подход к работе.&lt;/p&gt;
&lt;h2 id="отсоединённый-режим-одна-команда--терминал-свободен"&gt;Отсоединённый режим: одна команда — терминал свободен&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Это сокращение для &lt;code&gt;aspire run --detach&lt;/code&gt;. Ваш AppHost запускается в фоне, и терминал сразу возвращается к вам. Никаких лишних вкладок. Никаких мультиплексоров терминала. Просто ваш промпт, готовый к работе.&lt;/p&gt;
&lt;h2 id="управление-запущенными-процессами"&gt;Управление запущенными процессами&lt;/h2&gt;
&lt;p&gt;Суть в том, что запуск в фоне полезен только тогда, когда вы можете управлять тем, что работает. Aspire 13.2 поставляется с полным набором CLI-команд именно для этого:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# List all running AppHosts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire ps
&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="c1"&gt;# Inspect the state of a specific AppHost&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire describe
&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="c1"&gt;# Stream logs from a running AppHost&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire logs
&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="c1"&gt;# Stop a specific AppHost&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Это превращает Aspire CLI в полноценный менеджер процессов. Вы можете запускать несколько AppHost, проверять их статус, отслеживать логи и останавливать их — всё из одной сессии терминала.&lt;/p&gt;
&lt;h2 id="сочетание-с-изолированным-режимом"&gt;Сочетание с изолированным режимом&lt;/h2&gt;
&lt;p&gt;Отсоединённый режим естественно сочетается с изолированным. Хотите запустить два экземпляра одного проекта в фоне без конфликтов портов?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Каждый получает случайные порты, отдельные секреты и собственный жизненный цикл. Используйте &lt;code&gt;aspire ps&lt;/code&gt;, чтобы увидеть оба, &lt;code&gt;aspire stop&lt;/code&gt;, чтобы остановить ненужный.&lt;/p&gt;
&lt;h2 id="почему-это-важно-для-агентов-кода"&gt;Почему это важно для агентов кода&lt;/h2&gt;
&lt;p&gt;Вот тут становится по-настоящему интересно. Агент кода, работающий в вашем терминале, теперь может:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Запустить приложение с помощью &lt;code&gt;aspire start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Запросить его состояние через &lt;code&gt;aspire describe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Проверить логи через &lt;code&gt;aspire logs&lt;/code&gt; для диагностики проблем&lt;/li&gt;
&lt;li&gt;Остановить его командой &lt;code&gt;aspire stop&lt;/code&gt; по завершении&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Всё это без потери сессии терминала. До появления отсоединённого режима агент, запустивший ваш AppHost, блокировал сам себя в собственном терминале. Теперь он может запускать, наблюдать, итерировать и очищать — именно так, как должен работать автономный агент.&lt;/p&gt;
&lt;p&gt;Команда Aspire серьёзно вложилась в это. Запуск &lt;code&gt;aspire agent init&lt;/code&gt; настраивает файл навыков Aspire, который обучает агентов этим командам. Таким образом, инструменты вроде агента кода Copilot могут управлять вашими рабочими нагрузками Aspire из коробки.&lt;/p&gt;
&lt;h2 id="подводя-итог"&gt;Подводя итог&lt;/h2&gt;
&lt;p&gt;Отсоединённый режим — это улучшение рабочего процесса, замаскированное под простой флаг. Вы перестаёте переключаться между терминалами, агенты перестают блокировать сами себя, а новые CLI-команды дают реальную видимость того, что запущено. Это практично, это чисто, и это делает ежедневный цикл разработки заметно более плавным.&lt;/p&gt;
&lt;p&gt;Прочитайте &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;полный пост&lt;/a&gt; для всех подробностей и установите Aspire 13.2 командой &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 хочет стать лучшим другом вашего ИИ-агента</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 делает ставку на агентную разработку — структурированный вывод CLI, изолированные запуски, самовосстанавливающиеся среды и полные данные OpenTelemetry, чтобы ваши ИИ-агенты могли по-настоящему строить, запускать и наблюдать за вашими приложениями.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинал можно прочитать &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Знаете тот момент, когда ваш ИИ-агент пишет отличный код, вы воодушевляетесь, а потом всё разваливается, когда он пытается это &lt;em&gt;запустить&lt;/em&gt;? Конфликты портов, процессы-призраки, неправильные переменные окружения — внезапно ваш агент сжигает токены на устранение проблем при запуске вместо создания функциональности.&lt;/p&gt;
&lt;p&gt;Команда Aspire только что опубликовала &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;очень продуманный пост&lt;/a&gt; именно об этой проблеме, и их ответ убедителен: Aspire 13.2 спроектирован не только для людей, но и для ИИ-агентов.&lt;/p&gt;
&lt;h2 id="проблема-реальна"&gt;Проблема реальна&lt;/h2&gt;
&lt;p&gt;ИИ-агенты невероятны в написании кода. Но доставка работающего full-stack приложения включает куда больше, чем генерация файлов. Нужно запустить сервисы в правильном порядке, управлять портами, установить переменные окружения, подключить базы данных и получить обратную связь, когда что-то ломается. Сейчас большинство агентов справляется со всем этим методом проб и ошибок — выполняя команды, читая вывод ошибок, пробуя снова.&lt;/p&gt;
&lt;p&gt;Мы нагружаем их Markdown-инструкциями, кастомными навыками и промптами, чтобы направить, но они непредсказуемы, не компилируются и стоят токенов даже для парсинга. Команда Aspire попала в точку с ключевым инсайтом: агентам нужны &lt;strong&gt;компиляторы и структурированные API&lt;/strong&gt;, а не больше Markdown.&lt;/p&gt;
&lt;h2 id="aspire-как-инфраструктура-для-агентов"&gt;Aspire как инфраструктура для агентов&lt;/h2&gt;
&lt;p&gt;Вот что Aspire 13.2 приносит для агентной разработки:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Весь ваш стек в типизированном коде.&lt;/strong&gt; AppHost определяет полную топологию — API, фронтенд, базу данных, кэш — в компилируемом TypeScript или C#:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;./.modules/aspire.js&amp;#39;&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;postgres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addPostgres&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addDatabase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;catalog&amp;#34;&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cache&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addRedis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cache&amp;#34;&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="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addNodeApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;src/index.ts&amp;#34;&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PORT&amp;#34;&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;postgres&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cache&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&amp;#34;&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;waitFor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&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;em&gt;скомпилировать для проверки&lt;/em&gt;. Компилятор сразу скажет, если что-то не так. Никаких догадок, никаких проб и ошибок с конфигами.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Одна команда, чтобы править ими всеми.&lt;/strong&gt; Вместо того чтобы агенты жонглировали &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; и скриптами запуска баз данных, всё сводится к &lt;code&gt;aspire start&lt;/code&gt;. Все ресурсы запускаются в правильном порядке, на правильных портах, с правильной конфигурацией. Долгоживущие процессы тоже не вешают агента — Aspire управляет ими.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Изолированный режим для параллельных агентов.&lt;/strong&gt; С &lt;code&gt;--isolated&lt;/code&gt; каждый запуск Aspire получает собственные случайные порты и отдельные пользовательские секреты. Несколько агентов работают в git worktrees? Они не столкнутся. Это огромное преимущество для инструментов вроде фоновых агентов VS Code, которые создают параллельные среды.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Глаза агента через телеметрию.&lt;/strong&gt; Вот где становится действительно мощно. Aspire CLI предоставляет полные данные OpenTelemetry во время разработки — трейсы, метрики, структурированные логи. Ваш агент не просто читает вывод консоли и надеется на лучшее. Он может отследить неудавшийся запрос через сервисы, профилировать медленные эндпоинты и точно определить, где что ломается. Это наблюдаемость продакшен-уровня в цикле разработки.&lt;/p&gt;
&lt;h2 id="аналогия-с-бамперами-на-боулинге"&gt;Аналогия с бамперами на боулинге&lt;/h2&gt;
&lt;p&gt;Команда Aspire использует отличную аналогию: думайте об Aspire как о бамперах на дорожке боулинга для ИИ-агентов. Если агент несовершенен (а он таким и будет), бамперы не дают ему закатывать шар в жёлоб. Определение стека предотвращает неправильную конфигурацию, компилятор ловит ошибки, CLI управляет процессами, а телеметрия обеспечивает обратную связь.&lt;/p&gt;
&lt;p&gt;Комбинируйте это с чем-то вроде Playwright CLI, и ваш агент может реально &lt;em&gt;использовать&lt;/em&gt; ваше приложение — кликать по флоу, проверять DOM, видеть поломки в телеметрии, исправлять код, перезапускать и тестировать снова. Построить, запустить, наблюдать, исправить. Это тот автономный цикл разработки, к которому мы стремились.&lt;/p&gt;
&lt;h2 id="начало-работы"&gt;Начало работы&lt;/h2&gt;
&lt;p&gt;Новичок в Aspire? Установите CLI с &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; и следуйте &lt;a href="https://aspire.dev/get-started/first-app"&gt;руководству по началу работы&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Уже используете Aspire? Выполните &lt;code&gt;aspire update --self&lt;/code&gt; для получения 13.2, затем наведите ваш любимый кодирующий агент на репозиторий. Вы можете удивиться, насколько дальше он продвинется с ограничителями Aspire.&lt;/p&gt;
&lt;h2 id="подведём-итоги"&gt;Подведём итоги&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 — это уже не просто фреймворк для распределённых приложений — он становится необходимой инфраструктурой для агентов. Структурированные определения стека, запуск одной командой, изолированные параллельные запуски и телеметрия в реальном времени дают ИИ-агентам именно то, что нужно для перехода от написания кода к поставке приложений.&lt;/p&gt;
&lt;p&gt;Читайте &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;полный пост&lt;/a&gt; от команды Aspire со всеми деталями и демо-видео.&lt;/p&gt;</content:encoded></item><item><title>Изолированный режим Aspire устраняет кошмар конфликтов портов при параллельной разработке</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>Aspire 13.2 вводит режим --isolated: случайные порты, отдельные секреты и ноль коллизий при запуске нескольких экземпляров одного AppHost. Идеально для ИИ-агентов, worktrees и параллельных рабочих процессов.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинал можно прочитать &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Если вы когда-нибудь пытались запустить два экземпляра одного проекта одновременно, вы знаете эту боль. Порт 8080 уже используется. Порт 17370 занят. Убить что-то, перезапустить, жонглировать переменными окружения — настоящий убийца продуктивности.&lt;/p&gt;
&lt;p&gt;Эта проблема не улучшается, а ухудшается. ИИ-агенты создают git worktrees для независимой работы. Фоновые агенты поднимают отдельные среды. Разработчики дважды клонируют один репозиторий для feature-веток. Каждый из этих сценариев упирается в одну и ту же стену: два экземпляра одного приложения борются за одни и те же порты.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 решает это одним флагом. James Newton-King из команды Aspire &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;описал все детали&lt;/a&gt;, и это одна из тех фич «почему у нас этого не было раньше».&lt;/p&gt;
&lt;h2 id="решение---isolated"&gt;Решение: &lt;code&gt;--isolated&lt;/code&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Вот и всё. Каждый запуск получает:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Случайные порты&lt;/strong&gt; — больше никаких коллизий между экземплярами&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Изолированные пользовательские секреты&lt;/strong&gt; — строки подключения и API-ключи остаются раздельными для каждого экземпляра&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Никакого ручного переназначения портов. Никакого жонглирования переменными окружения. Каждый запуск автоматически получает чистую среду без коллизий.&lt;/p&gt;
&lt;h2 id="реальные-сценарии-где-это-сияет"&gt;Реальные сценарии, где это сияет&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Множественные checkout.&lt;/strong&gt; У вас feature-ветка в одной директории и bugfix в другой:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Terminal 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-feature
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&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="c1"&gt;# Terminal 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-bugfix
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Оба работают без конфликтов. Дашборд показывает, что где запущено.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Фоновые агенты в VS Code.&lt;/strong&gt; Когда фоновый агент Copilot Chat создаёт git worktree для независимой работы с вашим кодом, ему может понадобиться запустить ваш Aspire AppHost. Без &lt;code&gt;--isolated&lt;/code&gt; это конфликт портов с основным worktree. С ним оба экземпляра просто работают.&lt;/p&gt;
&lt;p&gt;Навык Aspire, поставляемый с &lt;code&gt;aspire agent init&lt;/code&gt;, автоматически инструктирует агентов использовать &lt;code&gt;--isolated&lt;/code&gt; при работе в worktrees. Так что фоновый агент Copilot должен справляться с этим из коробки.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Интеграционные тесты параллельно с разработкой.&lt;/strong&gt; Нужно запускать тесты против работающего AppHost, продолжая разрабатывать фичи? Изолированный режим даёт каждому контексту собственные порты и конфигурацию.&lt;/p&gt;
&lt;h2 id="как-это-работает-под-капотом"&gt;Как это работает под капотом&lt;/h2&gt;
&lt;p&gt;Когда вы передаёте &lt;code&gt;--isolated&lt;/code&gt;, CLI генерирует уникальный ID экземпляра для запуска. Это управляет двумя поведениями:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Рандомизация портов&lt;/strong&gt; — вместо привязки к предсказуемым портам, определённым в конфигурации AppHost, изолированный режим выбирает случайные доступные порты для всего — дашборда, эндпоинтов сервисов, всего. Service discovery автоматически подстраивается, чтобы сервисы находили друг друга независимо от назначенных портов.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Изоляция секретов&lt;/strong&gt; — каждый изолированный запуск получает собственное хранилище пользовательских секретов, привязанное к ID экземпляра. Строки подключения и API-ключи одного запуска не утекают в другой.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ваш код не нуждается в изменениях. Service discovery Aspire разрешает эндпоинты во время выполнения, так что всё подключается правильно независимо от назначения портов.&lt;/p&gt;
&lt;h2 id="когда-использовать"&gt;Когда использовать&lt;/h2&gt;
&lt;p&gt;Используйте &lt;code&gt;--isolated&lt;/code&gt; при запуске нескольких экземпляров одного AppHost одновременно — будь то параллельная разработка, автоматизированные тесты, ИИ-агенты или git worktrees. Для разработки с единственным экземпляром, где вы предпочитаете предсказуемые порты, обычный &lt;code&gt;aspire run&lt;/code&gt; по-прежнему отлично работает.&lt;/p&gt;
&lt;h2 id="подведём-итоги"&gt;Подведём итоги&lt;/h2&gt;
&lt;p&gt;Изолированный режим — это маленькая фича, которая решает реальную и всё более распространённую проблему. По мере того как разработка с ИИ подталкивает нас к большему количеству параллельных рабочих процессов — множество агентов, множество worktrees, множество контекстов — возможность просто поднять ещё один экземпляр без борьбы за порты становится необходимой.&lt;/p&gt;
&lt;p&gt;Прочитайте &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;полный пост&lt;/a&gt; для всех технических деталей и попробуйте с &lt;code&gt;aspire update --self&lt;/code&gt; для получения 13.2.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 получает CLI для документации — и ваш ИИ-агент тоже может им пользоваться</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2 добавляет aspire docs — CLI для поиска, просмотра и чтения официальной документации, не покидая терминал. Он также работает как инструмент для ИИ-агентов. Вот почему это важно.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинальную версию можно найти &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Знаете тот момент, когда вы погружены в Aspire AppHost, подключаете интеграции, и вам нужно проверить, какие именно параметры ожидает интеграция Redis? Вы переключаетесь Alt-Tab на браузер, ищете на aspire.dev, вглядываетесь в документацию API, возвращаетесь в редактор. Контекст потерян. Поток прерван.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 только что &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;выпустил решение этой проблемы&lt;/a&gt;. CLI &lt;code&gt;aspire docs&lt;/code&gt; позволяет искать, просматривать и читать официальную документацию Aspire прямо из терминала. А поскольку за ним стоят переиспользуемые сервисы, ИИ-агенты и навыки могут использовать те же самые команды для поиска документации вместо того, чтобы галлюцинировать несуществующие API.&lt;/p&gt;
&lt;h2 id="проблема-которую-это-действительно-решает"&gt;Проблема, которую это действительно решает&lt;/h2&gt;
&lt;p&gt;David Pine точно подмечает в оригинальном посте: ИИ-агенты были &lt;em&gt;ужасны&lt;/em&gt; в помощи разработчикам при создании приложений на Aspire. Они рекомендовали &lt;code&gt;dotnet run&lt;/code&gt; вместо &lt;code&gt;aspire run&lt;/code&gt;, ссылались на learn.microsoft.com для документации, которая живёт на aspire.dev, предлагали устаревшие NuGet-пакеты, и — моё любимое — галлюцинировали API, которых не существует.&lt;/p&gt;
&lt;p&gt;Почему? Потому что Aspire был специфичен для .NET гораздо дольше, чем является полиглотом, а LLM работают на тренировочных данных, которые предшествуют последним возможностям. Когда вы даёте ИИ-агенту возможность реально искать актуальную документацию, он перестаёт угадывать и начинает быть полезным.&lt;/p&gt;
&lt;h2 id="три-команды-ноль-вкладок-браузера"&gt;Три команды, ноль вкладок браузера&lt;/h2&gt;
&lt;p&gt;CLI освежающе прост:&lt;/p&gt;
&lt;h3 id="показать-всю-документацию"&gt;Показать всю документацию&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Возвращает каждую страницу документации, доступную на aspire.dev. Нужен машиночитаемый вывод? Добавьте &lt;code&gt;--format Json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="поиск-по-теме"&gt;Поиск по теме&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ищет и по заголовкам, и по содержимому с взвешенной оценкой релевантности. Тот же поисковый движок, который используется внутренне в инструментах документации. Вы получаете ранжированные результаты с заголовками, слагами и оценками релевантности.&lt;/p&gt;
&lt;h3 id="чтение-полной-страницы-или-только-одного-раздела"&gt;Чтение полной страницы (или только одного раздела)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Выводит полную страницу в формате markdown в ваш терминал. Нужен только один раздел?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Add Redis resource&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Хирургическая точность. Никакого прокручивания 500 строк. Только нужная часть.&lt;/p&gt;
&lt;h2 id="аспект-ии-агентов"&gt;Аспект ИИ-агентов&lt;/h2&gt;
&lt;p&gt;Вот где становится интересно для нас, разработчиков, работающих с ИИ-инструментами. Те же команды &lt;code&gt;aspire docs&lt;/code&gt; работают как инструменты для ИИ-агентов — через навыки, MCP-серверы или простые CLI-обёртки.&lt;/p&gt;
&lt;p&gt;Вместо того чтобы ваш ИИ-ассистент придумывал API Aspire на основе устаревших тренировочных данных, он может вызвать &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt;, найти официальную документацию по интеграции, прочитать нужную страницу и дать вам документированный подход. Актуальная документация в реальном времени — а не то, что модель запомнила шесть месяцев назад.&lt;/p&gt;
&lt;p&gt;Архитектура за этим — намеренная. Команда Aspire создала переиспользуемые сервисы (&lt;code&gt;IDocsIndexService&lt;/code&gt;, &lt;code&gt;IDocsSearchService&lt;/code&gt;, &lt;code&gt;IDocsFetcher&lt;/code&gt;, &lt;code&gt;IDocsCache&lt;/code&gt;) вместо одноразовой интеграции. Это значит, что один и тот же поисковый движок работает для людей в терминале, ИИ-агентов в редакторе и автоматизации в CI-пайплайне.&lt;/p&gt;
&lt;h2 id="реальные-сценарии"&gt;Реальные сценарии&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Быстрые справки в терминале:&lt;/strong&gt; Вы на три файла в глубину и вам нужны параметры конфигурации Redis. Две команды, девяносто секунд, обратно к работе:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt; --limit &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Configuration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Разработка с помощью ИИ:&lt;/strong&gt; Ваш навык VS Code оборачивает команды CLI. Вы спрашиваете «Добавь базу данных PostgreSQL в мой AppHost», и агент сначала смотрит реальную документацию, а потом отвечает. Никаких галлюцинаций.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Валидация CI/CD:&lt;/strong&gt; Ваш пайплайн программно проверяет конфигурации AppHost по официальной документации. Вывод &lt;code&gt;--format Json&lt;/code&gt; чисто передаётся в &lt;code&gt;jq&lt;/code&gt; и другие инструменты.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Пользовательские базы знаний:&lt;/strong&gt; Создаёте свои ИИ-инструменты? Направляйте структурированный JSON-вывод напрямую в свою базу знаний:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;monitoring&amp;#34;&lt;/span&gt; --format Json &lt;span class="p"&gt;|&lt;/span&gt; jq &lt;span class="s1"&gt;&amp;#39;[.[] | {slug, title, summary}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Никакого веб-скрейпинга. Никаких API-ключей. Те же структурированные данные, которые используются внутренне инструментами документации.&lt;/p&gt;
&lt;h2 id="документация-всегда-актуальна"&gt;Документация всегда актуальна&lt;/h2&gt;
&lt;p&gt;Это то, что я ценю больше всего. CLI не скачивает снимок — он обращается к aspire.dev с кэшированием на основе ETag. В момент обновления документации ваш CLI и любой навык, построенный на его основе, отражает это. Никаких устаревших копий, никаких моментов «но в вики было написано&amp;hellip;».&lt;/p&gt;
&lt;h2 id="подводя-итог"&gt;Подводя итог&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; — это одна из тех маленьких функций, которая решает реальную проблему чисто и элегантно. Люди получают доступ к документации прямо в терминале. ИИ-агенты получают способ перестать угадывать и начать ссылаться на реальные документы. И всё это подкреплено одним и тем же источником истины.&lt;/p&gt;
&lt;p&gt;Если вы разрабатываете на .NET Aspire и ещё не попробовали CLI, запустите &lt;code&gt;aspire docs search &amp;quot;ваша-тема&amp;quot;&lt;/code&gt; и почувствуйте, как это работает. Затем подумайте о том, чтобы обернуть эти команды в свои ИИ-навыки или настройки автоматизации — ваши агенты скажут вам спасибо.&lt;/p&gt;
&lt;p&gt;Ознакомьтесь с &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;глубоким разбором David Pine&lt;/a&gt; о том, как создавались инструменты документации, и с &lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;официальной справкой CLI&lt;/a&gt; для всех деталей.&lt;/p&gt;</content:encoded></item><item><title>Дашборд Aspire 13.2 теперь с API телеметрии — и это меняет всё</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</guid><description>.NET Aspire 13.2 приносит умный экспорт телеметрии, программируемый API для трейсов и логов, а также улучшения визуализации GenAI. Вот почему это важно для вашего рабочего процесса отладки.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинальную версию можно найти &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Если вы создавали распределённые приложения на .NET Aspire, вы уже знаете, что дашборд — лучшая часть всего опыта. Все ваши трейсы, логи и метрики в одном месте — без внешнего Jaeger, без настройки Seq, без моментов «дай проверю другой терминал».&lt;/p&gt;
&lt;p&gt;Aspire 13.2 значительно всё улучшил. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-dashboard-improvements-export-and-telemetry/"&gt;объявил об обновлении&lt;/a&gt;, и честно? Функции экспорта телеметрии и API сами по себе стоят обновления.&lt;/p&gt;
&lt;h2 id="экспорт-телеметрии-по-человечески"&gt;Экспорт телеметрии по-человечески&lt;/h2&gt;
&lt;p&gt;Вот сценарий, который мы все пережили: вы отлаживаете распределённую проблему, наконец воспроизводите её после двадцати минут настройки, и теперь нужно показать команде, что произошло. Раньше? Скриншоты. Копирование ID трейсов. Обычный хаос.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 добавляет диалог &lt;strong&gt;Управление логами и телеметрией&lt;/strong&gt;, где можно:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Очистить всю телеметрию (полезно перед попыткой воспроизведения)&lt;/li&gt;
&lt;li&gt;Экспортировать выбранную телеметрию в ZIP-файл в стандартном формате OTLP/JSON&lt;/li&gt;
&lt;li&gt;Повторно импортировать этот ZIP в любой дашборд Aspire позже&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Последний пункт — это убийственная фича. Вы воспроизводите баг, экспортируете телеметрию, прикрепляете к рабочему элементу, и ваш коллега может импортировать её в свой дашборд, чтобы увидеть именно то, что видели вы. Больше никаких «можешь воспроизвести у себя?»&lt;/p&gt;
&lt;p&gt;Отдельные трейсы, спаны и логи также получили опцию «Export JSON» в контекстных меню. Нужно поделиться конкретным трейсом? Правый клик, копируете JSON, вставляете в описание PR. Готово.&lt;/p&gt;
&lt;h2 id="api-телеметрии--настоящий-прорыв"&gt;API телеметрии — настоящий прорыв&lt;/h2&gt;
&lt;p&gt;Вот чему я больше всего рад. Дашборд теперь предоставляет HTTP API по пути &lt;code&gt;/api/telemetry&lt;/code&gt; для программного запроса данных телеметрии. Доступные эндпоинты:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/resources&lt;/code&gt; — список ресурсов с телеметрией&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/spans&lt;/code&gt; — запрос спанов с фильтрами&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/logs&lt;/code&gt; — запрос логов с фильтрами&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces&lt;/code&gt; — список трейсов&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces/{traceId}&lt;/code&gt; — все спаны конкретного трейса&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Всё возвращается в формате OTLP JSON. Это питает новые CLI-команды &lt;code&gt;aspire agent mcp&lt;/code&gt; и &lt;code&gt;aspire otel&lt;/code&gt;, но реальное значение больше: теперь можно создавать инструменты, скрипты и интеграции с ИИ-агентами, которые напрямую запрашивают телеметрию вашего приложения.&lt;/p&gt;
&lt;p&gt;Представьте ИИ-агента для кодинга, который может видеть ваши реальные распределённые трейсы во время отладки. Это уже не гипотетически — именно это делает возможным этот API.&lt;/p&gt;
&lt;h2 id="телеметрия-genai-становится-практичной"&gt;Телеметрия GenAI становится практичной&lt;/h2&gt;
&lt;p&gt;Если вы создаёте приложения с ИИ на Semantic Kernel или Microsoft.Extensions.AI, вам понравится улучшенный визуализатор телеметрии GenAI. Aspire 13.2 добавляет:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Описания ИИ-инструментов отображаются как Markdown&lt;/li&gt;
&lt;li&gt;Специальная кнопка GenAI на странице трейсов для быстрого доступа&lt;/li&gt;
&lt;li&gt;Улучшенная обработка ошибок для обрезанного или нестандартного JSON GenAI&lt;/li&gt;
&lt;li&gt;Навигация с подсветкой по клику между определениями инструментов&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Пост упоминает, что VS Code Copilot chat, Copilot CLI и OpenCode поддерживают настройку &lt;code&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/code&gt;. Направьте их на дашборд Aspire, и вы буквально сможете наблюдать, как ваши ИИ-агенты думают в реальном времени через телеметрию. Такой опыт отладки вы больше нигде не найдёте.&lt;/p&gt;
&lt;h2 id="подведём-итоги"&gt;Подведём итоги&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 превращает дашборд из «приятного UI для отладки» в «программируемую платформу наблюдаемости». Рабочий процесс экспорта/импорта сам по себе экономит реальное время при распределённой отладке, а API телеметрии открывает дверь к диагностике с помощью ИИ.&lt;/p&gt;
&lt;p&gt;Если вы уже на Aspire — обновляйтесь. Если нет — это хороший повод попробовать &lt;a href="https://aspire.dev"&gt;aspire.dev&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>