首页 > 编程语言 >ASP.NET Web API和依赖注入

ASP.NET Web API和依赖注入

时间:2022-10-24 13:33:32浏览次数:67  
标签:Web ASP Mark API NET IHttpControllerActivator

ASP.NET Web API中自带了一个​​依赖解析器​​​(Dependency Resolver)接口,允许我们向控制器注入依赖关系。不过,​​Mark Seemann​​​建议要达到此目的最好还是使用​​IHttpControllerActivator​​接口,并举了两个例子。

使用IDependencyResolver会带来哪些问题呢?Mark做出了解释:

问题是,在某个(IDependencyResolver的)实现中,你所得到的是一个​​Type​​实例,并要求返回一个对象,但你却并不了解上下文信息。你不知道依赖关系图有多深,并且当被多次要求提供相同服务的实例时,你并不知道这是来自同一个HTTP请求,还是多个并发的HTTP请求。

Mark建议最好替换​​服务容器​​​(Service Container)中的​​IHttpControllerActivator​​​接口。IHttpControllerActivator提供了​​HttpRequestMessage​​​对象,可以提供上下文信息。他还列举了两个示例,一个是“​​使用简单的自定义DI容器​​​”,一个是“​​使用更加健壮的DI容器,Castle Windsor​​​”、(​​Autofac ASP.NET Web API (Beta) Integration​​)。

注意,不管是哪种方法,每个请求都会创建一次控制器,并且在请求被处理后释放这些控制器。区别主要在于解析类型的时候,容器可以使用哪些信息。 在更广的范围来说,这只是​​ASP.NET可扩展性​​的一个示例。

 

查看英文原文:​​ASP.NET Web API And Dependency Injection​

​Dependency Injection with ASP.NET Web API and Autofac​



标签:Web,ASP,Mark,API,NET,IHttpControllerActivator
From: https://blog.51cto.com/shanyou/5789508

相关文章