我一直在构建一个网络分析组件,我想将其包装为NuGet包。它有一个JavaScript跟踪器发送信息的端点,就像Google Analytics一样,以及一个用于查看结果的信息中心。
我将Glimpse视为如何构建可重用的ASP.Net组件的示例。 Glimpse功能通过Glimpse.axd HttpHandler端点提供。我想知道为什么采取这种方法?如果它只需要支持ASP.Net MVC,那么使用MVC或Web API控制器会更有意义吗?
编辑:澄清它是机制,而不是我很好奇的.axd扩展。
答案 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的核心,它完成了所有繁重的工作。
基本上IHttpHandler
和IHttpModule
实现只是GlimpseRuntime
的适配器才能使它与ASP.NET一起工作,Glimpse也有在OWIN上运行的实现,Nancy,...
使用IHttpHandler
和IHttpModule
的另一个好处是安装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请求,并提供见解和帮助 减少调试时间并赋予每个开发人员权力的工具 改进他们的网络应用程序。