2011-12-15 35 views
7

Tôi đã nghe nói rằng MVC .NET là không trạng thái. Các hệ lụy của điều này là gì và tại sao MVC lại vô quốc tịch.Is ASP.NET MVC stateless?

+3

Có lẽ điều có ý nghĩa là nó không giữ cho ViewState, giống như các trang web ASP.NET. Điều đó đúng. Lựa chọn đó phù hợp hơn với bản chất không trạng thái của HTTP và có thể là lý do tại sao nó được chọn. Chỉ có các nhà thiết kế mới có thể nói với bất kỳ sự bảo đảm nào, mặc dù tôi, cho một người, vui mừng trong thực tế. – tvanfosson

+0

Bạn có thể vui lòng cung cấp thêm thông tin hoặc liên kết không? Khi nó đứng ngay bây giờ, câu hỏi của bạn được dựa trên một tuyên bố không rõ về một "thực tế" nghi ngờ. – 7hi4g0

Trả lời

7

MVC là không trạng thái vì HTTP là. Không có gì trong HTTP cho biết thời điểm phiên bắt đầu hoặc kết thúc.

Mọi khuôn khổ web cố gắng khắc phục điều này bằng cách sử dụng cookie hoặc các tính năng Yêu cầu/phản hồi như chuỗi truy vấn hoặc MẪU HÌNH.

+3

Bạn có nghĩa là mọi thứ trên HTTP là không quốc tịch? WebForms cũng chạy trên HTTP. –

+2

@Henk WebForms sử dụng viewstate và POST để duy trì trạng thái. – Ryan

+2

@HenkHolterman: Có. HTTP là không trạng thái. Không có "phiên". WebForms bắt chước phiên bằng cách sử dụng hết thời gian chờ và truyền thông tin của nó qua cấu trúc yêu cầu/phản hồi. Bạn sẽ không bao giờ được thông báo trong HTTP khi người dùng đóng trình duyệt web/"phiên". – jgauffin

5

MVC không hoàn toàn không có quốc tịch. Không có khung web.

Tôi nghĩ điều này đề cập đến thực tế là MVC xóa bỏ trường _VIEWSTATE.

Nhưng hãy cung cấp liên kết hoặc thông tin khác.

2

Tôi muốn nói rằng tất cả các liên lạc trên web là không trạng thái ngoại trừ một số công nghệ mới như SignalR [Async signaling library for ASP.NET to help build real-time, multi-user interactive web applications] .

Bạn đưa ra yêu cầu và nhận phản hồi, có nghĩa là, có lẽ những gì bạn đang nghĩ đến không sử dụng ViewState như trong biểu mẫu web.

5

trang web không có quốc tịch, do đó mọi thứ được xây dựng trên http là không quốc tịch. bởi không quốc tịch, tôi có nghĩa là mỗi yêu cầu/phản hồi là một đơn vị nguyên tử không có kiến ​​thức về bất kỳ yêu cầu nào trước đó.

có các cơ chế với http cho phép bạn giữ một số dạng trạng thái giữa các yêu cầu như Phiên và Ứng dụng, nhưng nói chung, chúng nên được sử dụng ít nhất có thể.

Biểu mẫu web cố gắng tạo ảo giác về trạng thái bằng cách giới thiệu ViewState và Postback. Nhưng điều này không thay đổi thực tế rằng trang web là không quốc tịch.

8

Nhà nước được quản lý trong ASP.NET (MVC và WebForms) thông qua several means:

  • phiên
  • Cookies
  • Mẫu viết
  • Application
  • chuỗi truy vấn
  • cache
  • Bối cảnh

MVC loại bỏ ViewState, điều đó có nghĩa là các điều khiển (hộp văn bản, hộp kiểm, v.v.) mất giá trị mỗi khi trang được đăng lại. Bạn cần phải repopulate chúng bằng tay hoặc thông qua các phương tiện khác (mô hình ràng buộc, ví dụ).

MVC không thực sự vô quốc tịch, nhưng nó loại bỏ một trong những cách phổ biến nhất để duy trì trạng thái trong ASP.NET - khung nhìn ViewState.