Aracılığıyla paylaş


ASP.NET Core artımlı oturum durumu geçişine ASP.NET

Oturum Durumu

ASP.NET Framework'teki oturum durumu, ASP.NET Core'un sağlamadığı bir dizi özellik sağladı. Bağdaştırıcılar, ASP.NET Framework'ten Core'a güncelleştirmek için, oturum durumunun aynı davranışla System.Web doldurulmasını sağlayan mekanizmalar sağlar. Çerçeve ve çekirdek arasındaki farklardan bazıları şunlardır:

  • ASP.NET Framework bir oturum içindeki oturum kullanımını kilitler, bu nedenle bir oturumdaki sonraki istekler seri bir şekilde işlenir. Bu, bu garantilerin hiçbirini sağlamayan ASP.NET Core'dan farklıdır.
  • ASP.NET Framework nesneleri otomatik olarak seri hale getirip seri durumdan çıkartır (bellek içinde yapılmadığı sürece). ASP.NET Core, belirli bir anahtarı depolamak için bir byte[] mekanizma sağlar. Herhangi bir nesne serileştirme/seri durumdan çıkarma, kullanıcı tarafından el ile yapılmalıdır.

Bağdaştırıcı altyapısı, herhangi bir oturum depolama sistemini uygulamak için kullanılabilecek iki arabirimi kullanıma sunar. Bu sayfalar şunlardır:

  • Microsoft.AspNetCore.SystemWebAdapters.ISessionManager: Bu, bir HttpContext ve oturum meta verilerine geçirilen ve bir nesnenin döndürülmesini bekleyen tek bir ISessionState yönteme sahiptir.
  • Microsoft.AspNetCore.SystemWebAdapters.ISessionState: Bu, oturum nesnesinin durumunu açıklar. Türün arkası HttpSessionState olarak kullanılır.

Serileştirme

Bağdaştırıcılar güçlü türdeki oturum durumuyla çalışma olanağı sağladığından, türleri seri hale getirebilmeli ve seri durumdan çıkarabilmeliyiz. Bu, aracılığıyla Microsoft.AspNetCore.SystemWebAdapters.SessionState.Serialization.ISessionKeySerializerözelleştirilir.

aracılığıyla JsonSessionSerializerOptionsyapılandırılan bir varsayılan JSON uygulaması sağlanır:

  • RegisterKey<T>(string) - Oturum anahtarını bilinen bir türe kaydeder. Bu, oturum durumunu doğru seri hale getirmek/seri durumdan çıkarmak için gereklidir. Için kayıt olmadığı bir anahtar bulunursa bir hata oluşturulur ve oturum kullanılamaz.
builder.Services.AddSystemWebAdapters()
    .AddJsonSessionSerializer(options =>
    {
        // Serialization/deserialization requires each session key to be registered to a type
        options.RegisterKey<int>("test-value");
    });

Uygulamalar

Oturum durumu nesnesinin şu anda kullanıma sunulan iki uygulaması vardır ve her biri bazı özelliklerden ödün verilmektedir. Bir uygulama için en iyi seçenek, geçişin hangi bölümünde olduğuna bağlı olabilir ve zaman içinde değişebilir.

  • Kesin olarak yazıldı: Bir nesneye erişme olanağı sağlar ve beklenen türe yayınlanabilir
  • Kilitleme: Tek bir oturumdaki birden çok isteğin kuyruğa alınıp aynı anda oturuma erişmemesini sağlar
  • Tek başına: SessionState'e başvuran sınıf kitaplıklarındaki kodu değiştirmekten kaçınmak için ASP.NET Framework ile ASP.NET Core arasında oturum paylaşmadığınızda kullanın

Kullanılabilir uygulamalar aşağıdadır:

Uygulama Türü kesin olarak belirlenmiş Kilitleniyor Bağımsız
Uzak uygulama ✔️ ✔️
Sarmalanmış ASP.NET Çekirdek ✔️ ✔️