2016-03-14 26 views
8

Bir ASP.NET 5 MVC 6 (Çekirdek) uygulaması yazıyorum. Şimdi oturum önbelleğinde (ISession) bir nesneyi saklamak (ayarlamak ve almak) gereken bir noktaya geldim. ASP.NET 5 (Çekirdek): Nesneleri oturum önbelleğinde (İşlevi) nasıl depolarım?

Bildiğiniz gibi

, ISession ait Set kullanılan yöntem bir byte-array ve bir döner kullanılan yöntem Get sürer.

Çekirdek dışı uygulamada, nesneyi dönüştürmek için BinaryFormatter kullanırdım. Ama bunu bir çekirdek uygulamada nasıl yapabilirim?

cevap

14

Nesneleri JSON'a serileştirmek ve ISession uzantıları yöntemlerini kullanarak bunları string 's olarak kaydetmek istiyorum. ISession üzerinde

// Save 
var key = "my-key"; 
var str = JsonConvert.SerializeObject(obj); 
context.Session.SetString(key, str); 

// Retrieve 
var str = context.Session.GetString(key); 
var obj = JsonConvert.DeserializeObject<MyType>(str); 

uzantısı yöntemleri Microsoft.AspNet(Core).Http ad tanımlanır.

+0

Cevabınız için teşekkür ederiz. Her oturum çağrısı için Json'a dönüşüyor (neredeyse her istekte olabilir) performans mı? Bunu temiz bir çözüm mü yoksa en uygun çözüm olarak mı kullanmalıyım? – evaenrique

+2

dotnet github repo'da [ikili serileştirme hakkında bu tartışmayı] (https://github.com/dotnet/corefx/issues/6564) ve neden desteklenmeyeceğini okuyabilirsiniz. –

+1

@evaenrique, tahminimce, her istekte ikili (de) serileştirmeden çok daha performanslıdır. İkili bir seri hale getirici olan ve çok hızlı olan [protobuf.net] 'i (https://github.com/mgravell/protobuf-net) kullanmayı düşünebilirsiniz. –