.NET 11.0 Preview 5, Blazor'da sunucu tarafı statik oluşturmayı basitleştiriyor

Yaklaşan .NET sürüm 11.0'ın beşinci ön izleme sürümü dün gece yayınlandı. Aynı zamanda, .NET 11.0 için gerekli olan Visual Studio 2026'nın Insiders varyantının 11904.113 sürümü de mevcuttu. Alternatif olarak Visual Studio Code ve SDK'da bulunan komut satırı derleyicisiyle çalışabilirsiniz.

Duyurudan sonra devamını okuyun

Dr. Holger Schwichtenberg, .NET 10.0, C# 14.0, Blazor 10.0 ve Entity Framework Core 10.0 üzerine uzman kitapları yayınladı. www.IT-Visions.de'de danışman ve eğitmen olarak çalışmaktadır.

BetterCode() .NET 11.0

Bu, .NET 11.0'daki bir yeniliktir: Dr. Holger Schwichtenberg ve diğer uzmanlar, 17 Kasım 2026'da BetterCode() .NET 11.0 çevrimiçi konferansında .NET SDK, C# 15.0 ve daha fazlasındaki geliştiriciler için değişiklikleri sunacaklar. Program yayına girene kadar indirimli kör kuş biletleri mevcuttur.

.NET 8.0'da tanıtılan, ASP.NET Core MVC ve ASP.NET Core Razor Pages'ın yerine geçebilecek sunucu tarafı statik işlemede (Blazor Static SSR), tablo kontrolü çalışır QuickGridMicrosoft'un Microsoft.AspNetCore.Components.QuickGrid NuGet paketinde sağladığı özellikler şu ana kadar yalnızca sınırlıdır. Yalnızca Blazor Server ve Blazor WebAssembly'nin yanı sıra Blazor Hybrid'in etkileşimli çeşitleri aşağıdaki tüm işlevlere sahiptir: QuickGridkontrol mevcuttur.

Blazor 11.0 Preview 5'ten başlayarak bunun gerçekleşmesi mümkün QuickGridkontrol ayrıca sunucu tarafında statik olarak oluşturulan Blazor sayfalarını sıralayabilir ve yineleyebilir. Izgara etkileşimli olmadığında, sıralanabilir sütun başlıkları ve sayfada gezinme, durumlarını sorgu dizesi (URL) sorgu parametreleri aracılığıyla ileten genişletilmiş HTML formları olarak görünür. Kullanıcı sayfayı yeniden yüklerse veya URL'yi kopyalayıp tekrar açarsa sıralama ve mevcut sayfa korunur. Bu, bu durumları URL aracılığıyla paylaşmayı veya yer işareti olarak kaydetmeyi kolaylaştırır.

Ayrıca okuyun

Hızlı test şunu gösterdi: Veritabanında disk belleğine alınmış bir veri kaynağı olarak Entity Framework Core ile işbirliği içinde kaydırma, bir çalışma zamanı hatası oluşturuyor: “InvalidOperationException: Önceki bir işlem tamamlanmadan önce bu bağlam örneğinde ikinci bir işlem başlatıldı. Buna genellikle birkaç iş parçacığının aynı anda aynı DbContext örneğini kullanması neden olur.”

Duyurudan sonra devamını okuyun

Aşağıdaki örnek şu anda yalnızca tüm veri kümelerini ve sayfaları her zaman aracılığıyla RAM'e yüklediğinde doğru şekilde çalışmaktadır.

private List<BO.WWWings.Flight> flightSet => context.Flights.ToList();


@page "/QuickGridSSR"
@using Microsoft.AspNetCore.Components.QuickGrid
@using Microsoft.EntityFrameworkCore
@inject IDbContextFactory<DA.WWWings.WwwingsV1EnContext> DbFactory
@implements IAsyncDisposable
 
<PageTitle>QuickGrid SSR</PageTitle>
 
<h1>Sortieren und Paging beim QuickGrid bei Blazor Static SSR</h1>
 
