【问题标题】:What's the performance difference between HttpModule and Global.aspx?HttpModule 和 Global.aspx 之间的性能差异是什么?
【发布时间】:2009-02-21 15:03:53
【问题描述】:

我制作了一个网络应用程序,我在其中使用了一个模块,该模块在没有“www”网址 (http://example.com/) 的情况下重定向到带有“www”网址 (http://www.example.com/) 的模块。但是由于我在共享托管服务器上,我没有实现 HttpModule 的权限,所以我尝试了使用 Global.asax 文件的相同模块代码。这行得通!

我使用以下 (Application_BeginRequest()) 事件来实现我的 HttpModule 功能。

void Application_BeginRequest()
{
  //module code
}

模块和应用程序在 Global.asax 文件中运行良好且正确,但我担心性能。

为什么我们在 asp.net 中使用 HTTPModules 如果我们可以使用 Global.asax 文件实现相同的功能。两者之间是否存在性能差异。或者在使用 Global.asax 文件而不是 HttpModule 时我需要担心的任何区别??

请解释一下!

【问题讨论】:

    标签: c# web-applications asp.net-2.0 httpmodule global-asax


    【解决方案1】:

    Global.asax 继承自 HTTPApplication,HTTPModules 必须实现 IHTTPInterface。
    HTTPModules Init 方法获取传入的 HTTPApplication 对象。
    在 Init 方法中,您可以挂钩 HTTPApplication 的事件。

    我建议尽可能使用 HTTPModules。
    尤其是如果您制作收缩包装的软件,客户可以用他们自己的替换您的 global.asax。

    【讨论】:

    • 我也更喜欢 HTTPModules 而不是 Global.asax 但是在我的共享托管服务器上,当我尝试实现 HttpModule 时,它​​会给我“500 Insternal Server Error”。这就是我选择 Global.asax 的原因
    • 还有一件事,我没有得到“特别是如果您制作收缩包装的软件,客户可以用他们自己的替换您的 global.asax。”这行你的答案?什么是“收缩包装软件”以及客户如何替换 global.asax 文件?
    • 在运行时,Global.asax 被解析并编译为从 HttpApplication 基类派生的动态生成的 .NET Framework 类。如果您销售软件包(收缩包装),客户可以更改 global.asax
    • HTTP 模块已编译,运行时不可更改
    • 我不认为性能差异是值得担心的。他们都在使用 HTTPApplication 对象。唯一的问题是:每次更改 global.asax 时,都会重新编译。
    【解决方案2】:

    几乎没有区别。 HTTPModules 的目的是为了清晰和分离。人们通常会通过多个 HTTPModule 管道请求,这是 global.asax 无法实现的。

    【讨论】:

    • 好的,这意味着这两种方法在性能方面没有区别。 Caz 这对我很重要 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多