.net core依赖注入
.net core依赖注入小结
#依赖注入介绍
.net core 中依赖注入是必不可少的一项必学内容,官方介绍为:依赖注入是一种软件设计模式,指一个或多个依赖(或服务)被注入,或通过引用传递,传入一个依赖对象(或客户端)并成为客户状态的一部分。该模式通过自身的行为分离了客户依赖的创建,允许程序设计是松耦合的,同时遵循依赖倒置和单一职责原则。与服务定位器模式直接进行对比,并允许客户了解他们用来查找依赖的机制。
以上是官方的说法,这里补充一下我个人的看法。当然依赖注入的方式有两个,一个是服务注入,另一个是EF注入,目前只了解了服务注入。
##依赖
当一个类需要另一个类协作来完成工作的时候就产生了依赖,使用接口或基类将依赖关系实现抽象化。
将服务注入到使用它的类的构造函数中。 框架负责创建依赖关系的实例,并在不再需要时将其释放。
比如我们在HomeController这个类中需要完成登录的时候,需要我们通过实现另外一个接口ILogin来完成,那这时候HomeC ontroller就可以依赖于ILogin。这里有一个设计原则:依赖于抽象,而不是具体的实现。临时写了一个简易demo,业务不通别见怪。。可能直接上代码好理解一点:
###HomeController
public class HomeController : Controller{private readonly ILogin _login;//构造函数注入的方式注入public HomeController(ILogin login)//依赖于ILogin{_login= login;}public string Login(){return _login.GetLogin("xjm1").UserName;}}
###ILogin(登录接口)
///定义登录接口public interface ILogin {User GetLogin(string UserName);}
###MockLogin(接口实现类)
///ILogin的实现类public class MockLogin: ILogin {private List<User> _user;//初始化一些基本用户信息public MockLogin(){_user= new List<User>(){new User(){ UserName = "xjm1",PassWord= "1111",E_mail = "xjm1@126.com"},new User(){ UserName = "xjm2",PassWord= "2222",E_mail = "xjm2@126.com"},new User(){ UserName = "xjm3",PassWord= "3333",E_mail = "xjm3@126.com"}};}public User GetLogin(string UserName){return _user.FirstOrDefault(a => a.UserName == UserName);}}
###User(用户信息实体类)
///用户信息实体类public class User{//public int Id { get; set; }public string UserName { get; set; }public string PassWord{ get; set; }public string E_mail { get; set; }}
##注册服务
在服务容器中注册依赖关系。 ASP.NET Core 提供了一个内置的服务容器 IServiceProvider。 服务通常已在应用的 Startup.ConfigureServices 方法中注册。(绑定业务接口与实现类)
public void ConfigureServices(IServiceCollection services){services.AddMvc();services.AddSingleton<ILogin ,MockLogin>();//services.AddScoped<ServerInterface, ServerTest1>(); //每次请求,都获取一个新的实例,同一个请求获取多次会得到相同的实例。//services.AddTransient<ServerInterface, ServerTest1>(); //每次请求,都获取一个新的实例,即使同一个请求获取多次也会是不同的实例//services.AddSingleton<ServerInterface, ServerTest1>(); //单例模式,每次都获取同一个实例(和静态类几乎一样)}
##启动Home
public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseStaticFiles();app.UseMvc(routes =>{routes.MapRoute(name: "default",template: "{controller=Home}/{action=Login}/{id?}");});app.Run(async (context) =>{await context.Response.WriteAsync("testdemo!");});}
其实这些东西很早很早之前就已经接触了,奈何现在重拾,点滴积累,做个笔记,道友共勉~~
.net core依赖注入相关推荐
- everythingtoolbar.dll”或它的一个依赖项。_ASP.NET Core依赖注入最佳实践、提示和技巧...
译者前言 本文译自ABP框架的开发博客<ASP.NET Core Dependency Injection Best Practices, Tips & Tricks>一文(原作者 ...
- 探索 .NET Core 依赖注入的 IServiceProvider
在上一篇文章中,我们学习了Microsoft.Extensions.DependencyInjection中的IServiceCollection,包括服务注册转换为ServiceDescriptor ...
- ASP.NET Core依赖注入最佳实践,提示技巧
分享翻译一篇Abp框架作者(Halil İbrahim Kalkan)关于ASP.NET Core依赖注入的博文. 在本文中,我将分享我在ASP.NET Core应用程序中使用依赖注入的经验和建议. ...
- ASP.NET Core依赖注入深入讨论
这篇文章我们来深入探讨ASP.NET Core.MVC Core中的依赖注入,我们将示范几乎所有可能的操作把依赖项注入到组件中. 依赖注入是ASP.NET Core的核心,它能让您应用程序中的组件增强 ...
- ASP.NET Core依赖注入容器中的动态服务注册
介绍 在ASP.NET Core中,每当我们将服务作为依赖项注入时,都必须将此服务注册到ASP.NET Core依赖项注入容器.但是,一个接一个地注册服务不仅繁琐且耗时,而且容易出错.因此,在这里,我 ...
- .Net Core 依赖注入
.Net Core 依赖注入 为什么要使用依赖注入框架 .Net Core DI 核心类 三种生命周期 服务注册 单例注册 作用域注册 瞬时注册 直接注入实例 工厂模式注册 注册不同实例 尝试注册 移 ...
- 【ASP.NET Core】ASP.NET Core 依赖注入
一.什么是依赖注入(Denpendency Injection) 这也是个老身常谈的问题,到底依赖注入是什么? 为什么要用它? 初学者特别容易对控制反转IOC(Iversion of Control) ...
- 一文读懂Asp.net core 依赖注入(Dependency injection)
一.什么是依赖注入 首先在Asp.net core中是支持依赖注入软件设计模式,或者说依赖注入是asp.net core的核心: 依赖注入(DI)和控制反转(IOC)基本是一个意思,因为说起来谁都离不 ...
- 全面理解 ASP.NET Core 依赖注入
DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET Core的DI实现以及对实例 ...
最新文章
- 什么叫做多媒体计算机技术,多媒体计算机系统是什么
- tcp/ip 协议栈Linux源码分析一 IPv4分片报文重组分析一
- springboot-cache的简单使用
- C 语言的可变参数表函数的设计
- [转]Eclipse+pydev 常用快捷键
- Ubuntu Touch未来支持对用户数据加密
- 比特率 波特率 带宽与容量
- C++ Primer Plus学习:第十三章
- win10系统更新后打开chrome浏览器几秒后自动闪退
- T32:第一次出现的字符
- 是否应该删除Windows 7 Service Pack备份文件以节省空间?
- Java大作业——手把手教你写俄罗斯方块
- 电脑快捷方式删除文件后四种找回方法
- C#卸载程序需要密码/防卸载功能
- 最近使用的一款session工具:sa-Token
- 7-1 厘米换算英尺英寸 (15 分)
- 网站防御cdn和高防服务器,高防IP和高防CDN哪个防护更好?
- 搭建jenkins共享库使用Jenkins Shared Library
- From表单的属性action和method
- 普希金:假如生活欺骗了你