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

专业的门户网站建设局域网建设网站视频教程

专业的门户网站建设,局域网建设网站视频教程,商城网站如何优化,南宁做网站哪家好IOC模式和依赖注入是近年来非常流行的一种模式#xff0c;相信大家都不陌生了#xff0c;在Asp.Net Core中提供了依赖注入作为内置的基础设施#xff0c;如果仍不熟悉依赖注入的读者#xff0c;可以看看由我们翻译的Asp.Net Core中文文档中依赖注入的相关章节: ASP.NET Cor… IOC模式和依赖注入是近年来非常流行的一种模式相信大家都不陌生了在Asp.Net Core中提供了依赖注入作为内置的基础设施如果仍不熟悉依赖注入的读者可以看看由我们翻译的Asp.Net Core中文文档中依赖注入的相关章节: ASP.NET Core 中文文档 第三章 原理10依赖注入。基于IoC的重要性AspectCore在提供Aop特性的同时同样提供了可以和Aop无缝集成使用的轻量级、高性能IoC容器AspectCore.Injector。 开始使用 AspectCore.Injector内置在AspectCore.Core包中我们可以通过nuget获取   Install-Package AspectCore.Core -pre 容器和服务注册 在AspectCore.Injector中容器命名为IServiceContainer使用容器的默认实现来创建一个容器并且提供了类型实例和工厂三种方式来注册服务 IServiceContainer services new ServiceContainer();//使用类型注册服务services.AddTypeILogger, Logger();//使用实例注册服务服务的生命周期限定为单例services.AddInstanceITaskService(new TaskService());//使用委托工厂注册服务services.AddDelegateITaskService, TaskService(resolver new TaskService()); 服务解析 AspectCore.Injector通过IServiceResolver来解析服务 //创建服务解析器IServiceResolver serviceResolver services.Build();//解析单个服务ISampleService sampleService serviceResolver.ResolveISampleService();//解析单个服务并且验证是否为null为null则抛出异常ISampleService sampleServiceRequired serviceResolver.ResolveRequiredISampleService();//解析服务集合如果未注册则为空集合IEnumerableISampleService sampleServices serviceResolver.ResolveManyISampleService(); 依赖注入 AspectCore.Injector提供构造器注入和属性两种方式 public interface ISampleService{}public class SampleService : ISampleService{  private readonly ISampleRepository _sampleRepository;  private readonly ILogger _logger;    //构造器注入public SampleService(ISampleRepository sampleRepository, ILogger logger)    {_sampleRepository sampleRepository;_logger logger;} }public interface ISampleRepository{ }public class SampleRepository : ISampleRepository{    //属性注入。属性注入的条件为标记FromContainer特性并且允许set。满足条件的属性自动注入[FromContainer]   public ILogger Logger { get; set; } } 生命周期 AspectCore.Injector提供以下生命周期 瞬时 瞬时Transient生命周期服务在它们每次请求时被创建。这一生命周期适合轻量级的无状态的服务。 作用域 作用域Scoped生命周期服务在每个作用域内被创建一次。 单例 单例Singleton生命周期服务在它们第一次被解析时创建并且每个后续解析将使用相同的实例。如果你的应用程序需要单例行为建议让服务容器管理服务的生命周期而不是在自己的类中实现单例模式和管理对象的生命周期。 Aop集成 在AspectCore.Injector中默认开启在AspectCore.DynamicProxy的Aop集成并可通过IServiceContainer的Configure方法进行Aop的配置。 services.Configure(config {config.Interceptors.AddTypedSampleInterceptor(); }); 在Asp.Net Core中使用AspectCore.Injector 安装AspectCore.Extensions.DependencyInjection nuget包    Install-Package AspectCore.Extensions.DependencyInjection -pre 在修改ConfigureServices public IServiceProvider ConfigureServices(IServiceCollection services){    //添加你的服务...//将IServiceCollection的服务添加到ServiceContainer容器中var container services.ToServiceContainer();    return container.Build(); } 只需要两行代码即可在Asp.Net Core中使用AspectCore.Injector替换默认的DependencyInjection。 性能 Autofac是目前.net/.net core较为流行的IoC容器之一我们把Autofac(4.6.2版本)作为性能对比目标。分别从解析简单对象属性注入和构造器注入三个方面对比性能。 Benckmark类编写如下 [AllStatisticsColumn] [MemoryDiagnoser]public class Benckmarks{    private readonly IServiceResolver serviceResolver;    private readonly IContainer container;    public Benckmarks()    {        var containerBuilder new ContainerBuilder();containerBuilder.RegisterTypeLogger().AsILogger().InstancePerDependency();containerBuilder.RegisterTypeTaskService().AsITaskService().InstancePerDependency();containerBuilder.RegisterTypeSampleRepository().AsISampleRepository().InstancePerDependencontainerBuilder.RegisterTypeSampleService2().AsISampleService().InstancePerDependency();container containerBuilder.Build();        var serviceContainer new ServiceContainer();serviceContainer.AddTypeILogger, Logger(Lifetime.Transient);serviceContainer.AddTypeITaskService, TaskService(Lifetime.Transient);serviceContainer.AddTypeISampleRepository, SampleRepository(Lifetime.Transient);serviceContainer.AddTypeISampleService, SampleService2(Lifetime.Transient);serviceResolver serviceContainer.Build();}[Benchmark]    public object Autofac_Sample_Resolve()    {          return container.ResolveITaskService();}[Benchmark]      public object AspectCore_Sample_Resolve()    {         return serviceResolver.ResolveITaskService();}[Benchmark]      public object Autofac_PropertyInjection()    {         return container.ResolveISampleRepository();}[Benchmark]     public object AspectCore_PropertyInjection()    {           return serviceResolver.ResolveISampleRepository();    }    [Benchmark]       public object Autofac_ConstructorInjection()    {             return container.ResolveISampleService();    }    [Benchmark]    public object AspectCore_ConstructorInjection()    {        return serviceResolver.ResolveISampleService();    } } 使用Release模式运行Benchmark BenchmarkDotNetv0.10.8, OSWindows 10 Threshold 2 (10.0.10586) ProcessorIntel Core i5-4590 CPU 3.30GHz (Haswell), ProcessorCount4Frequency3215206 Hz, Resolution311.0221 ns, TimerTSC dotnet cli version2.0.0[Host]     : .NET Core 4.6.00001.0, 64bit RyuJITDefaultJob : .NET Core 4.6.00001.0, 64bit RyuJIT|                          Method |        Mean |         Min |         Max |         Op/s |  Gen 0 | Allocated ||-------------------------------- |------------:|------------:|------------:|-------------:|-------:|----------:||          Autofac_Sample_Resolve |   494.83 ns |   482.52 ns |   506.58 ns |  2,020,908.9 | 0.2384 |     752 B ||       AspectCore_Sample_Resolve |    88.52 ns |    87.92 ns |    89.31 ns | 11,296,837.3 | 0.0279 |      88 B ||       Autofac_PropertyInjection | 2,014.46 ns | 2,004.18 ns | 2,028.83 ns |    496,411.0 | 0.5875 |    1856 B ||    AspectCore_PropertyInjection |   307.55 ns |   303.61 ns |   310.74 ns |  3,251,544.6 | 0.1063 |     336 B ||    Autofac_ConstructorInjection | 1,465.71 ns | 1,454.43 ns | 1,480.38 ns |    682,263.5 | 0.6084 |    1920 B || AspectCore_ConstructorInjection |   284.94 ns |   283.55 ns |   286.05 ns |  3,509,500.8 | 0.0987 |     312 B | 有问题反馈 SampleIoC-Sample 如果您有任何问题请提交 Issue 给我们。 Github : https://github.com/dotnetcore/AspectCore-Framework 原文地址http://www.cnblogs.com/liuhaoyang/p/dependencyinjection-in-aspectcore.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.sadfv.cn/news/301962/

