ASP中核心依赖注入系列教程的控制反转(IoC) 网
前言
ASP。NET Core在启动和后续处理每个请求的过程中,需要相应的组件在每个环节提供相应的服务。为了便于定制这些组件,ASP.NET通过定义接口来标准化它们。我们称这些标准化组件为服务,ASP.NET维护阿迪集装箱提供所需的服务。要理解这个DI容器和现实中的服务提供机制,首先要知道什么是DI(依赖注入),一旦提到DI,就不得不说IoC(控制的逆)。
第一,过程控制的逆转
我听过很多人把IoC形容为“面向对象的设计模式”,但在我看来,IoC不能算是“设计模式”,与“面向对象”没有直接关系。很多人之所以不能准确理解IoC,是因为忽略了最根本的东西,那就是IoC这个短语。换句话说,很多人对IoC有很多误解,因为他们忽略了IoC的定义。
IoC全称是控制反转,中文翻译为“控制反转”或“控制反转”。无论控制权是反向还是反向,都意味着控制权的转移,即原来的控制权在A手里,现在需要B接手。那么,对于软件设计来说,国际奥委会所谓的控制权转移是如何体现的呢?要回答这个问题,我们需要知道IoC的C(Control)指的是什么样的控制。在我看来,这里所谓的控制更多的体现为一种“过程控制”。
我们用一个具体的例子来说明传统设计采用IoC后,过程的控制是如何反转的。例如,我们现在正在为Web设计一个MVC类库,它可能被命名为MvcLib。MvcLib提供了如下所示的API来帮助我们完成整个HTTP请求过程中的主要任务。具体来说,ListenAndReceiveRequest方法启动一个监听器绑定到指定的地址来监听请求,接收到的请求通过一个请求对象返回。ActivateController方法根据接收到的请求解析并激活请求的目标控制器。ExecuteContrller方法执行激活的控制器,并返回表示视图的视图对象。RenderView最终将视图对象转换为HTML,并作为当前请求响应的内容。
公共静态类MvcLib {公共静态Request ListenAndReceiveRequest(Uri地址);公共静态控制器激活控制器(请求请求);公共静态视图执行控制器;公共静态空RenderView(视图视图);}现在我们基于这个MvcLib创建了一个真正的MVC应用程序,所以除了按照MvcLib的规范定制具体的Controller和View之外,还需要我们自己控制整个过程,包括请求的监控和接收、Controller的激活和执行以及View的最终呈现,这样的执行过程体现在下面显示的代码中。
公共类App { static void Main(string[]args){ Uri地址=new Uri(' http://localhost/mvcapp ');while(true){ Request Request=MvcLib。ListenAndReceiveRequest(地址);任务。Run(()=ProcessRequest(请求));} }私有静态void ProcessRequest(请求请求){ Controller controller=MvcLib。主动控制器(请求);View view=MvcLib。ExecuteContrller(控制器);MvcLib。RenderView(视图);}}这个例子反映了右图所示的流量控制模式,即我们设计的类库(MvcLib)只以API的形式提供单一功能的实现,应用(App)作为类库消费者需要自行安排整个工作流程。从复用的角度来看,这里复用的代码只是在某个环节实现单一功能的代码,安排整个工作流程的代码是不复用的。
当我们构建一个应用程序时,我们不仅需要一个可以提供API的类库,而且实际上它更合理
版权声明:ASP中核心依赖注入系列教程的控制反转(IoC) 网是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。