C#中IOC和Di的比较

IOC叫做控制反转,可以理解为我要做一件事,分为1,2,3,4这4部,我们可以在一个函数实现这四步,控制反转就是将这个流程体现在框架中。将原来实现在应用程序流程控制转移到框架中,框架利用一个引擎驱动整个流程的执行。应用程序无需关心该工作流程的细节,他只需要启动这个引擎即可。但是这个引擎一旦被启动,框架就会按照预先编排好的流程进行工作,如果应用程序希望整个流程按照自己希望的方式被执行,针对流程的定制一般发生在启动引擎之前。

一般来说框架会以相应的行驶提供一系列的扩展点,应用程序则痛过定义扩展的方式实现对流程某个环节的定制。在引擎被启动之前,应用程序将所需的扩展注册到框架中。一旦引擎被正常启动,这些注册的扩展会自动参与到整个流程的执行过程中。

提到DI,依赖注入,是IOC的一种重要实现 
一个对象的创建往往会涉及到其他对象的创建,比如一个对象A的成员变量持有着另一个对象B的引用,这就是依赖,A依赖于B。IOC机制既然负责了对象的创建,那么这个依赖关系也就必须由IOC容器负责起来。负责的方式就是DI——依赖注入,通过将依赖关系写入配置文件,然后在创建有依赖关系的对象时,由IOC容器注入依赖的对象,如在创建A时,检查到有依赖关系,IOC容器就把A依赖的对象B创建后注入到A中(组装,通过反射机制实现),然后把A返回给对象请求者,完成工作。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我们可以使用 C# 语言和 ASP.NET MVC 框架来实现一个简单的登录功能,并使用三层架构、IoCDI 进行解耦。 首先,我们需要创建一个 ASP.NET MVC 项目,并添加需要的 NuGet 包,比如 Autofac、Autofac.Mvc5 等。 接下来,我们按照以下步骤进行实现: 1. 创建表示层(Presentation Layer):在 Controllers 文件夹下创建一个 LoginController,编写 Index 和 Login 两个 Action,分别对应登录页面和登录事件。在 Views 文件夹下创建 Login 文件夹,并添加 Index 和 Login 两个视图页面,用于显示登录页面和处理登录事件。 2. 创建业务逻辑层(Business Logic Layer):在 Services 文件夹下创建一个 ILoginService 接口,定义 Login 方法用于验证用户是否登录成功。在实现类 LoginService ,实现 ILoginService 接口,并添加 UserRepository 属性,用于访问数据访问层(Data Access Layer)。在 Login 方法,调用 UserRepository 的方法获取用户信息,比对用户名和密码是否正确,如果正确则返回 true,表示登录成功;否则返回 false,表示登录失败。 3. 创建数据访问层(Data Access Layer):在 Repositories 文件夹下创建一个 IUserRepository 接口,定义 GetUserByName 方法用于根据用户名获取用户信息。在实现类 UserRepository ,实现 IUserRepository 接口,并添加 DbContext 属性,用于访问数据库。在 GetUserByName 方法,调用 DbContext 的方法查询数据库,获取用户信息。 4. 配置 IoC 容器:在 App_Start 文件夹下创建一个 AutofacConfig 类,添加一个 Register 方法,用于注册 IoC 容器。在 Register 方法,添加对 LoginService 和 UserRepository 的注册,通过构造函数注入 DbContext。 5. 配置 DI 依赖:在 Global.asax.cs 文件,添加一个 Application_Start 方法,用于注册 DI 依赖。在 Application_Start 方法,调用 AutofacConfig 类的 Register 方法,注册 IoC 容器。 6. 运行测试:运行应用程序,访问登录页面,输入用户名和密码,点击登录按钮,程序会调用 LoginController 的 Login 方法,验证用户名和密码是否正确,如果正确则跳转到首页;否则返回登录页面并显示错误信息。 以上就是使用三层架构、IoCDI 实现简单登录的步骤,具体代码实现可以参考以下示例项目: https://github.com/autofac/Examples/tree/master/src/Mvc5Example
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值