ASP.NET Web API和依賴注入
英文原文:ASP.NET Web API And Dependency Injection
ASP.NET Web API 中自帶了一個依賴解析器(Dependency Resolver)接口,允許我們向控制器注入依賴關系。不過,Mark Seemann 建議要達到此目的最好還是使用 IHttpControllerActivator 接口,并舉了兩個例子。
使用 IDependencyResolver 會帶來哪些問題呢?Mark 做出了解釋:
問題是,在某個(IDependencyResolver 的)實現中,你所得到的是一個 Type 實例,并要求返回一個對象,但你卻并不了解上下文信息。你不知道依賴關系圖有多深,并且當被多次要求提供相同服務的實例時,你并不知道這是來自同一個 HTTP 請求,還是多個并發的 HTTP 請求。
</blockquote>Mark 建議最好替換服務容器(Service Container)中的 IHttpControllerActivator 接口。IHttpControllerActivator 提供了 HttpRequestMessage 對象,可以提供上下文信息。他還列舉了兩個示例,一個是“使用簡單的自定義 DI 容器”,一個是“使用更加健壯的 DI 容器,Castle Windsor”。
注意,不管是哪種方法,每個請求都會創建一次控制器,并且在請求被處理后釋放這些控制器。區別主要在于解析類型的時候,容器可以使用哪些信息。 在更廣的范圍來說,這只是 ASP.NET 可擴展性的一個示例。
來自: InfoQ本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!