相关文章:

  • php网站建设实例黄页网络的推广软件下载
  • 亚马逊购物网站烟台做网站的
  • 怎么把自己做的网站登录到网上网站数据流程
  • 微营销网站建设聊城设计网站
  • 网站后台登陆不了学校资源网站的建设方案
  • 广州门户网站开发公司软件管理软件
  • 电子政务网站设计网站开发的目标
  • 怎样做网站外链两学一做网站链接
  • 网站备案简单吗建设网站不用模板可以吗
  • 网站横幅怎么更换东方建设集团有限公司网站
  • 网站怎么做移动端的中国菲律宾南海争端
  • 做58网站怎么赚钱吗广告传媒公司简介
  • 蒙牛网站建设方案专门做视频的网站吗
  • 烟台定制网站建设电话青岛建设局官方网站
  • 烟台网站建设策划方案会计事务所
  • 给文字做网站链接成都建设网站那个好
  • 现在网站用什么软件做注册公司怎么收费标准
  • 织梦网站添加搜索功能网站开发的大学生应届简历
  • 网站地址跟网页地址区别yangdesign工业设计公司
  • iis 提示网站到期公司做网站让我们销售
  • 网站开发技术方案wordpress外贸网站建设
  • 做h5的网站eup电子商务入门
  • 长春建站模板搭建在俄罗斯用钱让女性做h事情的网站
  • 怎样把网站做成app网站怎么自己做服务器
  • 做培训网站前端网站设计 素材
  • 网站排名制作公司浙江省工程建设信息网
  • 网站建设与管理心得体会软件开发 网站开发公司
  • 湛江公司网站建设中国工业品网
  • 北洼路网站建设开发企业网站设计
  • 口碑好的做pc端网站好设计官网