<QuickGrid Class="table table-striped sticky-grid"
           Items="@flightSet" Pagination="@pagination">
 <PropertyColumn Property="@(p => p.FlightNo)" Title="FlugNr" Sortable="true" />
 <PropertyColumn Property="@(p => p.Departure)" Title="Abflugort" Sortable="true">
 </PropertyColumn>
 <PropertyColumn Property="@(p => p.Destination)" Title="Zielort" Sortable="true">
  </PropertyColumn>
 <PropertyColumn Property="@(p => p.FlightDate)" Title="Datum" Format="dd.MM.yyyy" Sortable="true" />
 <PropertyColumn Property="@(p => p.FreeSeats)" Title="Freie Plätze" />
</QuickGrid>
 
<Paginator State="@pagination" />
 
@code {
 private readonly PaginationState pagination = new() { ItemsPerPage = 15 };
 
 private DA.WWWings.WwwingsV1EnContext context;
 private IQueryable<BO.WWWings.Flight> flightSet => context.Flights;
  
 protected override void OnInitialized()
 {
  context = DbFactory.CreateDbContext();
 }
 
 // IAsyncDisposable implementieren, um den DbContext korrekt zu verwerfen, wenn die Komponente nicht mehr benötigt wird
 public async ValueTask DisposeAsync()
 {
  if (context != null)
  {
   await context.DisposeAsync();
  }
 }
}

Liste: Entity Framework Core aracılığıyla bir veritabanına erişime sahip Blazor Static SSR'li QuickGrid

Çalışma zamanındaki önceki liste (sayfa 1)

Çalışma zamanındaki önceki liste (sayfa 1)

Çalışma zamanındaki önceki liste (sayfa 1)

.NET 8.0'daki tanıtımından bu yana Blazor Static SSR, ASP.NET Core'da bulunan sunucu tarafı oturumlarını (tanımlama bilgileri) destekler .AspNetCore.Session sayfalar arasında veri aktarımı için oturum kimliğine sahip, verileri RAM'de veya kalıcı bellekte saklayan). Şimdiye kadar bunun geliştiriciler tarafından yapılması gerekiyordu. Session-İçindeki nesne HttpContext-JSON aracılığıyla nesneleri kullanın ve karmaşık nesneleri kendiniz serileştirin:


@inject IHttpContextAccessor HttpContextAccessor
…
var HttpContext = HttpContextAccessor.HttpContext;
var json = System.Text.Json.JsonSerializer.Serialize(regForm);
HttpContext.Session.SetString("Formulardaten", json);

sırasıyla


BO.RegistrationData daten = 
    System.Text.Json.JsonSerializer.Deserialize<BO.RegistrationData>(
        HttpContext.Session.GetString("Formulardaten") ?? string.Empty);

.NET 11.0 Preview 5'te Microsoft'un artık ek açıklaması var [SupplyParameterFromSession] oturum değişkenlerini yönetmeyi sorgu dizesi parametreleri kadar basit hale getiren özellik tanıtıldı [SupplyParameterFromQuery]verileri modellemek [SupplyParameterFromForm] ve TempData değerleri [SupplyParameterFromTempData]ancak bu son açıklama yalnızca .NET 11.0 Preview 4'te kullanıma sunuldu.

Geliştiriciler, bir sayfadaki bir veya daha fazla özelliğe ek açıklama ekler [SupplyParameterFromSession]. Basit ve karmaşık veri türleri mümkündür, ancak [SupplyParameterFromTempData] Önizleme 5'te bile yalnızca basit veri türleriyle çalışır:


[SupplyParameterFromSession]
public string Message { get; set; }
[SupplyParameterFromSession] 
public BO.RegistrationData RegData { get; set; }

Oturum değerleri System.Text.Json kullanılarak otomatik olarak JSON'a serileştirilir.

Geliştiriciler ilerleyen sayfalarda analog özellikleri beyan eder ve daha sonra başka bir işlem yapmadan değerlere erişebilirler. Daha önce olduğu gibi ön koşul, oturumların ana sayfada etkinleştirilmiş olmasıdır:


builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession();
…
app.UseSession();


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir