2013-04-08 17 views
5

Tôi đang đề xuất sử dụng một đối tượng phiên đơn giản trong một MVC3 để duy trì dữ liệu trạng thái như RecordIds thay vì chuyển chúng qua tất cả các trang phía máy khách sẽ là một rắc rối. Có vẻ đơn giản hơn rất nhiều khi chỉ cư trú đối tượng phiên một lần cho đến khi không còn sử dụng nữa.Sử dụng các đối tượng Phiên trong MVC, Có thực sự xấu không?

Vì vậy, đây là thực tế có thể chấp nhận được hay gian lận ??

Rất cám ơn.

+1

Ive đã bỏ phiếu để đóng này vì nó sẽ thu hút cuộc tranh luận về sự ủng hộ và chống đối. Nó không phù hợp cho QA. Điều đó nói rằng, có một số câu hỏi tương tự trên SO: http://stackoverflow.com/questions/10181629/why-session-is-a-disaster-in-asp-net-mvc-application và http://stackoverflow.com/câu hỏi/6165241/asp-net-mvc-session – Jamiec

Trả lời

7

Không có gì sai khi sử dụng đối tượng Phiên. Nói chung mọi người tránh chúng để giảm tải trên máy chủ; nhưng nếu bạn đang cẩn thận và không cố gắng đặt nhiều dữ liệu vào đó và không có quá nhiều dữ liệu (số lượng quá nhiều phụ thuộc vào máy chủ của bạn) thì đó là thực tiễn có thể chấp nhận được.

Đối với một số thông tin về những hạn chế tiềm năng của việc sử dụng phiên kiểm tra the answer để Still ok to use Session variables in ASP.NET mvc, or is there a better alternative for some things (like a cart)

+0

Cảm ơn, hữu ích. Tôi luôn nghĩ rằng đó là một thứ giống như sử dụng câu lệnh "GoTo" trong mã hóa. Có vẻ như không đúng ngữ cảnh. – SamJolly

+0

Ví dụ hay với giỏ hàng. Tôi thực sự chuyển dữ liệu xung quanh một luồng công việc, nhưng mỗi bước công việc có thể truy cập vào một bộ điều khiển khác để thực hiện công việc của nó. – SamJolly

6

Giống như tất cả mọi thứ trong cuộc sống phát triển của, sử dụng phiên là một trade-off, và một IMHO nó thường là một xấu.

Trạng thái phiên không chỉ gây tải trên máy chủ có xu hướng phát triển và tạo rào cản khả năng mở rộng (cả hai vấn đề có thể được giải quyết một phần bằng cách lưu biến phiên với máy chủ trạng thái hoặc máy chủ sql). mọi người đều nhận thức được: Nó duy trì một khóa đọc-đọc trên phiên. (http://msdn.microsoft.com/en-us/library/ms178581(v=vs.100).aspx)

Điều này có nghĩa là theo mặc định, không thể yêu cầu đồng thời hai người dùng. Hành vi này là asp.net liên quan (không chỉ asp.net MVC), tuy nhiên kể từ khi asp.net MVC thực sự khuyến khích bạn đi xuống đường ajax, bạn sẽ thấy vấn đề này thường xuyên hơn nhiều). Bạn có thể bỏ qua những vấn đề này bằng cách sử dụng thông minh readonly session state or selectively disabling it, nhưng từ kinh nghiệm của tôi tạo ra chi phí phát triển, vì thuộc tính đó chỉ có thể được khai báo trên phạm vi lớp, chứ không phải cho các phương thức hành động cụ thể. thường sẽ nằm lại với nhau.

Tóm lại, danh dự của bạn, hành vi mặc định trạng thái phiên asp.net là có vấn đề. Tránh sử dụng nó nếu có thể.

+1

Bằng chứng của bạn được đón nhận ân cần! Bây giờ tòa án sẽ hoãn lại để kết luận những phát hiện của nó :) – SamJolly

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