zoukankan      html  css  js  c++  java
  • .Net Core依赖注入和服务注册

    依赖注入和服务注册作为.Net Core最核心的模块  当然需要记录一下 个人学习和理解

    1.依赖注入 DI

    为什么需要DI,目的是什么? 

    之所以需要DI,是因为我们需要实现控制反转 (IOC) 。 (DI) 软件设计模式,这是一种在类及其依赖关系之间实现控制反转 (IoC) 的技术.他是作为实现IOC的框架和方式

    为什么需要控制反转(IOC),目的是什么?

    为了项目的高度可维护,核心是为了项目的解耦合     

    之前我们使用一个对象的时候,需要一步步的去new一个对象,如:我们获取西湖这个对象 就去new一个 中国-->浙江省-->杭州市-->西湖。 那么这个西湖就依赖于杭州市依赖于浙江省依赖于中国。。而IOC的目的就是我可以直接获取西湖这个对象,也不用去new它,也不用去管它到底跟谁有依赖关系,继承哪个父类,直接拿到这个对象,所有的依赖,都会被IOC容器帮我在内部生成的时候就已经实例好了。

        微软官方文档例子

    1首先声明一个Model类,2接着增加一个类的实体上下文对象,3然后去服务注册这个上下文,4最后就是调用了 对应以下四张图片

     

    2.服务注册

    服务注册是项目框架的生成和实现的业务需求的实现。(有内置的 和 自定义的)

    服务注册是在Startup类的ConfigureServices下的。项目在创建(Build)的时候就执行

    内置的服务,比如建立一个MVC项目 或者一个WebApi项目。那么在生成项目框架的时候,DIE自动为我们在ConfigureServices里添加了像services.AddControllers()控制器 services.AddRazorPages() 视图模板 services.AddMvc()等等,这些都是内置的服务,作为的项目的架构。。

    自定义的服务:注册自定义服务的时候必须选择一个生存周期(.Net Core有内置的三种生命周期 瞬时、单例、作用域。内置的服务其实也有声明周期,只是已经配置封装好了,所以看上去是一个services.AddMvc()等等 )   

    实例:如支付服务 Pay 有两种方式:支付宝、微信

    1首先创建一个服务接口pay,两种实现方式(微信 支付宝), 2选择生命周期方式,注册服务,3具体的服务调用  对应以下图

     

  • 相关阅读:
    种类并查集
    因式分解
    最长递增(不减)子序列
    C++之算法题模板
    线段树
    C++之环境搭建
    C++之vector用法
    逆序数以及右边更小数的个数
    Unity3d之动态连接Mesh Renderer和Collider
    Matlab之字符串处理
  • 原文地址:https://www.cnblogs.com/cr-cool/p/13383176.html
Copyright © 2011-2022 走看看