.NET 8.0, Sürüm Adayı 1 ile başlangıç noktasına giriyor

Saberie

Active member
İki sürüm adayından ilki olan .NET 8.0 Sürüm Adayı 1’de Microsoft, Android ve WebAssembly için erken derlemeyi yeniliyor. Ayrıca tarayıcıda Blazor için evrensel bir proje şablonu ve VEYA eşlemesi için anahtarsız karmaşık türler de mevcuttur.

Duyuru



İleri Derleme Yenilikleri


Sürüm adayı, ileri derleyici için ara dilin ortadan kaldırılmasını sağlar. Sıyırma, erken derlemeden sonra ek bir işlemde artık ihtiyaç duyulmayan ara dil kodunu kaldırır. IL ayırma, Android için .NET uygulamaları oluştururken bir seçenek olarak kullanılabilir


<AndroidStripILAfterAOT>true</AndroidStripILAfterAOT>


ve WebAssembly tabanlı tarayıcı tabanlı .NET uygulamaları:


<WasmStripILAfterAOT>true</WasmStripILAfterAOT>


Microsoft’un .NET blogunda yer alan açıklamasına göre bu seçeneklerin Android için %3,5’e, Blazor WebAssembly ve WASM tarayıcı uygulamaları için ise %4,2’ye kadar boyut tasarrufu sağlaması bekleniyor.

İlk bakışta ara dil kodunun erken derlemeden sonra hala var olması saçma görünüyor. Microsoft, blog gönderisindeki bağlamı şöyle açıklıyor: Android ve WebAssembly için AOT derleyicileri tam AOT derleyicileri değildir. Çeşitli senaryolarda (örneğin, dinamik kod oluşturmayı kullanan .NET temel sınıflarını kullanarak) tam zamanında derleyiciyi (Android için) ve yorumlayıcıyı (WebAssembly için) kullanmanız gerekir.

.NET sınıf kitaplığında yaygın çalışma zamanı kodu oluşturma, AOT derleyicisinin diğer uygulama türleri (örneğin konsol ve WebAPI uygulamaları) için önemli sınırlamalara tabi olmasının veya henüz hiç çalışmamasının (örneğin masaüstü) nedenidir. Microsoft blogda şu sözü veriyor: “Bu bağlamda .NET 9’un bir sonraki sürümündeki boşlukları doldurmak için sürekli çalışacağız.”

Blazor için evrensel proje şablonu


.NET 8.0 Preview 5’te Microsoft, Blazor için yeni bir “Blazor Web Uygulaması” proje şablonunu kullanıma sundu. Bu şablon artık Sürüm Adayı 1’de “Blazor Server App”, “Blazor Server App Empty”, “Blazor WebAssembly App” ve “Blazor WebAssembly App Empty” web tarayıcı uygulamalarına yönelik önceki şablonların tamamen yerini alacak şekilde genişletildi. Ancak Blazor Desktop ve Blazor MAUI gibi Blazor hibrit uygulamaları yeni model kapsamında yer almıyor.

“Blazor Web Uygulaması” proje şablonu (bkz. Şekil 1), saf Blazor sunucu tarafı oluşturmayla standart bir proje oluşturur (yalnızca Blazor tarafından çağrılır). AddRazorComponents() VE app.MapRazorComponents<App>() Program.cs’de). Oluşturulan projede, önceki “Sayfalar” ve “Paylaşılan” klasörleri yerine artık “Sayfalar” ve “Düzen” alt klasörlerinin bulunduğu “Bileşenler” dalını bulacaksınız.

öz Örnek sayfaları dahil et (bkz. Şekil 1) seçilmezse, tek içerik sayfası Home.razor (önceki adıyla Index.razor) içeren bir proje oluşturulur. Blazor’daki olağan çerçeve sayfası yapısı (App.razor, MainLayout.razor, _Imports.razor) hâlâ dahildir. Rota ayarları (<Found>, <Navigating> VE AdditionalAssemblies) artık App.razor’da bulunamıyor ancak Routes.razor dosyasına taşındı. Yalnızca bağımsız bir CSS dosyası (app.css) ve bir MainLayout.razor CSS dosyası (MainLayout.razor.css) vardır.




