当前位置: 首页 > news >正文

九曲网站建设成都房地产交易中心官网

九曲网站建设,成都房地产交易中心官网,无经验可以做网站编辑吗,网页设计与网站建设选择题05 | 依赖注入#xff1a;良好架构的起点为什么要使用依赖注入框架借助依赖注入框架#xff0c;我们可以轻松管理类之间的依赖#xff0c;帮助我们在构建应用时遵循设计原则#xff0c;确保代码的可维护性和可扩展性ASP.NET Core 的整个架构中#xff0c;依赖注入框架提供… 05 | 依赖注入良好架构的起点为什么要使用依赖注入框架借助依赖注入框架我们可以轻松管理类之间的依赖帮助我们在构建应用时遵循设计原则确保代码的可维护性和可扩展性ASP.NET Core 的整个架构中依赖注入框架提供了对象创建和生命周期管理的核心能力各个组件相互协作也是由依赖注入框架的能力来实现的组件包Microsoft.Extensions.DependencyInjection.AbstractionsMicrosoft.Extensions.DependencyInjection依赖注入的核心是以上两个组件包一个是抽象包一个是具体的实现这里用到了一个经典的设计模式接口实现分离模式组件只需要依赖抽象接口而不需要依赖具体实现当使用的时候注入它的具体实现即可这样做的好处是可以在使用时决定具体的实现也就意味着未来可以做任意的扩展替换依赖注入框架的具体实现默认情况下使用 .NET Core 提供的内置依赖注入框架也可以使用第三方的依赖注入框架来替换默认实现核心类型IServiceCollection服务的注册ServiceDescriptor每一个服务注册时的信息IServiceProvider具体的容器由 ServiceCollection Build 产生IServiceScope一个容器的子容器的生命周期生命周期单例 Singleton在整个根容器的生命周期内都是单例不管是子容器还是根容器与作用域的区别是一个是全局的一个是范围的单例作用域 Scoped在 Scope 的生存周期内也就是容器的生存周期内或者子容器的生存周期内如果我的容器释放掉我的对象也会释放掉瞬时暂时Transient每一次从容器里面获取对象时都可以得到一个全新的对象新建一个 ASP.NET Core Web 应用程序 DependencyInjectionDemo选择API添加一个 Services 文件夹新建三个服务代表三个生命周期的服务namespace DependencyInjectionDemo.Services {public interface IMyScopedService { }public class MyScopedService : IMyScopedService{} }namespace DependencyInjectionDemo.Services {public interface IMySingletonService { }public class MySingletonService : IMySingletonService{} }namespace DependencyInjectionDemo.Services {public interface IMyTransientService { }public class MyTransientService : IMyTransientService{} }在 Startup 中注册服务public void ConfigureServices(IServiceCollection services) {#region 注册服务不同生命周期的服务// 将单例的服务注册为单例的模式services.AddSingletonIMySingletonService, MySingletonService();// Scoped 的服务注册为 Scoped 的生命周期services.AddScopedIMyScopedService, MyScopedService();// 瞬时的服务注册为瞬时的生命周期services.AddTransientIMyTransientService, MyTransientService();#endregionservices.AddControllers(); }在 Controller 里面获取我们的服务// FromServices 标注的作用是从容器里面获取我们的对象 // 每个对象获取两遍用于对比每个生命周期获取的对象是什么样子的 // HashCode 代表对象的唯一性 [HttpGet] public int GetService([FromServices]IMySingletonService singleton1,[FromServices]IMySingletonService singleton2,[FromServices]IMyTransientService transient1,[FromServices]IMyTransientService transient2,[FromServices]IMyScopedService scoped1,[FromServices]IMyScopedService scoped2) {Console.WriteLine($singleton1:{singleton1.GetHashCode()});Console.WriteLine($singleton2:{singleton2.GetHashCode()});Console.WriteLine($transient1:{transient1.GetHashCode()});Console.WriteLine($transient2:{transient2.GetHashCode()});Console.WriteLine($scoped1:{scoped1.GetHashCode()});Console.WriteLine($scoped2:{scoped2.GetHashCode()});Console.WriteLine($请求结束);return 1; }启动程序刷新浏览器再次访问接口输出如下单例模式两次的 HashCode 没有变化两个瞬时服务两次的 HashCode 完全不同意味着瞬时服务每次请求都会得到一个新对象范围服务每个请求内是相同的不同的请求之间得到的对象实例是不同的相关文章.NET Core开发实战第4课Startup掌握ASP.NET Core的启动过程--学习笔记
http://www.pierceye.com/news/745480/

相关文章:

  • 网站服务器网址招聘seo专员
  • 个人网站模板psd主机服务器网站 怎么做
  • 网站开发公司的义务深圳 电子商务网站开发
  • 北京外贸网站设计备案宁波网站推广专业的建站优化公司
  • 政协系统网站建设织梦手机网站
  • 网站建设上海网站制作如何修改上线网站
  • 漫画网站建设教程网站描述怎么设置
  • 网站左侧树形导航怎么做农村网站做移动
  • 建立企业网站方案php做简单网站教程
  • 一个网站交互怎么做的银行营销活动方案
  • 网站读取速度慢58同城二手房出售
  • 个人备案 网站名称 例子wordpress怎样下载
  • 郑州网络营销网站定制做网站服务
  • 学校网站英文怎么做souq网站
  • 原油可以取什么做标题发网站免费建网站哪个好
  • 莱特币做空 网站一个虚拟主机可以放几个网站
  • 注册个体可以做网站吗太平洋建设集团有限公司
  • 餐饮环境评估在哪个网站做天元建设集团有限公司法人
  • 汽车租赁网站开发网站建设实验周志与总结
  • 有没有哪个做美食的网站wordpress多用户模版
  • 网站关键词几个justnews wordpress
  • 创维爱内购网站2017网站设计尺寸
  • 网站建设的一般过程包括哪些方面手机免费制作app的软件下载
  • dw对网站建设有哪些作用深圳团购网站设计多少钱
  • 阿里巴巴网站详情页怎么做龙岩公司做网站
  • 网站后台这么做视频教程佛山百度seo排名
  • 网站建立吸引人的策划活动适合做推广的平台
  • 无锡市住房和城乡建设局网站昆明做网站的网络公司
  • 家居seo整站优化方案已经有了网站源代码怎样搭建
  • 红河州网站建设对网站做维护