2009-02-21 33 views
6

Tôi đã tạo một ứng dụng web nơi tôi đang sử dụng một mô-đun chuyển hướng mà không có url "www" (http://example.com/) với url "www" (http://www.example.com/). Nhưng như tôi đang trên máy chủ lưu trữ được chia sẻ, nơi tôi không có quyền thực hiện một HttpModule, sau đó tôi đã thử cùng một mã mô-đun với tệp Global.asax. Điều đó hoạt động!Sự khác nhau về hiệu suất giữa HttpModule và Global.aspx là gì?

Tôi đã sử dụng sự kiện sau (Application_BeginRequest()) để triển khai chức năng HttpModule của tôi.

void Application_BeginRequest() 
{ 
    //module code 
} 

Mô-đun và ứng dụng hoạt động tốt và chính xác từ tệp Global.asax Nhưng tôi lo lắng về hiệu suất.

Tại sao chúng tôi sử dụng HTTPModules trong asp.net Nếu chúng tôi có thể triển khai cùng một tệp Global.asax. Có sự khác biệt hiệu suất ay giữa cả hai. Hoặc bất kỳ sự khác biệt mà tôi cần phải lo lắng về khi sử dụng tập tin Global.asax thay vì HttpModule ??

Vui lòng giải thích!

Trả lời

4

Lợi ích toàn cầu.asax từ HTTPApplication và HTTPModules phải triển khai IHTTPInterface.
Phương thức HTTPModules Init nhận đối tượng HTTPApplication được truyền vào.
Trong phương thức Init bạn có thể móc vào các sự kiện của HTTPApplication.

Tôi khuyên bạn nên sử dụng HTTPModules ở mọi nơi bạn có thể.
Đặc biệt nếu bạn tạo phần mềm thu gọn, nơi khách hàng có thể thay thế global.asax của bạn bằng của riêng họ.

+0

Tôi cũng thích HTTPModules hơn Global.asax nhưng trên máy chủ lưu trữ được chia sẻ của tôi khi tôi cố gắng triển khai HttpModule thì nó mang lại cho tôi "500 lỗi máy chủ tạm thời". Đó là lý do tại sao tôi đang đi với Global.asax – Prashant

+0

Một điều nữa, tôi không nhận được "Đặc biệt là nếu bạn làm cho phần mềm thu nhỏ bọc, nơi khách hàng có thể thay thế global.asax của bạn với riêng của họ." dòng câu trả lời của bạn? "Phần mềm bao bọc" là gì và làm cách nào để khách hàng có thể thay thế tệp global.asax? – Prashant

+0

Khi chạy, Global.asax được phân tích và biên dịch thành một lớp .NET Framework được tạo động bắt nguồn từ lớp cơ sở HttpApplication. Nếu bạn bán gói phần mềm (thu nhỏ gói), khách hàng có thể thay đổi global.asax –

2

Có khá nhiều sự khác biệt. Điểm của HTTPModules là để rõ ràng và tách biệt. Thường thì mọi người sẽ yêu cầu thông qua một số HTTPModules, đó là thứ bạn không thể có với global.asax.

+1

Ok, điều đó có nghĩa là cả hai phương pháp đều không có sự khác biệt về hiệu suất. Caz quan trọng đối với tôi :) – Prashant

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