Dường như cả hai đều có mục đích tương tự. Nó sẽ là tuyệt vời để xem một số ví dụ khi sử dụng một trong những khác, thuận và chống, cũng như chỉ ra những khác biệt chính là gì.Khi nào sử dụng HttpMessageHandler vs ActionFilter?
Trả lời
Sự khác biệt chính giữa hai yếu tố này là trọng tâm của chúng. Thông báo Trình xử lý được áp dụng cho tất cả các yêu cầu HTTP. Họ thực hiện chức năng của một trung gian HTTP. Bộ lọc chỉ áp dụng cho các yêu cầu được gửi đến bộ điều khiển/hành động cụ thể nơi bộ lọc được áp dụng .
Bạn nên sử dụng MessageHandlers khi bạn muốn hành vi được áp dụng cho phần lớn các yêu cầu. Bộ lọc nên được sử dụng khi chúng chỉ áp dụng cho một số tài nguyên nhất định.
cũng có thể được áp dụng cho tất cả các yêu cầu HTTP, nếu chúng được thêm làm bộ lọc chung. – frennky
Đây là từ đâu? –
http://blogs.msdn.com/b/kiranchalla/archive/2012/05/05/asp-net-mvc4-web-api-stack-diagram.aspx –
Một sự khác biệt lớn giữa bộ xử lý và bộ lọc hành động là giai đoạn mà họ đang thực hiện. Các bộ lọc hành động được thực hiện sau khi điều khiển và mô hình ràng buộc đã xảy ra, vì vậy bạn có khả năng tương tác với cá thể bộ điều khiển đang xử lý yêu cầu, cũng như có quyền truy cập trực tiếp vào các đối tượng mô hình đã nhập được truyền vào phương thức hành động. Tôi đã sử dụng cách tiếp cận này để thực hiện việc ghi nhật ký các giá trị yêu cầu/đáp ứng nâng cao - bởi vì tôi có thể nhận được bộ điều khiển, tôi có thể ghi lại thông tin bổ sung về cách xử lý yêu cầu.
nhắn xử lý được thực hiện trước đó trong quá trình này, và hoạt động gần gũi hơn với các giá trị yêu cầu thô/phản ứng so với các bộ lọc (đối chiếu các đối tượng HttpRequestMessage/HttpResponseMessage sử dụng trong xử lý với nhiều-giàu HttpActionContext và HttpActionExecutedContext các đối tượng có sẵn trong các bộ lọc). Điều này làm cho chúng có khả năng hiệu quả hơn đối với một số hoạt động, ví dụ, nếu bạn đang cố gắng xác định xem bạn có cần chấm dứt yêu cầu sớm hay không. Nếu bạn biết yêu cầu phải bị từ chối, trình xử lý sẽ cho phép bạn thực hiện việc này trước khi cơ sở hạ tầng WebApi đã đi đến nỗ lực của việc khởi tạo bộ điều khiển, thực hiện mô hình ràng buộc, v.v.
Sự khác biệt là các trình xử lý bị xích và bạn có nhiều quyền kiểm soát hơn về cách chuỗi được thực hiện. Mặc dù các bộ lọc được gọi theo thứ tự, việc thiết lập phản hồi trong một bộ lọc sẽ kết thúc yêu cầu một cách hiệu quả, ngăn không cho bộ lọc tiếp theo trong danh sách được thực thi. Ví dụ, nếu bạn có một bộ lọc đầu tiên trả về một yêu cầu xấu nếu mô hình của bạn là null và bộ lọc thứ hai để ghi lại yêu cầu, bộ lọc thứ hai của bạn sẽ không được thực hiện khi yêu cầu xấu được tạo bởi bộ lọc đầu tiên. Với một trình xử lý, nó vẫn có thể (mặc dù không nhất thiết phải được khuyến khích!) Để gọi trình xử lý bên trong và cho phép chuỗi xử lý hoạt động bình thường.
- 1. HttpMessageHandler vs DelegatingHandler
- 2. Khi nào sử dụng ServiceTracker vs ServiceReference
- 3. khi nào sử dụng Set vs. Collection?
- 4. Khi nào sử dụng EntityManager.find() vs EntityManager.getReference()
- 5. Khi nào sử dụng Literal vs LiteralControl?
- 6. Mocking HttpActionContext.ActionArguments khi thử nghiệm Web.Api ActionFilter
- 7. Khi nào sử dụng Singleton vs Transient vs Request sử dụng Ninject và MongoDB
- 8. MySQL vs MySQLi khi sử dụng PHP
- 9. Khi nào cần sử dụng Ống vs Khi sử dụng Bộ nhớ Chia sẻ
- 10. Khi nào nên sử dụng strtr vs str_replace?
- 11. Khi nào sử dụng MojoExecutionException vs MojoFailureException trong Maven
- 12. https vs ssl- khi nào sử dụng những gì
- 13. Khi nào sử dụng Application_Start vs Init trong Global.asax?
- 14. Song song với vs omp simd: khi nào sử dụng?
- 15. Khi nào nên sử dụng $ stderr vs STDERR trong Ruby?
- 16. JTable.clearSelection() vs Jtable.getSelectionModel.clearSelection() - Khi nào nên sử dụng cái gì?
- 17. Lịch add() vs roll() khi nào chúng ta sử dụng?
- 18. Khi nào nên sử dụng ReleaseComObject vs FinalReleaseComObject?
- 19. Khi nào sử dụng node.js so với sinatra vs ray?
- 20. Quyết định khi nào nên sử dụng XmlDocument vs XmlReader
- 21. Khi nào tôi nên sử dụng this.x vs var x?
- 22. Khi nào nên sử dụng Haystack/ElasticSearch vs ORango
- 23. Khi sử dụng static string vs #define
- 24. Cách triển khai HttpMessageHandler trong API Web?
- 25. Khi nào bạn nên sử dụng === vs ==,! == vs! =, V.v. trong javascript?
- 26. Khi nào nên sử dụng Class.isInstance() và khi nào thì sử dụng toán tử instanceof?
- 27. Có giá trị khi sử dụng map() vs cho không?
- 28. Storm vs. Trident: Khi không sử dụng Trident?
- 29. Sử dụng vs lambda
- 30. Sử dụng Unity để tiêm phụ thuộc vào một tùy chỉnh ActionFilter
http://forums.asp.net/t/1804456.aspx – user960567
Câu hỏi hay hơn có thể là khi sử dụng HttpMessageHandler so với * ActionFilter * chung. Điều đó có vẻ hơi mơ hồ hơn một chút. Bộ lọc –