Ai đó có thể giải thích trong ít hơn 2 câu sự khác biệt giữa cả hai? Vâng, tôi biết google có thể cung cấp hàng trăm câu trả lời nhưng không phải là một trong 2 câu rõ ràng :)
Ai đó có thể giải thích trong ít hơn 2 câu sự khác biệt giữa cả hai? Vâng, tôi biết google có thể cung cấp hàng trăm câu trả lời nhưng không phải là một trong 2 câu rõ ràng :)
Câu trả lời:
HttpHandler là nơi đào tạo yêu cầu. HttpModule là một trạm trên đường đi.
Hai câu:
Một HTTPModule sẽ thực thi cho mọi yêu cầu đến ứng dụng của bạn, bất kể tiện ích mở rộng và thường được sử dụng cho những thứ như bảo mật, thống kê, ghi nhật ký, v.v.
Một httpHandler thường được liên kết với một tiện ích mở rộng cụ thể và được sử dụng cho những thứ như nguồn cấp RSS, tạo hoặc sửa đổi hình ảnh động và tương tự.
Giải thích thêm một chút nếu điều đó không hoàn toàn rõ ràng:
Cách tôi nghĩ về chúng - các mô-đun "cắm" vào đường ống yêu cầu, trong khi các trình xử lý "xử lý" một phần mở rộng tệp cụ thể. Vì vậy, nếu bạn đã có một trang web với LoggingModule và PdfHandler, cả hai sẽ thực thi một yêu cầu tới http://example.com/sample.pdf và mô-đun đăng nhập sẽ thực hiện một yêu cầu tới http: // example.com/page.aspx .
Có một bài viết khá rõ ràng về sự khác biệt trên MSDN: Tổng quan về Trình xử lý HTTP và Mô-đun HTTP
ProcessRequest
. Mặt khác, mô-đun sẽ thực thi tại bất kỳ điểm nào trong vòng đời mà bạn kết nối nó. Đối với kịch bản của bạn muốn chạy một cái gì đó trước trang aspx, bạn muốn có một mô-đun. Tuy nhiên, bạn cần lọc thủ công các yêu cầu đến các trang không phải là .aspx
Mục tiêu chính và phổ biến của HttpHandler và HttpModule là tiêm logic tiền xử lý trước khi yêu cầu ASP.NET đến Máy chủ IIS.
ASP.NET cung cấp hai cách tiêm logic trong đường ống yêu cầu;
ví dụ: Nguồn cấp RSS: Để tạo nguồn cấp RSS cho trang Web, bạn có thể tạo trình xử lý phát ra XML có định dạng RSS. Vì vậy, khi người dùng gửi yêu cầu đến trang web của bạn kết thúc bằng .rss, ASP.NET gọi trình xử lý của bạn để xử lý yêu cầu.
Có ba bước liên quan đến việc tạo Handler 1. Thực hiện giao diện IHttpHandler. 2. Đăng ký trình xử lý trong tệp web.config hoặc machine.config. 3. Ánh xạ phần mở rộng tệp (* .arshad) sang aspnet_isapi.dll trong IIS.
Giao diện IHttpHandler có phương thức ProcessRequest và thuộc tính IsReables cần được triển khai. ProcessRequest: Trong phương thức này, bạn viết mã tạo ra đầu ra cho trình xử lý. IsResuable: Thuộc tính này cho biết trình xử lý này có thể được sử dụng lại hay không.
Bạn có thể đăng ký trình xử lý trong tệp web.config như thế này
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
Lưu ý: ở đây chúng tôi đang xử lý bất kỳ tên tệp nào với phần mở rộng arshad.
Công cụ ASP.NET phát ra rất nhiều sự kiện khi yêu cầu chuyển qua đường ống yêu cầu. Một số trong những sự kiện đó là AuthenticicateRequest, AuthorizeRequest, BeginRequest, EndRequest. Bằng cách sử dụng HttpModule, bạn có thể viết logic trong các sự kiện này. Các logic này được thực thi khi các sự kiện bắt đầu và trước khi yêu cầu đến IIS.
Có hai bước liên quan đến việc tạo Mô-đun, 1. Thực hiện giao diện IHttpModule 2. Đăng ký mô-đun trong tệp web.config hoặc machine.config
ví dụ: Bảo mật: Sử dụng mô-đun HTTP, bạn có thể thực hiện xác thực tùy chỉnh hoặc kiểm tra bảo mật khác trước khi yêu cầu đến IIS.
Trình xử lý HTTP là quá trình chạy để đáp ứng yêu cầu đối với ứng dụng Web ASP.NET. Các mô-đun HTTP cho phép bạn kiểm tra các yêu cầu đến và đi và thực hiện hành động dựa trên yêu cầu.
HttpHandler chịu trách nhiệm xử lý yêu cầu http bằng tiện ích mở rộng trong khi HttpModule đang phản hồi các sự kiện trong vòng đời của ứng dụng.
Bài viết hay về nó httpModule-and-HttpHandlers
Tham khảo: INFO: Mô-đun HTTP HTTP và Trình xử lý HTTP Tổng quan
Các mô-đun được gọi trước và sau khi xử lý thực thi. Các mô-đun cho phép các nhà phát triển chặn, tham gia hoặc sửa đổi từng yêu cầu riêng lẻ. Xử lý được sử dụng để xử lý các yêu cầu điểm cuối cá nhân. Trình xử lý cho phép ASP.NET Framework xử lý các URL HTTP riêng lẻ hoặc các nhóm tiện ích mở rộng URL trong một ứng dụng. Không giống như các mô-đun, chỉ có một trình xử lý được sử dụng để xử lý yêu cầu.
Trình xử lý HTTP là nơi thực sự biên dịch được thực hiện dựa trên cài đặt. chẳng hạn như nếu phần mở rộng trang là .aspx thì nó sẽ biên dịch thông qua system.web.Ui.Pagahandlefactory. một khi quá trình biên dịch được thực hiện tại yêu cầu xử lý HTTP sẽ đi qua mô-đun HTTP và IIS.
Trình xử lý HTTP
HTTP Handler là quá trình chạy để đáp ứng yêu cầu HTTP. Vì vậy, bất cứ khi nào người dùng yêu cầu một tệp, nó được xử lý bởi trình xử lý dựa trên phần mở rộng. Vì vậy, trình xử lý http tùy chỉnh được tạo khi bạn cần xử lý đặc biệt dựa trên phần mở rộng tên tệp. Hãy xem xét một ví dụ để tạo RSS cho một trang web. Vì vậy, hãy tạo một trình xử lý tạo XML có định dạng RSS. Bây giờ liên kết phần mở rộng .rss với trình xử lý tùy chỉnh.
Mô-đun HTTP
Các mô-đun HTTP được cắm vào vòng đời của một yêu cầu. Vì vậy, khi một yêu cầu được xử lý, nó được chuyển qua tất cả các mô-đun trong đường ống của yêu cầu. Vì vậy, nói chung các mô-đun http được sử dụng cho:
Bảo mật: Để xác thực một yêu cầu trước khi yêu cầu được xử lý.
Thống kê và ghi nhật ký: Vì các mô-đun được gọi cho mọi yêu cầu, chúng có thể được sử dụng để thu thập số liệu thống kê và ghi thông tin.
Tiêu đề tùy chỉnh: Vì phản hồi có thể được sửa đổi, người ta có thể thêm thông tin tiêu đề tùy chỉnh vào phản hồi.