.NET 8.0 Sürüm Adayı 2, Blazor proje şablonlarını yeniden işliyor

Adanali

Member
Sürüm Adayı 1’den yaklaşık bir ay sonra yayımlanan .NET 8.0 Sürüm Adayı 2’de Microsoft, tüm tarayıcı tabanlı Blazor türleri için ortak “Blazor Web Uygulaması” proje şablonunu bir kez daha revize etti. Geliştiriciler bir proje oluştururken zaten Blazor Server Side Rendering, Blazor Server, Blazor WebAssembly ve Blazor Server ile Blazor WebAssembly arasında otomatik olarak geçiş yapan Otomatik mod arasında seçim yapabiliyordu.

Duyuru



Blazor web uygulamasına yönelik güncellemeler


Daha önce “Blazor Web Uygulaması” proje şablonunda seçim için çok sayıda onay kutusu bulunurken, piyasaya sürülmeye aday yeni sürümde iki seçim listesi bulunmaktadır: ilkinde etkileşim türünü seçebilirsiniz. İkincisinde, etkileşim türünün tek tek sayfalara mı yoksa uygulamanın tamamına mı uygulanması gerektiğini seçersiniz (Şekil 1). Komut satırı komutunu kullanırken dotnet new bunlara parametreler denir --interactivity (olası değerlerle None, Server, WebAssembly VE Auto) VE --all-interactive (daha fazla bilgi olmadan), bu da “Küresel”e karşılık gelir (Şekil 2). Standart versiyonda komut satırı komutu şöyledir: "Per page/component".




Blazor Web Uygulaması proje şablonu bu yeni seçenekleri sunar.  (Şekil 1).



“Blazor Web Uygulaması” proje şablonu bu yeni seçenekleri sunmaktadır (Şekil 1).


(Resim: Dr. Holger Schwichtenberg)





“Blazor Web Uygulaması” proje şablonu böyle görünüyor.  komut satırında (Şekil 2).



“Blazor Web App” proje şablonu komut satırında bu şekilde görünür (Şekil 2).


(Resim: Dr. Holger Schwichtenberg)



“Sayfa/bileşen başına” ve “Genel” arasında seçim


“Sayfaya/Bileşene Göre” seçeneğini seçerseniz, daha önce olduğu gibi ek açıklamalarla birlikte Razor bileşenlerini tek tek alırsınız, ancak Microsoft bunları Sürüm Adayı 1’den bu yana yeniden adlandırmıştır. Yeni adlar artık şöyledir:


@attribute [RenderModeInteractiveServer]
@attribute [RenderModeInteractiveWebAssembly]
@attribute [RenderModeInteractiveAuto]


ASP.NET Core 8.0 Sürüm Adayı 2 blog gönderisinde Microsoft, artık daha kısa bir sözdizimi biçiminin de mevcut olduğunu duyuruyor:


@rendermode InteractiveServer
@rendermode InteractiveWebAssembly
@rendermode InteractiveAuto


Ancak bu henüz proje şablonlarında kullanılmamaktadır. Kullanıma sunulmasının .NET 8.0’ın son yayın tarihinde gerçekleşmesi bekleniyor.

Şekil 1’deki yeni “Global” seçimi, oluşturma modunun tek tek sayfalarda değil, tüm sayfalar için App.razor dosyasında ayarlanmasına neden olur:


<Routes @rendermode="@RenderMode.InteractiveServer" />
<Routes @rendermode="@RenderMode.InteractiveWebAssembly" />
<Routes @rendermode="@RenderMode.InteractiveAuto" />


Ancak etkileşim türü “Yok” olarak ayarlanırsa bu oluşturma modu ayarlarından hiçbiri proje şablonunda bulunmaz. “Yok” seçeneğinde, ikinci seçim alanında “Genel” veya “Sayfa/bileşen başına” seçeneğinin seçilmesi fark etmez: önceki önizleme sürümlerinde olduğu gibi, yalnızca Home.razor ve Weather.razor sayfalarını alırsınız; ikincisi buna dahildir @attribute [StreamRendering(true)]ancak Blazor Server ve Blazor WebAssembly şablonlarında Counter.razor sayfası yok.

Blazor proje şablonlarını birleştirme


Yeni seçeneklerle geliştiriciler, önceki “Blazor Sunucu Uygulaması” ve “Blazor WebAssembly Uygulaması” proje şablonlarıyla eşleşen projeler oluşturabilecekler. Bu iki proje şablonu (adında “Boş” bulunan kardeş şablonları dahil) artık .NET 8.0 için mevcut değildir. “Blazor Web Uygulaması”na ek olarak “Örnek sayfaları dahil et” seçeneğine sahip bir “Blazor WebAssembly Bağımsız Uygulaması” şablonu da vardır.

Bağımsız uygulama, eski “Blazor WebAssembly Uygulaması” proje şablonunun bir parçasıdır ve web sunucusundaki ASP.NET Core’a bağlı olmayan, ancak web tarayıcısının indirilmesi için herhangi bir (muhtemelen statik) web sunucusuna bağlı olan bir Blazor WebAssembly uygulaması oluşturur.

