<?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/it/tags/aspire/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>it</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/it/tags/aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>Endpoint Privati, VNet, NSG — Aspire Gestisce la Rete Ora</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-azure-enterprise-networking-private-endpoints/</guid><description>Il nuovo supporto per le reti aziendali Azure di Aspire consente di modellare VNet, endpoint privati, gateway NAT, NSG e perimetri di sicurezza di rete direttamente nell'AppHost, senza deriva dell'infrastruttura.</description><content:encoded>&lt;p&gt;Ho visto questo scenario troppe volte. L&amp;rsquo;app è pronta. La demo è fantastica. Poi arriva la checklist di sicurezza: porta lo storage fuori da internet pubblico, esegui all&amp;rsquo;interno di un VNet, fornisci IP in uscita per l&amp;rsquo;allowlist del partner, dimostra che solo le subnet giuste parlano con i servizi giusti.&lt;/p&gt;
&lt;p&gt;A quel punto il modello dell&amp;rsquo;applicazione e il modello dell&amp;rsquo;infrastruttura iniziano a divergere in modi che sono dolorosi da mantenere.&lt;/p&gt;
&lt;p&gt;Il nuovo supporto per le reti aziendali Azure di Aspire affronta questo direttamente. Descrivi la forma della rete accanto alle risorse che la usano, nel tuo AppHost.&lt;/p&gt;
&lt;h2 id="i-blocchi-di-costruzione"&gt;I Blocchi di Costruzione&lt;/h2&gt;
&lt;p&gt;Ecco a cosa serve ogni concetto di rete Azure, sintetizzato:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Funzionalità&lt;/th&gt;
&lt;th&gt;Usala quando&lt;/th&gt;
&lt;th&gt;Perché è importante&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rete virtuale&lt;/td&gt;
&lt;td&gt;Hai bisogno di uno spazio di indirizzi privato&lt;/td&gt;
&lt;td&gt;Il confine di rete per subnet, endpoint privati e routing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subnet&lt;/td&gt;
&lt;td&gt;Devi separare i carichi di lavoro all&amp;rsquo;interno del VNet&lt;/td&gt;
&lt;td&gt;Ogni parte del sistema ottiene il proprio intervallo di indirizzi e superficie di policy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subnet delegata&lt;/td&gt;
&lt;td&gt;Un servizio di piattaforma (come ACA) deve gestire una subnet&lt;/td&gt;
&lt;td&gt;Consente al servizio di posizionare infrastruttura gestita nel tuo VNet in modo sicuro&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gateway NAT&lt;/td&gt;
&lt;td&gt;Hai bisogno di IP pubblici in uscita prevedibili&lt;/td&gt;
&lt;td&gt;Indirizzo stabile per allowlist e auditing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint privato&lt;/td&gt;
&lt;td&gt;Vuoi una risorsa PaaS raggiungibile privatamente&lt;/td&gt;
&lt;td&gt;Inserisce un IP privato per quel servizio nel tuo VNet, rimuove l&amp;rsquo;esposizione pubblica&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NSG&lt;/td&gt;
&lt;td&gt;Hai bisogno di regole di traffico a livello di subnet&lt;/td&gt;
&lt;td&gt;Permetti/nega esplicito per il traffico in entrata e in uscita per subnet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="descrivendolo-nel-tuo-apphost"&gt;Descrivendolo nel tuo AppHost&lt;/h2&gt;
&lt;p&gt;Il cambiamento chiave qui è che stai modellando la rete &lt;em&gt;insieme&lt;/em&gt; alle risorse che la usano, non in un file Bicep separato che si allontana dal modello dell&amp;rsquo;applicazione nel tempo.&lt;/p&gt;
&lt;p&gt;Dall&amp;rsquo;AppHost puoi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creare VNet e subnet con &lt;code&gt;AddVirtualNetwork()&lt;/code&gt; e &lt;code&gt;AddSubnet()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Allegare un gateway NAT alle subnet per IP in uscita stabili&lt;/li&gt;
&lt;li&gt;Creare endpoint privati per storage, Key Vault, SQL e altri servizi PaaS&lt;/li&gt;
&lt;li&gt;Definire NSG con regole di sicurezza in entrata e in uscita&lt;/li&gt;
&lt;li&gt;Configurare Perimetri di Sicurezza di Rete per policy tra risorse&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il risultato è che quando esegui &lt;code&gt;azd up&lt;/code&gt;, l&amp;rsquo;infrastruttura corrisponde a ciò che il modello dell&amp;rsquo;applicazione dice di cui ha bisogno. Non quello che dice un template mantenuto manualmente.&lt;/p&gt;
&lt;h2 id="perché-questo-è-importante-per-le-applicazioni-reali"&gt;Perché Questo è Importante per le Applicazioni Reali&lt;/h2&gt;
&lt;p&gt;Alcune cose che diventano significativamente più facili una volta che la rete è modellata in Aspire:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Endpoint privati per Key Vault e storage&lt;/strong&gt; — descrivi &lt;code&gt;WithPrivateEndpoint()&lt;/code&gt; su quelle risorse, e Aspire gestisce la configurazione delle zone DNS e l&amp;rsquo;allegato degli endpoint. L&amp;rsquo;app non cambia mai.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IP in uscita coerenti&lt;/strong&gt; — aggiungi un gateway NAT alla subnet pertinente e ogni richiesta in uscita dalla tua app passa attraverso un IP noto e stabile. I partner possono aggiungerlo all&amp;rsquo;allowlist. I revisori possono tracciarlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Regole NSG dal codice&lt;/strong&gt; — invece di cliccare nel portale o mantenere un frammento Bicep, le tue regole di sicurezza vivono nell&amp;rsquo;AppHost accanto alle risorse che proteggono.&lt;/p&gt;
&lt;p&gt;Questo è il tipo di integrazione che non rende le demo eccitanti ma rende i sistemi di produzione manutenibili.&lt;/p&gt;
&lt;h2 id="conclusione"&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;La sicurezza di rete che appare tardi nel ciclo di vita del progetto è un problema risolto se la modelli insieme all&amp;rsquo;app fin dall&amp;rsquo;inizio. Il supporto per le reti aziendali di Aspire rende ciò possibile senza richiedere una traccia di infrastruttura separata.&lt;/p&gt;
&lt;p&gt;Dettagli completi nel post originale: &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: Supporto Kubernetes, Log del Browser e la Skill Aspireify</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-133-kubernetes-browser-logs-aspireify/</guid><description>Cinque settimane dopo il 13.2, Aspire 13.3 arriva con 45 nuove funzionalità tra cui il deployment AKS di prima classe, una skill di onboarding assistita dall'IA, la cattura dei log del browser e i risultati dei comandi strutturati.</description><content:encoded>&lt;p&gt;Cinque settimane non sono molto per un rilascio, ma Aspire 13.3 non sembra tale. Gli elementi principali sono significativi: deployment di Kubernetes e AKS di prima classe con Helm, una skill di onboarding assistita da agente chiamata Aspireify, cattura dei log del browser direttamente nel dashboard e risultati dei comandi strutturati. In più, 45 nuove funzionalità, 134 miglioramenti e 93 correzioni di bug.&lt;/p&gt;
&lt;p&gt;Passiamo ai punti salienti.&lt;/p&gt;
&lt;h2 id="aspireify-onboarding-assistito-da-agente"&gt;Aspireify: Onboarding Assistito da Agente&lt;/h2&gt;
&lt;p&gt;Aggiungere Aspire a un progetto esistente sembra semplice — inserisci un AppHost, fatto. In pratica comporta molta archeologia: quali porte contano, quali variabili d&amp;rsquo;ambiente sono dipendenze reali, quali servizi Docker Compose devono corrispondere alle integrazioni Aspire.&lt;/p&gt;
&lt;p&gt;La nuova &lt;strong&gt;skill Aspireify&lt;/strong&gt; fornisce al tuo agente di codice un flusso di lavoro guidato esattamente per questo. Quando &lt;code&gt;aspire init&lt;/code&gt; crea un AppHost scheletro, la skill Aspireify aiuta l&amp;rsquo;agente a ispezionare il repository, capire come funziona già e collegare l&amp;rsquo;AppHost per adattarsi all&amp;rsquo;app — non il contrario.&lt;/p&gt;
&lt;p&gt;La postura predefinita è &amp;ldquo;minimizzare le modifiche al tuo codice.&amp;rdquo; Se la tua app legge già &lt;code&gt;DATABASE_URL&lt;/code&gt;, l&amp;rsquo;agente lo mappa con &lt;code&gt;WithEnvironment()&lt;/code&gt; invece di chiederti di riscrivere la tua configurazione. Se una porta è codificata in modo fisso, la skill indica all&amp;rsquo;agente quando preservarla.&lt;/p&gt;
&lt;p&gt;Questo è il tipo di tooling IA che fa davvero risparmiare tempo invece di generare più lavoro da revisionare.&lt;/p&gt;
&lt;h2 id="deployment-di-kubernetes-e-aks-di-prima-classe"&gt;Deployment di Kubernetes e AKS di Prima Classe&lt;/h2&gt;
&lt;p&gt;Questo era nella lista dei desideri da un po&amp;rsquo;. Aspire 13.3 include il &lt;strong&gt;supporto di deployment di Kubernetes e AKS di prima classe con Helm&lt;/strong&gt;. Ora puoi puntare ad AKS come destinazione di deployment direttamente dagli strumenti Aspire.&lt;/p&gt;
&lt;p&gt;Per i team che già eseguono carichi di lavoro di produzione su AKS, questo colma una lacuna significativa. Il tuo modello di applicazione Aspire ora ha un percorso pulito dallo sviluppo locale a Kubernetes senza la necessità di scrivere manualmente chart Helm.&lt;/p&gt;
&lt;h2 id="log-del-browser-nel-dashboard"&gt;Log del Browser nel Dashboard&lt;/h2&gt;
&lt;p&gt;Questa è una di quelle funzionalità che sembrano piccole finché non stai facendo debug di un problema frontend.&lt;/p&gt;
&lt;p&gt;La nuova API &lt;code&gt;WithBrowserLogs()&lt;/code&gt; collega una risorsa browser tracciata a qualsiasi risorsa capace di endpoint. Aspire lancia Chromium usando un pipe CDP privato e trasmette log della console, richieste di rete ed errori direttamente nel flusso di log della risorsa:&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;L&amp;rsquo;AppHost TypeScript supporta lo stesso:&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;Errori della console, richieste di rete fallite, eccezioni lato client — tutto visibile nello stesso dashboard dove stai già guardando trace e metriche. Nessun cambio di tab verso le DevTools del browser per le cose di base.&lt;/p&gt;
&lt;h2 id="risultati-dei-comandi-strutturati"&gt;Risultati dei Comandi Strutturati&lt;/h2&gt;
&lt;p&gt;I comandi delle risorse hanno ricevuto un aggiornamento significativo. Fino ad ora, i comandi restituivano successo/fallimento. Ora restituiscono risultati strutturati: testo, JSON o markdown che fluisce attraverso il modello, l&amp;rsquo;interfaccia del dashboard, la CLI e gli strumenti MCP.&lt;/p&gt;
&lt;p&gt;Il dashboard lega tutto questo con un nuovo centro notifiche nell&amp;rsquo;intestazione. I risultati dei comandi appaiono come notifiche con timestamp con rendering markdown e un&amp;rsquo;azione &amp;ldquo;Visualizza risposta&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Questo rende i comandi delle risorse veramente componibili. Un&amp;rsquo;integrazione ora può esporre un comando che restituisce un output significativo — come un URL di tunnel — invece di cambiare semplicemente lo stato da qualche parte.&lt;/p&gt;
&lt;h2 id="conclusione"&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;Aspire 13.3 vale l&amp;rsquo;aggiornamento anche solo per il supporto Kubernetes. I log del browser e i risultati dei comandi strutturati sembrano il tipo di miglioramenti della qualità della vita che si accumulano rapidamente in un flusso di lavoro di sviluppo quotidiano.&lt;/p&gt;
&lt;p&gt;Note di rilascio complete: &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: Supporto Bun, Contenitori Migliori e Meno Attrito nel Debug</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-132-bun-container-enhancements/</guid><description>Aspire 13.2 aggiunge supporto Bun di prima classe per le app Vite, corregge l'affidabilità di Yarn e porta miglioramenti ai container che rendono il comportamento locale più prevedibile.</description><content:encoded>&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/posts/emiliano-montesdeoca/aspire-132-bun-container-enhancements/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Se stai costruendo backend .NET con frontend JavaScript in Aspire, la 13.2 è l&amp;rsquo;aggiornamento che migliora silenziosamente la tua giornata.&lt;/p&gt;
&lt;h2 id="bun-è-ora-di-prima-classe"&gt;Bun è Ora di Prima Classe&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;Se il tuo team usa già Bun, Aspire non ti costringe più a nuotare controcorrente.&lt;/p&gt;
&lt;h2 id="yarn-più-affidabile"&gt;Yarn Più Affidabile&lt;/h2&gt;
&lt;p&gt;Gli utenti Yarn ottengono meno errori misteriosi con &lt;code&gt;withYarn()&lt;/code&gt; e &lt;code&gt;addViteApp()&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="miglioramenti-ai-container"&gt;Miglioramenti ai Container&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ImagePullPolicy.Never&lt;/code&gt; per usare l&amp;rsquo;immagine locale senza andare al registry. PostgreSQL 18+ con volumi di dati ora funziona correttamente.&lt;/p&gt;
&lt;h2 id="miglioramenti-al-debug"&gt;Miglioramenti al Debug&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DebuggerDisplayAttribute&lt;/code&gt; sui tipi core&lt;/li&gt;
&lt;li&gt;Messaggi di errore migliori per &lt;code&gt;WaitFor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BeforeResourceStartedEvent&lt;/code&gt; si attiva al momento giusto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Post originale di David Pine: &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/it/events/global-azure-spain-2026/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://thedotnetblog.com/it/events/global-azure-spain-2026/</guid><description>Il più grande evento Azure della community in Spagna — un'intera giornata di sessioni su Azure, IA, dati, sicurezza e sviluppo cloud-native con 38 speaker su 3 track.</description><content:encoded>&lt;p&gt;Global Azure Spain 2026 si tiene il &lt;strong&gt;18 aprile 2026&lt;/strong&gt; al &lt;strong&gt;Kinépolis Diversia&lt;/strong&gt; ad Alcobendas, Madrid. È il più grande evento comunitario Azure in Spagna, con 38 speaker su 3 track paralleli dedicati ad agenti IA, networking Azure, Cosmos DB, Fabric, IoT, sicurezza e molto altro.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;evento si svolge dalle &lt;strong&gt;08:30 alle 18:30&lt;/strong&gt; e include keynote, pause caffè, pranzo e una sessione di chiusura Q&amp;amp;A.&lt;/p&gt;
&lt;h2 id="punti-salienti-dellagenda"&gt;Punti salienti dell&amp;rsquo;agenda&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Domando Agentes de IA&lt;/strong&gt;: governance, strumenti e API con Azure AI Foundry e 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;: sistemi multi-agente in azione&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="biglietti"&gt;Biglietti&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;iscrizione prevede una donazione simbolica — l&amp;rsquo;intero prezzo del biglietto va direttamente a &lt;strong&gt;Plan International&lt;/strong&gt;, a sostegno dei diritti dei bambini e dell&amp;rsquo;uguaglianza nel mondo. Posti limitati, prenota il tuo posto in anticipo.&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;Biglietti su Eventbrite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://globalazure.es/"&gt;Sito dell&amp;rsquo;evento&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;Oltre a Madrid, il Global Azure Tour 2026 prevede tappe anche a &lt;strong&gt;Saragozza&lt;/strong&gt;, &lt;strong&gt;Tenerife&lt;/strong&gt; e &lt;strong&gt;Siviglia&lt;/strong&gt;.&lt;/p&gt;</content:encoded></item><item><title>Smetti di sorvegliare il tuo terminale: la modalità detached di Aspire cambia il flusso di lavoro</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>Aspire 13.2 ti permette di eseguire il tuo AppHost in background e riprenderti il terminale. Combinato con i nuovi comandi CLI e il supporto per gli agenti, è più importante di quanto sembri.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/it/news/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ogni volta che esegui un AppHost di Aspire, il tuo terminale sparisce. Bloccato. Occupato finché non premi Ctrl+C. Devi eseguire un comando veloce? Apri un&amp;rsquo;altra scheda. Vuoi controllare i log? Un&amp;rsquo;altra scheda. È una piccola frizione che si accumula in fretta.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 risolve questo problema. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;ha scritto tutti i dettagli&lt;/a&gt;, e onestamente, questa è una di quelle funzionalità che cambia immediatamente il modo in cui lavori.&lt;/p&gt;
&lt;h2 id="modalità-detached-un-comando-terminale-recuperato"&gt;Modalità detached: un comando, terminale recuperato&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;Questa è la scorciatoia per &lt;code&gt;aspire run --detach&lt;/code&gt;. Il tuo AppHost si avvia in background e riottieni il terminale immediatamente. Niente schede extra. Niente multiplexer di terminale. Solo il tuo prompt, pronto all&amp;rsquo;uso.&lt;/p&gt;
&lt;h2 id="gestire-ciò-che-è-in-esecuzione"&gt;Gestire ciò che è in esecuzione&lt;/h2&gt;
&lt;p&gt;Il punto è questo — eseguire in background è utile solo se riesci a gestire ciò che c&amp;rsquo;è là fuori. Aspire 13.2 include un set completo di comandi CLI proprio per questo:&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;Questo trasforma il CLI di Aspire in un vero gestore di processi. Puoi avviare più AppHost, controllare il loro stato, seguire i loro log e spegnerli — tutto da un&amp;rsquo;unica sessione di terminale.&lt;/p&gt;
&lt;h2 id="combinalo-con-la-modalità-isolata"&gt;Combinalo con la modalità isolata&lt;/h2&gt;
&lt;p&gt;La modalità detached si abbina naturalmente con la modalità isolata. Vuoi eseguire due istanze dello stesso progetto in background senza conflitti di porta?&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;Ognuna ottiene porte casuali, secret separati e il proprio ciclo di vita. Usa &lt;code&gt;aspire ps&lt;/code&gt; per vedere entrambe, &lt;code&gt;aspire stop&lt;/code&gt; per fermare quella di cui non hai più bisogno.&lt;/p&gt;
&lt;h2 id="perché-questo-è-enorme-per-gli-agenti-di-codice"&gt;Perché questo è enorme per gli agenti di codice&lt;/h2&gt;
&lt;p&gt;Qui diventa davvero interessante. Un agente di codice che lavora nel tuo terminale ora può:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Avviare l&amp;rsquo;app con &lt;code&gt;aspire start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interrogare il suo stato con &lt;code&gt;aspire describe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Controllare i log con &lt;code&gt;aspire logs&lt;/code&gt; per diagnosticare problemi&lt;/li&gt;
&lt;li&gt;Fermarla con &lt;code&gt;aspire stop&lt;/code&gt; quando ha finito&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tutto senza perdere la sessione del terminale. Prima della modalità detached, un agente che eseguiva il tuo AppHost si bloccava nel proprio terminale. Ora può avviare, osservare, iterare e ripulire — esattamente come vorresti che funzionasse un agente autonomo.&lt;/p&gt;
&lt;p&gt;Il team di Aspire ha puntato su questo. Eseguire &lt;code&gt;aspire agent init&lt;/code&gt; configura un file di skill di Aspire che insegna questi comandi agli agenti. Così strumenti come l&amp;rsquo;agente di codice di Copilot possono gestire i tuoi workload Aspire direttamente.&lt;/p&gt;
&lt;h2 id="per-concludere"&gt;Per concludere&lt;/h2&gt;
&lt;p&gt;La modalità detached è un upgrade del flusso di lavoro mascherato da semplice flag. Smetti di cambiare contesto tra i terminali, gli agenti smettono di bloccarsi da soli, e i nuovi comandi CLI ti danno visibilità reale su ciò che è in esecuzione. È pratico, è pulito, e rende il ciclo di sviluppo quotidiano notevolmente più fluido.&lt;/p&gt;
&lt;p&gt;Leggi il &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;post completo&lt;/a&gt; per tutti i dettagli e scarica Aspire 13.2 con &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 Vuole Essere il Migliore Amico del Tuo Agente IA</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>Aspire 13.2 punta tutto sullo sviluppo agentico — output CLI strutturato, esecuzioni isolate, ambienti auto-riparanti e dati OpenTelemetry completi perché i tuoi agenti IA possano davvero costruire, eseguire e osservare le tue app.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/it/news/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Conosci quel momento in cui il tuo agente IA scrive del codice solido, ti entusiasmi, e poi tutto crolla quando prova a &lt;em&gt;eseguire&lt;/em&gt; la cosa? Conflitti di porte, processi fantasma, variabili d&amp;rsquo;ambiente sbagliate — improvvisamente il tuo agente sta bruciando token per risolvere problemi di avvio invece di costruire funzionalità.&lt;/p&gt;
&lt;p&gt;Il team di Aspire ha appena pubblicato un &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post molto ben pensato&lt;/a&gt; su esattamente questo problema, e la loro risposta è convincente: Aspire 13.2 è progettato non solo per gli umani, ma per gli agenti IA.&lt;/p&gt;
&lt;h2 id="il-problema-è-reale"&gt;Il problema è reale&lt;/h2&gt;
&lt;p&gt;Gli agenti IA sono incredibili nello scrivere codice. Ma consegnare un&amp;rsquo;app full-stack funzionante richiede molto di più che generare file. Devi avviare i servizi nell&amp;rsquo;ordine giusto, gestire le porte, impostare le variabili d&amp;rsquo;ambiente, connettere i database e ottenere feedback quando qualcosa si rompe. Al momento, la maggior parte degli agenti gestisce tutto questo per tentativi — eseguendo comandi, leggendo output di errore, riprovando.&lt;/p&gt;
&lt;p&gt;Aggiungiamo istruzioni Markdown, skill personalizzati e prompt per guidarli, ma sono imprevedibili, non possono essere compilati e costano token solo per essere parsati. Il team di Aspire ha centrato l&amp;rsquo;insight chiave: gli agenti hanno bisogno di &lt;strong&gt;compilatori e API strutturate&lt;/strong&gt;, non di più Markdown.&lt;/p&gt;
&lt;h2 id="aspire-come-infrastruttura-per-agenti"&gt;Aspire come infrastruttura per agenti&lt;/h2&gt;
&lt;p&gt;Ecco cosa porta Aspire 13.2 al tavolo dello sviluppo agentico:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tutto il tuo stack in codice tipizzato.&lt;/strong&gt; L&amp;rsquo;AppHost definisce la tua topologia completa — API, frontend, database, cache — in TypeScript o C# compilabile:&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;Un agente può leggere questo per capire la topologia dell&amp;rsquo;app, aggiungere risorse, collegare connessioni e &lt;em&gt;compilare per verificare&lt;/em&gt;. Il compilatore gli dice immediatamente se qualcosa è sbagliato. Niente congetture, niente tentativi con i file di configurazione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Un solo comando per governarli tutti.&lt;/strong&gt; Invece di far destreggiate gli agenti tra &lt;code&gt;docker compose up&lt;/code&gt;, &lt;code&gt;npm run dev&lt;/code&gt; e script di avvio database, tutto è semplicemente &lt;code&gt;aspire start&lt;/code&gt;. Tutte le risorse si avviano nell&amp;rsquo;ordine giusto, sulle porte giuste, con la configurazione giusta. I processi a lunga durata non bloccano l&amp;rsquo;agente — Aspire li gestisce.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modalità isolata per agenti paralleli.&lt;/strong&gt; Con &lt;code&gt;--isolated&lt;/code&gt;, ogni esecuzione di Aspire ottiene le proprie porte casuali e segreti utente separati. Hai più agenti che lavorano su git worktree? Non entreranno in collisione. Questo è enorme per strumenti come gli agenti in background di VS Code che creano ambienti paralleli.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Occhi da agente attraverso la telemetria.&lt;/strong&gt; Qui diventa davvero potente. La CLI di Aspire espone dati OpenTelemetry completi durante lo sviluppo — tracce, metriche, log strutturati. Il tuo agente non sta solo leggendo l&amp;rsquo;output della console sperando per il meglio. Può tracciare una richiesta fallita tra i servizi, profilare endpoint lenti e individuare esattamente dove le cose si rompono. Questa è osservabilità di livello produzione nel ciclo di sviluppo.&lt;/p&gt;
&lt;h2 id="lanalogia-dei-parabordi-del-bowling"&gt;L&amp;rsquo;analogia dei parabordi del bowling&lt;/h2&gt;
&lt;p&gt;Il team di Aspire usa un&amp;rsquo;ottima analogia: pensa ad Aspire come ai parabordi della pista da bowling per gli agenti IA. Se l&amp;rsquo;agente non è perfetto (e non lo sarà), i parabordi impediscono che tiri nel canale. La definizione dello stack previene la misconfigurazioni, il compilatore cattura gli errori, la CLI gestisce i processi e la telemetria fornisce il ciclo di feedback.&lt;/p&gt;
&lt;p&gt;Combina questo con qualcosa come Playwright CLI, e il tuo agente può davvero &lt;em&gt;usare&lt;/em&gt; la tua app — cliccando nei flussi, controllando il DOM, vedendo le cose rotte nella telemetria, sistemando il codice, riavviando e testando di nuovo. Costruire, eseguire, osservare, sistemare. Questo è il ciclo di sviluppo autonomo che stavamo inseguendo.&lt;/p&gt;
&lt;h2 id="per-iniziare"&gt;Per iniziare&lt;/h2&gt;
&lt;p&gt;Nuovo con Aspire? Installa la CLI da &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; e segui la &lt;a href="https://aspire.dev/get-started/first-app"&gt;guida introduttiva&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Già usi Aspire? Esegui &lt;code&gt;aspire update --self&lt;/code&gt; per ottenere la 13.2, poi punta il tuo agente di coding preferito al tuo repo. Potresti stupirti di quanto va più lontano con i guardrail di Aspire.&lt;/p&gt;
&lt;h2 id="per-concludere"&gt;Per concludere&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 non è più solo un framework per app distribuite — sta diventando infrastruttura essenziale per agenti. Definizioni di stack strutturate, avvio con un comando, esecuzioni parallele isolate e telemetria in tempo reale danno agli agenti IA esattamente ciò di cui hanno bisogno per passare dallo scrivere codice al consegnare app.&lt;/p&gt;
&lt;p&gt;Leggi il &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;post completo&lt;/a&gt; dal team di Aspire per tutti i dettagli e i video dimostrativi.&lt;/p&gt;</content:encoded></item><item><title>La Modalità Isolata di Aspire Risolve l'Incubo dei Conflitti di Porta per lo Sviluppo Parallelo</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>Aspire 13.2 introduce la modalità --isolated: porte random, segreti separati e zero collisioni quando si eseguono più istanze dello stesso AppHost. Perfetto per agenti IA, worktree e workflow paralleli.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/it/news/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se hai mai provato a eseguire due istanze dello stesso progetto contemporaneamente, conosci il dolore. La porta 8080 è già in uso. La porta 17370 è occupata. Uccidi qualcosa, riavvia, destreggiati tra le variabili d&amp;rsquo;ambiente — è un killer della produttività.&lt;/p&gt;
&lt;p&gt;Questo problema sta peggiorando, non migliorando. Gli agenti IA creano git worktree per lavorare in modo indipendente. Gli agenti in background avviano ambienti separati. Gli sviluppatori fanno checkout dello stesso repo due volte per i feature branch. Ognuno di questi scenari sbatte contro lo stesso muro: due istanze della stessa app che lottano per le stesse porte.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 risolve questo con un singolo flag. James Newton-King del team Aspire ha &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;scritto tutti i dettagli&lt;/a&gt;, ed è una di quelle feature &amp;ldquo;perché non l&amp;rsquo;avevamo già?&amp;rdquo;&lt;/p&gt;
&lt;h2 id="la-soluzione---isolated"&gt;La soluzione: &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;Questo è tutto. Ogni esecuzione ottiene:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Porte random&lt;/strong&gt; — niente più collisioni tra istanze&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Segreti utente isolati&lt;/strong&gt; — connection string e chiavi API restano separate per istanza&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nessuna riassegnazione manuale delle porte. Nessun giocoleria con le variabili d&amp;rsquo;ambiente. Ogni esecuzione ottiene un ambiente pulito e privo di collisioni automaticamente.&lt;/p&gt;
&lt;h2 id="scenari-reali-dove-questo-brilla"&gt;Scenari reali dove questo brilla&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Checkout multipli.&lt;/strong&gt; Hai un feature branch in una directory e un bugfix in un&amp;rsquo;altra:&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;Entrambi girano senza conflitti. La dashboard mostra cosa sta girando e dove.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agenti in background in VS Code.&lt;/strong&gt; Quando l&amp;rsquo;agente in background di Copilot Chat crea un git worktree per lavorare sul tuo codice in modo indipendente, potrebbe aver bisogno di eseguire il tuo AppHost Aspire. Senza &lt;code&gt;--isolated&lt;/code&gt;, c&amp;rsquo;è un conflitto di porte con il tuo worktree principale. Con esso, entrambe le istanze funzionano e basta.&lt;/p&gt;
&lt;p&gt;Lo skill Aspire distribuito con &lt;code&gt;aspire agent init&lt;/code&gt; istruisce automaticamente gli agenti a usare &lt;code&gt;--isolated&lt;/code&gt; quando lavorano nei worktree. Quindi l&amp;rsquo;agente in background di Copilot dovrebbe gestire tutto nativamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test di integrazione in parallelo allo sviluppo.&lt;/strong&gt; Hai bisogno di eseguire test contro un AppHost live mentre continui a sviluppare funzionalità? La modalità isolata dà a ogni contesto le sue porte e la sua configurazione.&lt;/p&gt;
&lt;h2 id="come-funziona-sotto-il-cofano"&gt;Come funziona sotto il cofano&lt;/h2&gt;
&lt;p&gt;Quando passi &lt;code&gt;--isolated&lt;/code&gt;, la CLI genera un ID di istanza unico per l&amp;rsquo;esecuzione. Questo guida due comportamenti:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Randomizzazione delle porte&lt;/strong&gt; — invece di legarsi a porte prevedibili definite nella configurazione del tuo AppHost, la modalità isolata sceglie porte casuali disponibili per tutto — la dashboard, gli endpoint dei servizi, tutto. Il service discovery si adatta automaticamente, così i servizi si trovano a vicenda indipendentemente da quali porte ottengono.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Isolamento dei segreti&lt;/strong&gt; — ogni esecuzione isolata ottiene il proprio store di segreti utente, identificato dall&amp;rsquo;ID dell&amp;rsquo;istanza. Connection string e chiavi API di un&amp;rsquo;esecuzione non trapelano in un&amp;rsquo;altra.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il tuo codice non ha bisogno di modifiche. Il service discovery di Aspire risolve gli endpoint a runtime, quindi tutto si connette correttamente indipendentemente dall&amp;rsquo;assegnazione delle porte.&lt;/p&gt;
&lt;h2 id="quando-usarlo"&gt;Quando usarlo&lt;/h2&gt;
&lt;p&gt;Usa &lt;code&gt;--isolated&lt;/code&gt; quando esegui più istanze dello stesso AppHost contemporaneamente — che si tratti di sviluppo parallelo, test automatizzati, agenti IA o git worktree. Per lo sviluppo a singola istanza dove preferisci porte prevedibili, il normale &lt;code&gt;aspire run&lt;/code&gt; funziona ancora benissimo.&lt;/p&gt;
&lt;h2 id="per-concludere"&gt;Per concludere&lt;/h2&gt;
&lt;p&gt;La modalità isolata è una piccola feature che risolve un problema reale e sempre più comune. Man mano che lo sviluppo assistito da IA ci spinge verso più workflow paralleli — agenti multipli, worktree multipli, contesti multipli — la capacità di semplicemente avviare un&amp;rsquo;altra istanza senza lottare per le porte è essenziale.&lt;/p&gt;
&lt;p&gt;Leggi il &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;post completo&lt;/a&gt; per tutti i dettagli tecnici e provalo con &lt;code&gt;aspire update --self&lt;/code&gt; per ottenere la 13.2.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 include una CLI per la documentazione — e anche il tuo agente IA può usarla</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>.NET Aspire 13.2 aggiunge aspire docs — una CLI per cercare, esplorare e leggere la documentazione ufficiale senza uscire dal terminale. Funziona anche come strumento per agenti IA. Ecco perché è importante.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/it/news/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Conosci quel momento in cui sei immerso in un Aspire AppHost, stai collegando integrazioni, e devi controllare esattamente quali parametri si aspetta l&amp;rsquo;integrazione Redis? Fai alt-tab al browser, cerchi su aspire.dev, strizzi gli occhi sulla documentazione delle API, poi torni al tuo editor. Contesto perso. Flusso interrotto.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 ha appena &lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;rilasciato una soluzione per questo&lt;/a&gt;. La CLI &lt;code&gt;aspire docs&lt;/code&gt; ti permette di cercare, esplorare e leggere la documentazione ufficiale di Aspire direttamente dal tuo terminale. E siccome è supportata da servizi riutilizzabili, gli agenti IA e le skill possono usare gli stessi comandi per consultare la documentazione invece di allucinare API che non esistono.&lt;/p&gt;
&lt;h2 id="il-problema-che-questo-risolve-davvero"&gt;Il problema che questo risolve davvero&lt;/h2&gt;
&lt;p&gt;David Pine lo dice perfettamente nel post originale: gli agenti IA erano &lt;em&gt;terribili&lt;/em&gt; nell&amp;rsquo;aiutare gli sviluppatori a costruire app con Aspire. Raccomandavano &lt;code&gt;dotnet run&lt;/code&gt; invece di &lt;code&gt;aspire run&lt;/code&gt;, facevano riferimento a learn.microsoft.com per docs che vivono su aspire.dev, suggerivano pacchetti NuGet obsoleti, e — il mio preferito — allucinavano API inesistenti.&lt;/p&gt;
&lt;p&gt;Perché? Perché Aspire è stato specifico per .NET molto più a lungo di quanto sia stato poliglotta, e i LLM lavorano con dati di addestramento che precedono le ultime funzionalità. Quando dai a un agente IA la possibilità di consultare la documentazione attuale, smette di tirare a indovinare e inizia a essere utile.&lt;/p&gt;
&lt;h2 id="tre-comandi-zero-schede-del-browser"&gt;Tre comandi, zero schede del browser&lt;/h2&gt;
&lt;p&gt;La CLI è di una semplicità rinfrescante:&lt;/p&gt;
&lt;h3 id="elencare-tutta-la-documentazione"&gt;Elencare tutta la documentazione&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;Restituisce ogni pagina di documentazione disponibile su aspire.dev. Serve un output leggibile dalle macchine? Aggiungi &lt;code&gt;--format Json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="cercare-un-argomento"&gt;Cercare un argomento&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;Cerca sia nei titoli che nei contenuti con punteggio di rilevanza ponderato. Lo stesso motore di ricerca che alimenta internamente gli strumenti di documentazione. Ottieni risultati classificati con titoli, slug e punteggi di rilevanza.&lt;/p&gt;
&lt;h3 id="leggere-una-pagina-intera-o-solo-una-sezione"&gt;Leggere una pagina intera (o solo una sezione)&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;Trasmette la pagina completa in markdown nel tuo terminale. Ti serve solo una sezione?&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;Precisione chirurgica. Niente scrolling su 500 righe. Solo la parte che ti serve.&lt;/p&gt;
&lt;h2 id="laspetto-agente-ia"&gt;L&amp;rsquo;aspetto agente IA&lt;/h2&gt;
&lt;p&gt;Ecco dove diventa interessante per noi sviluppatori che costruiamo con strumenti IA. Gli stessi comandi &lt;code&gt;aspire docs&lt;/code&gt; funzionano come strumenti per agenti IA — tramite skill, server MCP, o semplici wrapper CLI.&lt;/p&gt;
&lt;p&gt;Invece di far inventare al tuo assistente IA delle API Aspire basate su dati di addestramento obsoleti, può chiamare &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt;, trovare la documentazione ufficiale dell&amp;rsquo;integrazione, leggere la pagina giusta, e darti l&amp;rsquo;approccio documentato. Documentazione in tempo reale e aggiornata — non quello che il modello ha memorizzato sei mesi fa.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;architettura dietro tutto questo è intenzionale. Il team Aspire ha costruito servizi riutilizzabili (&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;) anziché un&amp;rsquo;integrazione una tantum. Questo significa che lo stesso motore di ricerca funziona per gli umani nel terminale, gli agenti IA nel tuo editor, e l&amp;rsquo;automazione nella tua pipeline CI.&lt;/p&gt;
&lt;h2 id="scenari-reali"&gt;Scenari reali&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Consultazioni rapide nel terminale:&lt;/strong&gt; Sei tre file in profondità e hai bisogno dei parametri di configurazione Redis. Due comandi, novanta secondi, di nuovo al lavoro:&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;Sviluppo assistito dall&amp;rsquo;IA:&lt;/strong&gt; La tua skill di VS Code avvolge i comandi CLI. Chiedi &amp;ldquo;Aggiungi un database PostgreSQL al mio AppHost&amp;rdquo; e l&amp;rsquo;agente consulta i docs reali prima di rispondere. Nessuna allucinazione.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Validazione CI/CD:&lt;/strong&gt; La tua pipeline valida le configurazioni AppHost contro la documentazione ufficiale in modo programmatico. L&amp;rsquo;output &lt;code&gt;--format Json&lt;/code&gt; si collega in modo pulito a &lt;code&gt;jq&lt;/code&gt; e altri strumenti.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Basi di conoscenza personalizzate:&lt;/strong&gt; Stai costruendo i tuoi strumenti IA? Invia l&amp;rsquo;output JSON strutturato direttamente nella tua base di conoscenza:&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;Niente web scraping. Niente chiavi API. Gli stessi dati strutturati usati internamente dagli strumenti di documentazione.&lt;/p&gt;
&lt;h2 id="la-documentazione-è-sempre-aggiornata"&gt;La documentazione è sempre aggiornata&lt;/h2&gt;
&lt;p&gt;Questa è la parte che apprezzo di più. La CLI non scarica uno snapshot — interroga aspire.dev con caching basato su ETag. Nel momento in cui la documentazione viene aggiornata, la tua CLI e qualsiasi skill costruita su di essa lo riflette. Niente copie obsolete, niente momenti &amp;ldquo;ma il wiki diceva&amp;hellip;&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="per-concludere"&gt;Per concludere&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; è una di quelle piccole funzionalità che risolve un problema reale in modo pulito. Gli umani ottengono accesso alla documentazione nativo nel terminale. Gli agenti IA ottengono un modo per smettere di indovinare e iniziare a fare riferimento a docs reali. E tutto è supportato dalla stessa fonte di verità.&lt;/p&gt;
&lt;p&gt;Se stai costruendo con .NET Aspire e non hai ancora provato la CLI, esegui &lt;code&gt;aspire docs search &amp;quot;il-tuo-argomento-qui&amp;quot;&lt;/code&gt; e vedi come ti sembra. Poi considera di integrare quei comandi nella skill IA o nella configurazione di automazione che stai usando — i tuoi agenti ti ringrazieranno.&lt;/p&gt;
&lt;p&gt;Dai un&amp;rsquo;occhiata all&amp;rsquo;&lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;approfondimento di David Pine&lt;/a&gt; su come sono nati gli strumenti di documentazione, e al &lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;riferimento ufficiale della CLI&lt;/a&gt; per tutti i dettagli.&lt;/p&gt;</content:encoded></item><item><title>La Dashboard di Aspire 13.2 ora ha un'API di telemetria — e cambia tutto</title><link>https://thedotnetblog.com/it/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/it/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</guid><description>.NET Aspire 13.2 porta un'esportazione telemetrica più intelligente, un'API programmabile per trace e log, e miglioramenti alla visualizzazione GenAI. Ecco perché è importante per il tuo flusso di debug.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Questo post è stato tradotto automaticamente. Per la versione originale, &lt;a href="https://thedotnetblog.com/it/news/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/"&gt;clicca qui&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Se hai sviluppato applicazioni distribuite con .NET Aspire, sai già che la dashboard è la cosa migliore dell&amp;rsquo;intera esperienza. Tutti i tuoi trace, log e metriche in un unico posto — niente Jaeger esterno, niente configurazione di Seq, niente momenti &amp;ldquo;fammi controllare l&amp;rsquo;altro terminale&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 ha appena migliorato tutto significativamente. James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-dashboard-improvements-export-and-telemetry/"&gt;ha annunciato l&amp;rsquo;aggiornamento&lt;/a&gt;, e onestamente? Le funzionalità di esportazione telemetria e l&amp;rsquo;API da sole giustificano l&amp;rsquo;upgrade.&lt;/p&gt;
&lt;h2 id="esportare-telemetria-come-una-persona-normale"&gt;Esportare telemetria come una persona normale&lt;/h2&gt;
&lt;p&gt;Ecco lo scenario che abbiamo vissuto tutti: stai debuggando un problema distribuito, finalmente lo riproduci dopo venti minuti di setup, e ora devi condividere con il team quello che è successo. Prima? Screenshot. Copia e incolla degli ID delle trace. Il solito caos.&lt;/p&gt;
&lt;p&gt;Aspire 13.2 aggiunge un dialog &lt;strong&gt;Gestisci log e telemetria&lt;/strong&gt; dove puoi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pulire tutta la telemetria (utile prima di un tentativo di riproduzione)&lt;/li&gt;
&lt;li&gt;Esportare telemetria selezionata in un file ZIP nel formato standard OTLP/JSON&lt;/li&gt;
&lt;li&gt;Re-importare quel ZIP in qualsiasi dashboard Aspire successivamente&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quest&amp;rsquo;ultimo punto è la funzionalità killer. Riproduci un bug, esporti la telemetria, la alleghi al tuo work item, e il tuo collega può importarla nella propria dashboard per vedere esattamente quello che hai visto tu. Niente più &amp;ldquo;riesci a riprodurlo sulla tua macchina?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Trace, span e log individuali hanno anche un&amp;rsquo;opzione &amp;ldquo;Export JSON&amp;rdquo; nei menu contestuali. Devi condividere una trace specifica? Click destro, copia JSON, incolla nella descrizione della PR. Fatto.&lt;/p&gt;
&lt;h2 id="lapi-di-telemetria-è-il-vero-punto-di-svolta"&gt;L&amp;rsquo;API di telemetria è il vero punto di svolta&lt;/h2&gt;
&lt;p&gt;Questo è ciò che mi entusiasma di più. La dashboard ora espone un&amp;rsquo;API HTTP sotto &lt;code&gt;/api/telemetry&lt;/code&gt; per interrogare i dati di telemetria programmaticamente. Endpoint disponibili:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/resources&lt;/code&gt; — elencare risorse con telemetria&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/spans&lt;/code&gt; — interrogare span con filtri&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/logs&lt;/code&gt; — interrogare log con filtri&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces&lt;/code&gt; — elencare trace&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces/{traceId}&lt;/code&gt; — ottenere tutti gli span per una trace specifica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tutto torna in formato OTLP JSON. Questo alimenta i nuovi comandi CLI &lt;code&gt;aspire agent mcp&lt;/code&gt; e &lt;code&gt;aspire otel&lt;/code&gt;, ma l&amp;rsquo;implicazione reale è più grande: ora puoi costruire strumenti, script e integrazioni con agenti IA che interrogano direttamente la telemetria della tua app.&lt;/p&gt;
&lt;p&gt;Immagina un agente IA che può vedere le tue trace distribuite reali durante il debug. Non è più ipotetico — è ciò che questa API rende possibile.&lt;/p&gt;
&lt;h2 id="la-telemetria-genai-diventa-pratica"&gt;La telemetria GenAI diventa pratica&lt;/h2&gt;
&lt;p&gt;Se stai costruendo app con IA usando Semantic Kernel o Microsoft.Extensions.AI, apprezzerai il visualizzatore di telemetria GenAI migliorato. Aspire 13.2 aggiunge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descrizioni degli strumenti IA renderizzate come Markdown&lt;/li&gt;
&lt;li&gt;Un pulsante GenAI dedicato nella pagina delle trace per accesso rapido&lt;/li&gt;
&lt;li&gt;Migliore gestione errori per JSON GenAI troncato o non standard&lt;/li&gt;
&lt;li&gt;Navigazione click-to-highlight tra le definizioni degli strumenti&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il post menziona che VS Code Copilot chat, Copilot CLI e OpenCode supportano tutti la configurazione di un &lt;code&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/code&gt;. Puntali alla dashboard Aspire e puoi letteralmente guardare i tuoi agenti IA pensare in tempo reale attraverso la telemetria. Questa è un&amp;rsquo;esperienza di debug che non troverai da nessun&amp;rsquo;altra parte.&lt;/p&gt;
&lt;h2 id="per-concludere"&gt;Per concludere&lt;/h2&gt;
&lt;p&gt;Aspire 13.2 trasforma la dashboard da &amp;ldquo;bella UI di debug&amp;rdquo; a &amp;ldquo;piattaforma di osservabilità programmabile&amp;rdquo;. Il flusso di esportazione/importazione da solo fa risparmiare tempo reale nel debug distribuito, e l&amp;rsquo;API di telemetria apre la porta alla diagnostica assistita dall&amp;rsquo;IA.&lt;/p&gt;
&lt;p&gt;Se sei già su Aspire, aggiorna. Se no — questa è una buona ragione per dare un&amp;rsquo;occhiata a &lt;a href="https://aspire.dev"&gt;aspire.dev&lt;/a&gt;.&lt;/p&gt;</content:encoded></item></channel></rss>