为什么Glimpse使用HTTP处理程序而不是MVC控制器?

时间:2015-02-26 00:39:33

标签: asp.net asp.net-mvc httphandler glimpse

我一直在构建一个网络分析组件,我想将其包装为NuGet包。它有一个JavaScript跟踪器发送信息的端点,就像Google Analytics一样,以及一个用于查看结果的信息中心。

我将Glimpse视为如何构建可重用的ASP.Net组件的示例。 Glimpse功能通过Glimpse.axd HttpHandler端点提供。我想知道为什么采取这种方法?如果它只需要支持ASP.Net MVC,那么使用MVC或Web API控制器会更有意义吗?

编辑:澄清它是机制,而不是我很好奇的.axd扩展。

2 个答案:

答案 0 :(得分:2)

我认为您或多或少已经通过陈述

为您的问题提供了答案
  
    

如果只需要支持ASP.Net MVC,那么使用MVC或Web API控制器会更有意义吗

  

从这个角度来看,使用IHttpHandler方法似乎是合乎逻辑的,因为它是ASP.NET上运行的不同Web框架的最低公分母之一,而不依赖于这些框架。这样,您还可以防止将这些框架强制用于您的用户,尤其是在他们不使用这些框架的情况下。 Glimpse有一个插件模型,允许添加特定于这些Web框架的其他功能,但这是用户必须做出的决定。

作为旁注,Glimpse HttpHandler仅提供Glimpse相关资源(可通过Glimpse.axd访问配置页面,还可访问Glimpse客户端脚本,图像,存储数据访问...)。在Glimpse IHttpHandler旁边还有一个Glimpse IHttpModule,负责将GlimpseRuntime挂钩到ASP.NET运行时,这是Glimpse的核心,它完成了所有繁重的工作。

基本上IHttpHandlerIHttpModule实现只是GlimpseRuntime的适配器才能使它与ASP.NET一起工作,Glimpse也有在OWIN上运行的实现,Nancy,...

使用IHttpHandlerIHttpModule的另一个好处是安装Glimpse NuGet软件包,您已启动并运行Glimpse的方法,这使得Glimpse可用于只在web.config中注册HTTP处理程序和HTTP模块,没有额外的麻烦,例如需要注册的路由以使Glimpse Controller可访问等...所有这些都很容易与托管定义的其他路由冲突申请,......

TL; DR :尝试提供可重用的组件,至少是它的核心,对Web框架等的依赖性最小......,您可以随时根据这些Web提供其他软件包框架,如果他们添加仅适用于这些框架的其他功能。但是,如果您的可重用组件是例如ASP.NET MVC特定组件,那么这可能是您的共同点,请记住,您此时已经限制了组件在其他框架中的使用(这可能是完美的)上可接受的)

答案 1 :(得分:0)

.axd是识别Http处理程序的扩展。 Handler负责处理请求并为特定内容类型生成响应。 Http Handlers属于ASP.NET平台,它包含MVC,Web窗体和Web页面。

  

Glimpse会检查Web请求,并提供见解和帮助   减少调试时间并赋予每个开发人员权力的工具   改进他们的网络应用程序。