HttpModule和Global.aspx之间的性能差异是什么?

7
我制作了一个Web应用程序,其中使用了一个模块,该模块将没有“www”URL(http://example.com/)重定向到带有“www”URL(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时需要担心的任何差异?

请解释一下!

2个回答

4

Global.asax继承自HTTPApplication,而HTTPModules必须实现IHTTPInterface接口。
Init方法会传入HTTPApplication对象。
在Init方法中,您可以连接到HTTPApplication的事件。

我建议尽可能使用HTTPModules。
特别是当您制作收缩包软件时,客户可以用自己的global.asax替换您的文件。


还有一件事,我没有理解你回答中的“特别是如果您制作了可以缩小包装的软件,客户可以用自己的global.asax文件替换您的文件。”这句话。什么是“缩小包装的软件”,客户如何替换global.asax文件? - djmzfKnm
建议使用HttpModules代替HttpApplication(Global)。+1 - Cerebrus
+1 对于“解析和编译”概念的更好解释和提出好观点。 - djmzfKnm
2
我认为性能差异不是什么需要担心的事情。它们都使用HTTPApplication对象。唯一的问题是:每次更改global.asax时,它都会重新编译。 - Kb.
"500内部服务器错误"可能是web.config文件的问题吗?也许你可以单独发布一个帖子来解决这个问题? - Kb.
显示剩余4条评论

2

实际上没有太大的区别。HTTPModules 的目的在于清晰和分离。通常人们会通过多个 HTTPModules 管道传输请求,这是使用 global.asax 无法实现的。


1
好的,这意味着两种方法在性能方面没有区别。因为这对我很重要 :) - djmzfKnm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接