Blazor Web Uygulaması proje şablonundaki yeni seçenekler (Şekil 1).



Blazor Web Uygulaması proje şablonundaki yeni seçenekler (Şekil 1).


(Fotoğraf: Holger Schwichtenberg)



Seçenek ile Örnek sayfaları dahil et (Şekil 1’deki dördüncü seçeneğe bakın) ek bir sayfa olarak Streaming Rendering (Streaming Rendering olarak anılır) ile Weather.razor’u (eski adıyla: FeatchData.razor) edinin Haberler Geliştirici .NET 8.0 Preview 4’teki bir yayında). Ayrıca, bir gezinme çubuğu (/Components/Layout/NavMenu.razor) ve CSS çerçevesi olarak Bootstrap ve Open Iconic, /wwwroot/css/ klasörüne entegre edilmiştir.

İsteğe bağlı etkileşim


Seçenek ile Etkileşimli sunucu bileşenlerini kullanın (Şekil 1’deki üçüncü seçeneğe bakın) Projenizde önceki Blazor sunucusunu etkinleştirin. Program.cs’de çağrıları da görebilirsiniz. AddServerComponents() VE AddServerRenderMode(). /Pages klasöründe etkileşimli sayaca sahip bir Counter.razor sayfası bulunur.

Aynı şekilde etkinleştirildi Etkileşimli WebAssembly bileşenlerini kullanma önceki Blazor WebAssembly aracılığıyla AddWebAssemblyComponents() VE AddWebAssemblyRenderMode(). Kutuyu işaretlerseniz, geliştirici artık bir değil iki proje alacaktır. İki projeden biri “.Client” son ekine sahiptir ve Önizleme 6’da tanıtılan WebAssembly oluşturma modunu içeren Counter.razor bileşenini içerir:


@attribute [RenderModeWebAssembly]


Ayrıca ana projede Counter.razor dosyası da bulunmaktadır. Bu, Microsoft’un Maalesef Sürüm Adayı 1’de kaldırmayı unuttuğu, Önizleme 7’deki bir geçici çözümdü. @page“.Client” projesindeki Counter.razor dosyasına yönelik yönerge e AddAdditionalAssemblies(typeof(Counter).Assembly) Program.cs’ye eklendiğinde Counter.razor’u ana projeden silebilirsiniz.

Blazor WebAssembly ile Razor bileşenleri WebAssembly tabanlı web tarayıcısında çalışır. Tarayıcıda çalışan bileşenlerin bu nedenle ayrı bir projeye ayrılması gerekir, böylece yalnızca sunucunun ihtiyaç duyduğu parçalar değil, yalnızca bu program kodu yüklenir. Blazor WebAssembly, .NET çalışma zamanını tarayıcıya yükleme ihtiyacı nedeniyle zaten diğer WebAssembly çözümlerinden önemli ölçüde daha büyüktür. Bu nedenle her optimizasyon önemlidir.

Eğer geliştiriciler her ikisi de Etkileşimli sunucu bileşenlerini kullanın birlikte Etkileşimli WebAssembly bileşenlerini kullanma Proje şablonunda etkinleştirirseniz ayrıca iki proje alacaksınız. Counter.razor bileşeni artık Önizleme 7’de tanıtılan “Otomatik” oluşturma modundadır:


@attribute [RenderModeAuto]


Otomatik mod, bir bileşenin ilk olarak Blazor Sunucusu aracılığıyla işlenmesini ve WebSocket bağlantısı aracılığıyla etkileşimli olmasını sağlar, böylece kullanıcının işleme için uzun süre beklemesine gerek kalmaz. Ancak bundan sonra tarayıcı .NET çalışma zamanını ve “.Client” projesinin derlemesini arka planda yükler. Ancak WebSocket bağlantısından Blazor WebAssembly’ye geçiş işlem sırasında gerçekleşmez, bunun yerine bileşenin bir sonraki etkinleştirilmesinde gerçekleşir. Ancak uygulamayı bir bütün olarak yeniden başlatmanıza gerek yoktur.



Haberin Sonu
 
Üst