2016-03-14 20 views
8

Tôi đang viết một ứng dụng ASP.NET 5 MVC 6 (Lõi). Bây giờ tôi đã đến một điểm mà tôi cần lưu trữ (đặt và nhận) một đối tượng trong bộ nhớ cache phiên (ISession).ASP.NET 5 (Core): Cách lưu trữ các đối tượng trong session-cache (ISession)?

Như bạn có thể biết, phương pháp Set của ISession mất byte-array và phương thức Get -method trả về một.

Trong ứng dụng không phải lõi, tôi sẽ sử dụng BinaryFormatter để chuyển đổi đối tượng của mình. Nhưng làm thế nào tôi có thể làm điều đó trong một ứng dụng lõi?

Trả lời

14

Tôi muốn đi tuần tự hóa các đối tượng vào JSON và sử dụng các phương pháp tiện ích mở rộng trên ISession để lưu chúng dưới dạng string.

// 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); 

Phương pháp mở rộng trên ISession được xác định trong không gian tên Microsoft.AspNet(Core).Http.

+0

Cảm ơn câu trả lời của bạn. Chuyển đổi sang Json cho mỗi cuộc gọi phiên (có thể gần như mỗi yêu cầu) thực hiện không? Tôi có nên coi đây là giải pháp sạch hay là giải pháp có sẵn tốt nhất không? – evaenrique

+2

Bạn có thể đọc [thảo luận này về việc tuần tự hóa nhị phân] (https://github.com/dotnet/corefx/issues/6564) trên repnet github dotnet và tại sao nó sẽ không được hỗ trợ. –

+1

@evaenrique phỏng đoán của tôi là nó hoạt động hiệu quả hơn so với chuỗi nhị phân (de) trên mỗi yêu cầu. Bạn có thể xem xét việc sử dụng [protobuf.net] (https://github.com/mgravell/protobuf-net) là một trình tuần tự nhị phân và rất nhanh. –

Các vấn đề liên quan