Ayrıca yenilemelerden etkilenmeyen “.NET MAUI Blazor Hibrit Uygulama” proje şablonu da bulunmaktadır. .NET SDK’da Windows Forms ve Windows Sunum Vakfı (WPF) içeren hibrit Blazor uygulamalarına yönelik bir proje şablonunu yine de boşuna arayabilirsiniz.

Toplamda .NET SDK’da üç güncel Blazor 8.0 proje şablonu vardır:

  • “Blazor Web Uygulaması”
  • “Blazor WebAssembly Bağımsız Uygulaması”
  • “Hibrit .NET MAUI Blazor Uygulaması”
Arama iletişim kutusunda (Şekil 3) Visual Studio tarafından sunulan diğer tüm proje şablonları, sonraki sayfalarda .NET 8.0 için bir seçim sunmamaktadır. Ancak yine de şablonları kullanabilir ve bunu manuel olarak yapabilirsiniz. <TargetFramework> .NET 8.0’a geçin ve önemli değişiklikleri göz önünde bulundurun. Bu mümkündür çünkü Microsoft, yeni Blazor Web App proje yapısına geçmek zorunda kalmadan .NET 8.0’dan önceki sürümlerle oluşturulan Blazor Server ve Blazor WebAssembly projelerini taşımanıza da izin verir.




.NET 8.0 Sürüm Adayı 2'deki Blazor proje şablonlarına genel bakış (Şekil 3).



.NET 8.0 Sürüm Adayı 2’deki Blazor proje şablonlarına genel bakış (Şekil 3).


(Resim: Dr. Holger Schwichtenberg)



Blazor ve ASP.NET Core’da daha fazla yenilik


Microsoft, diğer alanlarda da yeni Blazor özelliklerini tamamladı. Sunucu tarafı oluşturmada (SSR) bile, Blazor her zaman HTML sayfalarının tamamını göndermeye çalışmaz, bunun yerine değiştirilmiş sayfa bölümlerini tek tek değiştirmek için JavaScript’i kullanır. Geliştiriciler artık bir HTML özelliği kullanarak “Gelişmiş Gezinme” adı verilen bu özelliği devre dışı bırakabilir. Bu, Blazor dışındaki bir sayfaya geçiş yaparken kullanışlıdır, aksi takdirde Blazor çağrıyı gereksiz yere kesecektir:


<a href="my-non-blazor-page" data-enhance-nav="false">Seiten außerhalb der Blazor-Anwendung</a>


Siz de takip edebilirsiniz data-permanent Gelişmiş Gezinme’nin, JavaScript aracılığıyla değiştirilen ayrı sayfa bölümlerini değiştirmesini önleyin:


<div data-permanent>
This div gets updated dynamically by a script when the page loads!
</div>


Kısmi bir sayfa güncellemesi meydana geldiğinde de bilgilendirilebilirsiniz. Bunu yapmak için olay, blazor.web.js JavaScript dosyası yüklendikten sonra gerçekleşir. enhancedload() JavaScript’te işlemek için:


<body>
<Routes />
<script src="_framework/blazor.web.js"></script>
<script>
Blazor.addEventListener('enhancedload', (e) => console.warn('Seitenteile wurden aktualisiert',e));
</script>
</body>


Blazor SSR’de form verileri bağlama artık ek açıklamalara da uyuyor [DataMember] VE [IgnoreDataMember]. Sınıfın bir örneği HttpContext Geliştiriciler aşağıdakileri bir Razor bileşeninde basamaklı parametre olarak kullanabilir:


[CascadingParameter]
public HttpContext? HttpContext { get; set; }


HTML etiketine <dialog> Blazer artık etkinlikleri görüntüleyebiliyor OnOpen() VE OnClose() uğraşmak. Açıklama sırasında [Inject] Artık bir ad da belirleyebilirsiniz, örneğin


[Inject(Key = "my-service")]
public IMyService MyService { get; set; }


“Anahtarlı bağımlılık enjeksiyon hizmetleri” olarak adlandırılan hizmetler .NET 8.0’da yenidir. Ancak Sürüm Adayı 2 henüz bunu yapabilecek kapasitede değil @injectRazor sözdizimindeki yönerge.

Microsoft, ASP.NET Core Release Candidate 2 blog yazısında Blazor’daki yeniliklere ek olarak birkaç yenilikten daha bahsediyor. Bu, ASP.NET Core SignalR için TypeScript istemcisinin artık bağlantıyı otomatik olarak geri yükleyebildiği gerçeğini de içeriyor:


const builder = new signalR.HubConnectionBuilder()
.withUrl("/hubname")
.withStatefulReconnect({ bufferSize: 1000 }); // optional options, defaults to 100,000
const connection = builder.build();


Bu seçenek .NET 8.0 Preview 5’ten başlayarak kullanılabilir ancak şu ana kadar yalnızca .NET istemcileri için geçerlidir.



Haberin Sonu
 
Üst