Aspire 9.5'e Giriş - Bu Temel Araçla Hızlı Başlayın
Web uygulamaları ile çalışan her modern .NET geliştiricisi Aspire 9.5 nasıl kullanacağını bilmelidir. "Aspire 9.5'e Giriş – Bu Temel Araçla Hızlıca Başlayın" adlı ayrıntılı videosunda Tim Corey, bu yeni .NET Aspire sistemini tanıtıyor, neden değerli olduğunu ve nasıl hızlı bir şekilde başlanacağını açıklıyor.
Video boyunca Tim, Visual Studio ve en son proje şablonlarını kullanarak adım adım bir örnek çözüm oluşturuyor. Bu makale onun adım adım ilerlemesini yakından takip ediyor, proje dosyaları, kurulum süreci ve Aspire'ın üretime hazır dağıtılmış uygulamalar inşa etmeye getirdiği geliştirici deneyimi için eksiksiz bir kılavuz sağlıyor.
Başlarken ve Aspire 9.5'i Kurmak
Tim, Aspire'ın amacını açıklayarak başlıyor. API'ler veya web uygulamaları geliştiren her .NET geliştiricisi, bu temel Microsoft aracını anlamalıdır. Aspire'ın ne yapabileceği konusunda karışıklık olmuştu, bu yüzden Tim, temel amacını, kurulumunu ve kullanımını baştan sona göstermek için yola çıktı.
Visual Studio'yu açıyor ve Aspire başlangıç uygulama şablonunu kullanarak yeni bir proje başlatıyor. Aspire'ı yüklemediyseniz, Aspire için kurulum ve araçlar için Microsoft'un web sitesine işaret ediyor ve .NET CLI, Visual Studio veya VS Code üzerinden yükleyebileceğinizi belirtiyor. Basitlik açısından, Tim şu CLI komutunu kullanmanızı öneriyor:
dotnet new install aspire.templatesBu, 9.5 dahil en son proje şablonlarını yükler. Kurulumdan sonra, şablonların görünmesi için Visual Studio'nun yeniden başlatılması gerekebilir.
Tim, Aspire Demo Uygulamasını seçiyor, .NET 9'u seçiyor, HTTPS'i etkinleştiriyor ve önbellekleme için Redis entegrasyonunu kullanıyor. Bu, Aspire'ın tüm bir uygulamayı yerel olarak yönettiği gerçek bir senaryoyu göstermektedir. Birim testlerini atlayarak çözüm dosyalarını oluşturma işlemine devam ediyor.
Proje Yapısını ve Uygulama Modelini Keşfetme
Proje oluşturulduktan sonra, Tim, Aspire'ın uygulama modeli tarafından oluşturulan proje dosyalarını ayrıntılı bir şekilde açıklıyor. Çözüm, hem tipik .NET projelerini hem de Aspire'a özgü olanları yansıtan dört ana proje içerir:
Web projesi – Blazor tabanlı bir web uygulaması.
API hizmeti – veri veya iş mantığı için bir arka uç hizmeti.
AppHost – tüm uygulamayı başlatan tek dosya AppHost.
- ServiceDefaults – sağlık kontrolleri, hizmet keşfi ve telemetri ayarı içeren bir kütüphane.
İlk iki proje, normal bir dağıtılmış sistem (ön uç ve arka uç) temsil ederken, diğer ikisi Aspire'ın ortam değişkenlerini, bağımlılıkları ve kaynak yaşam döngüsü olay API'lerini yönetmek için birleşik araç zincirini temsil eder.
Tim, bu yeni uygulama modelinin, geliştiricilerin tüm uygulamalarını tek bir komutla çalıştırmasına olanak tanıyan çoklu proje orkestrasyonu için birinci sınıf destek sağladığını vurguluyor. AppHost, başlatma sırası ve bağımlılıkları kontrol ederken, ServiceDefaults varsayılan yapılandırmaları, sağlık kontrollerini ve telemetri entegrasyonunu otomatik olarak enjekte eder.
Aspire'ın Yerel Geliştirmeyi Neden Basitleştirdiği
Tim, Aspire olmadan yerel olarak dağıtılmış bir sistemi yönetmenin zorluklarını açıklıyor. Geleneksel olarak, geliştiricilerin, her hizmet için manuel olarak bağlantı zincirleri, port yönlendirmeleri ve konteyner çalışma zamanı ayarlamaları yapması gerekiyordu. Her geliştirici, ortam değişkenlerini, kullanıcı sırlarını ve redis veya API bağlantılarını bireysel olarak çoğaltmalıdır.
Aspire ile Aspire CLI bu işleri otomatik olarak halleder. Bir geliştirme konteyneri veya Docker örneği aracılığıyla Redis konteynerleri gibi bağımlılıkları çalıştırır, uç nokta keşfini yönetir ve hizmet keşfi kullanarak hizmetler arasında özel erişim sağlar.
Aspire, web ön yüzünün önceden belirlenmiş port numaralarını bilmesine gerek kalmaması için bir ters proxy ve uç nokta çözüm sistemi kullanır. API'yi yalnızca isimle ifade eder (örneğin "api hizmeti")—Aspire gerisini çözer.
Bu, geliştiricilerin altyapıya değil koda odaklanmasına olanak tanıyan, zahmetli kurulum adımlarını kaldırarak geliştirici deneyimini önemli ölçüde iyileştirir.
AppHost'da Hizmetleri ve Bağımlılıkları Tanımlamak
Tim, Aspire'ın yapılandırmasının kalbi olan: AppHost'un Program.cs dosyasını gösteriyor. Var builder pattern'i kullanarak, Aspire her hizmeti şu gibi basit komutlarla tanımlar:
var cache = builder.AddRedis("cache");
var api = builder.AddProject<Projects.ApiService>("apiservice");
var web = builder.AddProject<Projects.Web>("webfrontend")
.WithReference(cache)
.WithReference(api);var cache = builder.AddRedis("cache");
var api = builder.AddProject<Projects.ApiService>("apiservice");
var web = builder.AddProject<Projects.Web>("webfrontend")
.WithReference(cache)
.WithReference(api);Bu sözdizimi her kaynağı tanımlar, bağımlılık sırasını ayarlar ve net bir kaynak yaşam döngüsü oluşturur. Aspire, öncelikle önbelleğin başlamasını, ardından API'nın ve son olarak web ön yüzünün başlamasını sağlayarak bağımlılıkları otomatik olarak bekler.
Bu küçük talimat seti, geliştiricilere, üretime hazır dağıtılmış uygulamalarda nasıl çalışılacağını yansıtarak başlangıç davranışı üzerinde ayrıntılı kontrol sağlar.
Aspire'ı Çalıştırma ve Gösterge Tablosunu Anlama
Tim projeyi çalıştırdığında, Aspire kendi konteyner çalıştırma ortamını başlatır ve her şeyi izlemek için merkezi bir arayüz olan Aspire Dashboard'u açar. Başlangıçta bir hata görünüyor: "Container runtime unhealthy"—Docker çalışmıyordu. Docker başladığında, Aspire otomatik olarak bir Redis çalıştırılabilir kaynağını başlatır ve bunu uygulamanın geri kalanına bağlar.
Gösterge paneli, her kaynağın sağlığını gösteren renk kodlu durum simgelerini görüntüler. Redis, API ve web arayüzü çalıştığında, gösterge paneli uygulamanın bütününün sağlıklı olduğunu gösteren yeşil rengine döner.
Bu bildirim sistemi, gerçek zamanlı durumları anında yansıtır ve standart konsol günlüklerinden daha net hata mesajları sağlar. Geliştiriciler, servis ilişkilerini görselleştirebilir, metrikleri izleyebilir ve hatta kaynak uç noktalarına doğrudan kullanıcı arayüzünden erişebilir.
Aspire Dashboard ile Görsel İçgörüler
Kontrol panelindeki grafik görünümü, hizmetlerin nasıl bağlandığını görselleştirir. Örneğin, web ön yüzü hem Redis hem de API hizmetine bağlanır, ancak API bağımsızdır. Bu izleme görünümü, çağrıların ve bağımlılıkların iç akışını anlamaya yardımcı olur.
Tim, kontrol panelinin izleme ayrıntıları iyileştirmeleri, izleme filtreleme seçeneklerini ve zamanlama dökümlerini göstermesi gibi özellikler içerdiğini vurguluyor. Geliştiriciler, Aspire'in izler görünümünü kullanarak hizmetler arasındaki HTTP isteklerini izleyebilir ve performans etkilerini görebilirler.
Merkezi Loglama ve Yapılandırılmış Loglar
Aspire, tüm proje dosyalarındaki konsol günlüklerini tek bir görünümde birleştirir. Birden fazla günlük penceresiyle uğraşmak yerine, geliştiriciler web uygulaması, API ve Redis entegrasyonundan gelen tüm hizmetlerin günlüklerini tek bir zaman çizelgesinde görüntülemek için kontrol panelini kullanabilirler.
Tim, Aspire'in kimlikler, parametreler ve etiketler gibi bağlam açısından zengin girişlere izin veren yapılandırılmış bir günlükleme kullandığını gösteriyor. Geliştiriciler, günlükleri seviye (Bilgi, Uyarı, Hata) veya özellik değerlerine göre filtreleyebilir.
Örneğin, bir geliştirici yalnızca "evenOddResult" == "odd" olan girdileri görebilir. Bu gelişmiş günlük filtreleme, Aspire'ın renk kodlu ön ekleriyle birleştirilerek hata ayıklamayı sezgisel ve görsel hale getirir.
Izler ve Telemetri ile Çalışma
Traces sekmesinde, Tim Aspire'in uygulamanın servisleri arasında istekleri nasıl izlediğini göstermektedir. Her iz, hangi hizmetin neyi işlediğini gösteren zamanlama, durum ve dilimleri içerir.
Örneğin, bir "GetWeather" isteği önbelleğe ne zaman erişildiğini veya erişilmediğini, API çağrısının ne zaman gerçekleştiğini ve her bir eylemin ne kadar sürdüğünü gösterir. Bu izleme filtreleme, darboğazlar ve bağımlılıkların kesin olarak tanımlanmasına olanak tanır.
Aspire, geliştiricilere dağıtılmış servisler üzerinde tam izlenebilirlik sağlayarak iz verilerini diğer araçlara veya sistemlere aktarmak için OpenTelemetry'yi de destekler.
Gerçek Zamanlı Ölçümler ve Performans İzleme
Tim, istek süreleri, SignalR aktif bağlantıları ve aktif istek sayıları gibi metrikleri inceler. Bu metrikler, uygulamanızın canlı durumunu görselleştirir ve bağlantı ya da gecikme sorunlarının erken tespitini sağlar.
Aspire 9.5'teki metrik verileri, izleme detayı iyileştirmeleri ve daha iyi izleme filtreleme özelliklerinden de faydalanır, bu sayede geliştiriciler performans düşüşlerinin meydana geldiği yerleri gerçek zamanlı olarak belirleyebilirler.
Aspire Yerel Geliştirme İçindir, Üretim İçin Değil
Tim, Aspire'in kontrol panelinin üretim sunucularına dağıtım için tasarlanmadığını açıkça belirtir. Dağıtmak, iç sistem detaylarını ve ortam değişkenlerini açığa çıkarabilir, bu da riskli olabilir.
Bununla birlikte, geliştiriciler, hizmetleri Azure Container Apps, Azure Container App Jobs veya diğer Aspire entegrasyonlarına yayımlamak için Aspire'ın aspire deploy komutunu hâlâ kullanabilirler. Bu dağıtım seçenekleri artıyor ancak gösterge panelinden ayrı kalıyor.
Aspire'in amacı, yerel olarak güvenli yükseltmeler ve önizleme desteği ile üretim benzeri bir ortamı yansıtmak, üretim izleme sistemlerini değiştirmek değildir.
Günlük Kaydı ve Hata Yönetimi ile Deney Yapmak
Tim, Sayaç sayfasına yapılandırılmış günlük kaydı ekler ve Hava Durumu sayfasına kasıtlı olarak bir NotImplementedException ekler. Yeniden çalıştırıldığında, kontrol paneli hem yapılandırılmış günlükleri hem de işlenmemiş istisnaları anında kaydeder.
O, Aspire'in günlüklerinin, parametre adı, değerler ve çağrı yığını dahil olmak üzere tam detayları nasıl gösterdiğini açıklıyor. GitHub Modelleri ve Copilot AI ile entegrasyon, istisnaların otomatik olarak açıklanmasını ve düzeltmeler için kod önerilerini sağlar; bu, geliştirici deneyimine erken AI hizmetleri ve üretken AI görüntüleyici entegrasyonunun bir örneğidir.
Hataları İz Filtreleme ile Analiz Etme
İzler sekmesinde, Tim başarısız API çağrılarının nasıl kırmızı ünlem ikonlarıyla göründüğünü gösteriyor. Birine tıklamak, her bir isteği birden fazla .NET projesi arasında bağlayarak, span ID'ye göre filtrelenmiş tüm ilgili günlükleri gösterir.
Bu birleştirilmiş görünüm—günlükler, izler ve sağlık kontrolleri bir arada—dış yapılandırma gerektirmeden hata ayıklama ve gözlemlenebilir sistemler oluşturmak için etkileşimli yönlendirme sağlar.
Mevcut .NET Projelerine Aspire Entegrasyonu
Tim daha sonra Aspire'ı mevcut bir uygulamaya entegre etmenin nasıl yapıldığını açıklar. Geliştiricilerin yalnızca iki şey eklemeleri gerekir:
Hizmetlerin ne zaman başlayacağını ve bunların bağımlılıklarını kontrol eden AppHost projesi.
- Özellik bayrakları, sağlık kontrolleri, telemetri ve servis keşfi sağlayan ServiceDefaults projesi.
Her proje dosyasında ServiceDefaults'a referans vererek, geliştiriciler otomatik olarak varsayılan ortam değişkenlerini, günlük yapılandırmasını ve telemetriyi alırlar. Aspire'ın uç nokta çözümleme sistemi, manuel port yönlendirme veya bağlantı dizesi yönetimine olan ihtiyaçı ortadan kaldırır.
Aspire'i Yerel Kullanimin Otesine Genişletme
Tim, Aspire'in yeteneklerinin yerel kullanımın ötesine nasıl genişlediğini ele alıyor. Azure Container Apps ve Azure AI Foundry entegrasyonları ile geliştiriciler, Aspire CLI kullanarak minimum yapılandırma ile dağıtık sistemler dağıtabilir.
Sistem, zaten OpenAI uç noktaları veya Azure PostgreSQL bağlantıları gibi yapay zeka hizmetleri için özel kaynak simgeleri, ad özellikleri ve ön izleme desteğini destekler.
Aspire'in birleşik araç zinciri, sürüm kontrolünü ve büyük ile küçük sürümler arasındaki güvenli yükseltmeleri de destekler, böylelikle ekiplerin Aspire 9.5 gibi güncellemeleri güvenle benimsemesine yardımcı olur.
Son Düşünceler ve Gelecek Görünümü
Video sona ererken, Tim Aspire'i "geliştiriciler için bir altın madeni" olarak adlandırıyor. Gösterge paneli, izleme görünümü, sağlık kontrolleri, günlükler ve metrikleri tek bir birleşik panelde birleştiriyor—bu, daha önce yerel geliştirmede mevcut olmayan bir şeydi.
Tim ve ekibi için her yeni .NET Aspire projesi artık varsayılan olarak bu sistemi kullanıyor. Özel derlemeleri daha hızlı hale getirir, geliştirici deneyimini iyileştirir ve üretime hazır dağıtılmış uygulamaların makineler arasında tutarlı bir şekilde davranmasını sağlar.
O, büyük Aspire sürümlerinin izleme filtresi, uç nokta çözümü ve yapay zeka entegrasyonlarını geliştirmeye devam edeceğini, bu sırada da güvenli yükseltmeler ve genel kullanılabilirliğe odaklanmaya devam edileceğini belirtiyor.
Tim, herkesin Aspire 9.5'i keşfetmesini, bir sonraki .NET projelerinde kullanmasını ve günlükleri görüntülemek, geliştirici tünellerini yönetmek ile tüm uygulamayı yerel olarak güvenle test etmek için tek komutun sadeliğinden yararlanmasını teşvik eder.

