Tôi đang phát triển một ứng dụng trong asp.net MVC3 và tôi có các câu hỏi sau: Khi nào tôi nên viết mô-đun HTTP và khi nào tôi nên viết bộ lọc hành động?HTTP module vs bộ lọc hành động trong asp.net-mvc
Trả lời
Bộ lọc có nhiều cách tiếp cận MVC hơn khi làm việc trong khi Mô-đun Http có nhiều cách thức hoạt động của ASP.NET hơn. Cả hai đều phục vụ mục đích tương tự bằng cách cung cấp móc trong đường ống xử lý.
HttpModule là tổng quát hơn và khi bạn muốn một số thứ được xử lý theo mọi yêu cầu. Bộ lọc hữu ích cho việc thêm hành vi cụ thể của hành động.
Nếu bạn muốn thực hiện một số điều chỉ một lần cho mỗi yêu cầu Http, bạn nên sử dụng HttpModule. ActionFilter có thể được thực hiện nhiều lần trong một yêu cầu cho đến khi và trừ khi bạn kiểm tra IsChildActionOn.
HttpModule là cách IIS cho phép một ứng dụng Web để ghi đè lên hành vi mặc định hoặc thêm logic tùy chỉnh bằng cách cho phép bạn đính kèm xử lý sự kiện để HttpApplication sự kiện. Các chế độ IIS khác nhau (Tích hợp hoặc Cổ điển) thậm chí sử dụng có các cài đặt Web.config khác nhau.
tham khảo:
http://msdn.microsoft.com/en-us/library/ms227673(v=vs.100).aspx
Ví dụ: chuyển hướng phi www URL www
public void Init(HttpApplication application)
{
application.PreRequestHandlerExecute += this.Application_PreRequestHandlerExecute;
}
private void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
Uri requestUrl = HttpContext.Current.Request.Url;
string host = requestUrl.Authority.ToLower();
if (!host.StartsWith("www"))
{
HttpContext.Current.Response.Redirect(requestUrl.Scheme + "://www." + host + requestUrl.PathAndQuery);
HttpContext.Current.Response.End();
}
}
Một Filter Action là một thuộc tính trang trí bộ điều khiển hoặc các phương pháp hành động. Nó là một lớp trừu tượng giữa các phương thức định tuyến và hành động MVC. Với các bộ lọc hành động, chúng ta có thể áp dụng cùng một logic cho nhiều bộ điều khiển hoặc các phương thức hành động. ví dụ: ghi nhật ký tùy chỉnh.
HttpModule được gọi trước và sau khi trình xử lý yêu cầu thực thi. Chúng được thiết kế để cho phép nhà phát triển chặn, tham gia hoặc sửa đổi từng yêu cầu. Có 22 sự kiện có sẵn có thể được đăng ký để cho phép mô-đun hoạt động theo yêu cầu trong các giai đoạn khác nhau của quy trình. Các sự kiện này rất hữu ích cho các nhà phát triển trang, những người muốn chạy mã khi các sự kiện đường ống yêu cầu quan trọng được nâng lên. Chúng cũng hữu ích nếu bạn đang phát triển một mô-đun tùy chỉnh và bạn muốn mô-đun được gọi cho tất cả các yêu cầu đến đường dẫn.
Bộ lọc được thiết kế để chèn logic vào giữa vòng đời yêu cầu MVC. Cụ thể trước và sau khi hành động được gọi, cũng như, trước và sau khi kết quả được xử lý. Bộ lọc cung cấp cho người dùng các cách mạnh mẽ để kiểm tra, phân tích, chụp và sử dụng một số thứ xung quanh trong các dự án MVC. Tính đến MVC5, có 5 loại bộ lọc:
- Xác thực
- Authorization
- Action
- quả
- Exception
Vì vậy, nếu bạn muốn chặn, tham gia, hoặc sửa đổi cụ thể trong số 22 events in the http request pipeline chọn mô-đun.Nếu logic của bạn là có liên quan chặt chẽ với phương pháp hành động mà bạn máy chủ tốt hơn trọng một trong những phương pháp ActionFilterAttribute sau:
- OnActionExecuting
- OnActionExecutted
- OnResultExecuting
- OnResultExecuted
- 1. Ủy quyền bộ lọc so với Bộ lọc hành động
- 2. Bộ lọc hành động không đồng bộ trong MVC 4
- 3. Truy cập dữ liệu của Bộ lọc Hành động trong Bộ điều khiển Hành động
- 4. Servlet vs Bộ lọc
- 5. .NET Module vs Assembly
- 6. Grails lọc nhiều hành động
- 7. Grep vs Bộ lọc trong jQuery?
- 8. Autofac không điền thuộc tính bộ lọc hành động
- 9. Tiêm thuộc tính vào Bộ lọc hành động
- 10. Ghi đè bộ lọc hành động toàn cầu
- 11. Bỏ qua Lọc trên Hành động cụ thể khi bộ lọc hành động được đăng ký trên toàn cầu
- 12. Nhận tên người dùng trên bộ lọc hành động
- 13. AOP vs Bộ lọc MVC Thuộc tính và Bộ chặn
- 14. bộ lọc hành động không đồng bộ: Async & AuthorizeAttribute trong ASP.NET WEB API
- 15. ASP.Net MVC Authorization lọc hành động
- 16. Bắt các giá trị của các thông số hành động trong vòng một bộ lọc hành động
- 17. Bộ chặn chặn lò xo vs bộ lọc servlet
- 18. "Tự động" tạo bộ lọc trong NEST
- 19. Class vs Module trong việc thiết kế Ruby API?
- 20. Zend module trong module
- 21. ASP.NET MVC: Đăng ký bộ lọc hành động mà không sửa đổi bộ điều khiển
- 22. Bật lọc có chọn lọc cho một số hành động nhất định trong CakePHP
- 23. Giảm thiểu thuộc tính bộ lọc hành động trong ASP.NET MVC
- 24. Một cách để loại trừ bộ lọc hành động trong ASP.NET MVC?
- 25. Rails ActiveAdmin: Cách đặt bộ lọc ở trên cùng trong hành động chỉ mục
- 26. Bộ lọc Javascript vs vấn đề bản đồ
- 27. Sử dụng bộ lọc hành động trên MVC C# sử dụng chuỗi truy vấn
- 28. Lọc một tập trong Clojure clojure.set/chọn vs clojure.core/lọc
- 29. SQLAlchemy lọc in_ hành
- 30. bao gồm module trong bộ điều khiển