DryIoc

2025-12-07 0 961

DryIoc快速,小,全功能的IOC容器,适用于.NET

  • 专为低仪式使用,性能可扩展性而设计。

  • 目标:net45; netstandard2.0; netstandard2.1; net6.0; net8.0; net9.0

  • Nuget软件包

    • DryIoc .dll

    • DryIoc源代码

    • DryIoc 。内部(内部公共类型的源代码)

  • 发行说明::以前版本

  • 扩展和同伴

  • 使用CSTOMD创建实时文档

  • 贡献指南

  • DryIoc的两个原始部分现在是单独的项目:FastExpressionCompiler和Imtools

基准

性能概述

具有工作单位范围和40个依赖关系的对象图4级的现实场景

#44和#26中的更多详细信息。

列出的.MSDI软件包是分别的Microsoft.extensions.ipendentencyIndoction适配器

冷启动 – 注册服务,然后首次打开范围并解决根范围范围的服务(例如控制器)

DryIoc 6.0.0(.msdi 8.0.0),MSDI 9.0.0,Grace 7.2.1(.msdi 7.1.0),AutoFac 8.1.1(.msdi 10.0.0.0.0.0.0),Lamar 14.0.1

DryIoc | 65.70 us | 1.309 us | 2.553 us | 64.46 us | 1.00 | 0.05 | 5.2490 | 0.4883 | – | 32.74 KB | 1.00 |
| DryIoc _MsDI | 97.96 us | 1.959 us | 4.382 us | 96.59 us | 1.49 | 0.09 | 6.5918 | 0.6104 | – | 40.89 KB | 1.25 |
| MsDI | 81.25 us | 1.624 us | 4.686 us | 82.73 us | 1.24 | 0.08 | 14.8926 | – | – | 91.15 KB | 2.78 |
| Autofac | 323.50 us | 6.408 us | 8.555 us | 320.06 us | 4.93 | 0.23 | 49.8047 | – | – | 306.93 KB | 9.37 |
| Autofac_MsDI | 367.96 us | 7.324 us | 14.111 us | 362.58 us | 5.61 | 0.30 | 59.0820 | – | – | 364.77 KB | 11.14 |
| Lamar_MsDI | 3,643.30 us | 56.678 us | 55.666 us | 3,630.33 us | 55.53 | 2.25 | 82.0313 | 3.9063 | – | 524.96 KB | 16.03 |
| Grace | 13,870.26 us | 282.593 us | 824.337 us | 13,837.66 us | 211.41 | 14.82 | 109.3750 | 93.7500 | 15.6250 | 686.94 KB | 20.98 |
| Grace_MsDI | 17,079.41 us | 318.034 us | 326.598 us | 17,025.77 us | 260.33 | 10.92 | 125.0000 | 93.7500 | – | 854.11 KB | 26.09 |
\”>

BenchmarkDotNet v0.14.0, Windows 11 (10.0.22631.4391/23H2/2023Update/SunValley3)
Intel Core i9-8950HK CPU 2.90GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET SDK 9.0.100
  [ Host ]     : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2
  DefaultJob : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2

| Method       |         Mean |      Error |     StdDev |       Median |  Ratio | RatioSD |     Gen0 |    Gen1 |    Gen2 | Allocated | Alloc Ratio |
| ------------ | -----------: | ---------: | ---------: | -----------: | -----: | ------: | -------: | ------: | ------: | --------: | ----------: |
| DryIoc       |     65.70 us |   1.309 us |   2.553 us |     64.46 us |   1.00 |    0.05 |   5.2490 |  0.4883 |       - |  32.74 KB |        1.00 |
| DryIoc _MsDI  |     97.96 us |   1.959 us |   4.382 us |     96.59 us |   1.49 |    0.09 |   6.5918 |  0.6104 |       - |  40.89 KB |        1.25 |
| MsDI         |     81.25 us |   1.624 us |   4.686 us |     82.73 us |   1.24 |    0.08 |  14.8926 |       - |       - |  91.15 KB |        2.78 |
| Autofac      |    323.50 us |   6.408 us |   8.555 us |    320.06 us |   4.93 |    0.23 |  49.8047 |       - |       - | 306.93 KB |        9.37 |
| Autofac_MsDI |    367.96 us |   7.324 us |  14.111 us |    362.58 us |   5.61 |    0.30 |  59.0820 |       - |       - | 364.77 KB |       11.14 |
| Lamar_MsDI   |  3,643.30 us |  56.678 us |  55.666 us |  3,630.33 us |  55.53 |    2.25 |  82.0313 |  3.9063 |       - | 524.96 KB |       16.03 |
| Grace        | 13,870.26 us | 282.593 us | 824.337 us | 13,837.66 us | 211.41 |   14.82 | 109.3750 | 93.7500 | 15.6250 | 686.94 KB |       20.98 |
| Grace_MsDI   | 17,079.41 us | 318.034 us | 326.598 us | 17,025.77 us | 260.33 |   10.92 | 125.0000 | 93.7500 |       - | 854.11 KB |       26.09 |
比较较旧的版本

DryIoc 5.0.0(.msdi 6.0.0),MSDI 6.0.0,Grace 7.2.1(.msdi 7.1.0),AutoFac 6.3.0(.msdi 7.2.0),Lamar 8.0.1

DryIoc | 82.22 us | 1.209 us | 1.072 us | 1.00 | 0.00 | 6.3477 | 0.3662 | – | 39.42 KB |
| DryIoc _MsDI | 94.18 us | 1.207 us | 1.070 us | 1.15 | 0.02 | 8.0566 | 0.6104 | – | 49.87 KB |
| MsDI | 94.60 us | 0.715 us | 0.597 us | 1.15 | 0.01 | 11.8408 | 4.2725 | – | 72.59 KB |
| Autofac | 543.45 us | 4.570 us | 3.568 us | 6.60 | 0.10 | 51.7578 | 25.3906 | 1.9531 | 317.19 KB |
| Autofac_MsDI | 534.64 us | 5.919 us | 5.247 us | 6.50 | 0.10 | 54.6875 | 27.3438 | 1.9531 | 340.17 KB |
| Lamar_MsDI | 7,053.46 us | 140.273 us | 402.469 us | 77.97 | 2.84 | – | – | – | 649.68 KB |
| Grace | 15,990.58 us | 123.798 us | 109.744 us | 194.52 | 2.21 | 93.7500 | 31.2500 | – | 736.12 KB |
| Grace_MsDI | 18,884.30 us | 321.388 us | 268.373 us | 229.50 | 4.25 | 125.0000 | 62.5000 | – | 904.7 KB |\”>

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19043
Intel Core i9-8950HK CPU 2.90GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=6.0.201
  [ Host ]     : .NET Core 6.0.3 (CoreCLR 6.0.322.12309, CoreFX 6.0.322.12309), X64 RyuJIT
  DefaultJob : .NET Core 6.0.3 (CoreCLR 6.0.322.12309, CoreFX 6.0.322.12309), X64 RyuJIT

| Method       |         Mean |      Error |     StdDev |  Ratio | RatioSD |    Gen 0 |   Gen 1 |  Gen 2 | Allocated |
| ------------ | -----------: | ---------: | ---------: | -----: | ------: | -------: | ------: | -----: | --------: |
| DryIoc       |     82.22 us |   1.209 us |   1.072 us |   1.00 |    0.00 |   6.3477 |  0.3662 |      - |  39.42 KB |
| DryIoc _MsDI  |     94.18 us |   1.207 us |   1.070 us |   1.15 |    0.02 |   8.0566 |  0.6104 |      - |  49.87 KB |
| MsDI         |     94.60 us |   0.715 us |   0.597 us |   1.15 |    0.01 |  11.8408 |  4.2725 |      - |  72.59 KB |
| Autofac      |    543.45 us |   4.570 us |   3.568 us |   6.60 |    0.10 |  51.7578 | 25.3906 | 1.9531 | 317.19 KB |
| Autofac_MsDI |    534.64 us |   5.919 us |   5.247 us |   6.50 |    0.10 |  54.6875 | 27.3438 | 1.9531 | 340.17 KB |
| Lamar_MsDI   |  7,053.46 us | 140.273 us | 402.469 us |  77.97 |    2.84 |        - |       - |      - | 649.68 KB |
| Grace        | 15,990.58 us | 123.798 us | 109.744 us | 194.52 |    2.21 |  93.7500 | 31.2500 |      - | 736.12 KB |
| Grace_MsDI   | 18,884.30 us | 321.388 us | 268.373 us | 229.50 |    4.25 | 125.0000 | 62.5000 |      - |  904.7 KB | 

热门运行 – 打开示波器并在第n次解决根源范围的服务

DryIoc 6.0.0(.msdi 8.0.0),MSDI 9.0.0,Grace 7.2.1(.msdi 7.1.0),AutoFac 8.1.1(.msdi 10.0.0.0.0.0.0),Lamar 14.0.1

DryIoc | 1.357 us | 0.0105 us | 0.0093 us | 1.00 | 0.01 | 0.4730 | 0.0038 | 2.91 KB | 1.00 |
| DryIoc _MsDI | 1.815 us | 0.0126 us | 0.0118 us | 1.34 | 0.01 | 0.5074 | 0.0038 | 3.11 KB | 1.07 |
| MsDI | 2.800 us | 0.0146 us | 0.0114 us | 2.06 | 0.02 | 0.7896 | 0.0114 | 4.85 KB | 1.67 |
| Grace | 1.535 us | 0.0125 us | 0.0117 us | 1.13 | 0.01 | 0.5169 | 0.0038 | 3.17 KB | 1.09 |
| Grace_MsDI | 1.709 us | 0.0249 us | 0.0256 us | 1.26 | 0.02 | 0.5493 | 0.0038 | 3.37 KB | 1.16 |
| Lamar_MsDI | 5.314 us | 0.0197 us | 0.0184 us | 3.92 | 0.03 | 0.9689 | 0.9613 | 5.95 KB | 2.05 |
| Autofac | 36.715 us | 0.2231 us | 0.1863 us | 27.06 | 0.22 | 7.2021 | 0.4883 | 44.49 KB | 15.31 |
| Autofac_MsDI | 48.139 us | 0.6987 us | 0.6194 us | 35.48 | 0.50 | 10.1318 | 0.6714 | 62.27 KB | 21.42 |\”>

BenchmarkDotNet v0.14.0, Windows 11 (10.0.22631.4391/23H2/2023Update/SunValley3)
Intel Core i9-8950HK CPU 2.90GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET SDK 9.0.100
  [ Host ]     : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2
  DefaultJob : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2

| Method       |      Mean |     Error |    StdDev | Ratio | RatioSD |    Gen0 |   Gen1 | Allocated | Alloc Ratio |
| ------------ | --------: | --------: | --------: | ----: | ------: | ------: | -----: | --------: | ----------: |
| DryIoc       |  1.357 us | 0.0105 us | 0.0093 us |  1.00 |    0.01 |  0.4730 | 0.0038 |   2.91 KB |        1.00 |
| DryIoc _MsDI  |  1.815 us | 0.0126 us | 0.0118 us |  1.34 |    0.01 |  0.5074 | 0.0038 |   3.11 KB |        1.07 |
| MsDI         |  2.800 us | 0.0146 us | 0.0114 us |  2.06 |    0.02 |  0.7896 | 0.0114 |   4.85 KB |        1.67 |
| Grace        |  1.535 us | 0.0125 us | 0.0117 us |  1.13 |    0.01 |  0.5169 | 0.0038 |   3.17 KB |        1.09 |
| Grace_MsDI   |  1.709 us | 0.0249 us | 0.0256 us |  1.26 |    0.02 |  0.5493 | 0.0038 |   3.37 KB |        1.16 |
| Lamar_MsDI   |  5.314 us | 0.0197 us | 0.0184 us |  3.92 |    0.03 |  0.9689 | 0.9613 |   5.95 KB |        2.05 |
| Autofac      | 36.715 us | 0.2231 us | 0.1863 us | 27.06 |    0.22 |  7.2021 | 0.4883 |  44.49 KB |       15.31 |
| Autofac_MsDI | 48.139 us | 0.6987 us | 0.6194 us | 35.48 |    0.50 | 10.1318 | 0.6714 |  62.27 KB |       21.42 |
比较较旧的版本

DryIoc 5.0.0(.msdi 6.0.0),MSDI 6.0.0,Grace 7.2.1(.msdi 7.1.0),AutoFac 6.3.0(.msdi 7.2.0),Lamar 8.0.1

DryIoc | 1.535 us | 0.0143 us | 0.0111 us | 1.00 | 0.00 | 0.4749 | 0.0076 | – | 2.91 KB |
| DryIoc _MsDI | 2.405 us | 0.0277 us | 0.0246 us | 1.57 | 0.02 | 0.4807 | 0.0076 | – | 2.96 KB |
| MsDI | 3.655 us | 0.0726 us | 0.0807 us | 2.40 | 0.05 | 0.7629 | 0.0114 | – | 4.68 KB |
| Grace | 1.807 us | 0.0241 us | 0.0213 us | 1.18 | 0.02 | 0.5169 | 0.0076 | – | 3.17 KB |
| Grace_MsDI | 2.576 us | 0.0421 us | 0.0394 us | 1.68 | 0.03 | 0.5569 | 0.0076 | – | 3.41 KB |
| Lamar_MsDI | 6.673 us | 0.0876 us | 0.0732 us | 4.35 | 0.06 | 0.9995 | 0.4959 | – | 6.16 KB |
| Autofac | 47.040 us | 0.7367 us | 0.6531 us | 30.65 | 0.48 | 7.7515 | 0.6104 | – | 47.73 KB |
| Autofac_MsDI | 59.566 us | 0.8734 us | 0.7742 us | 38.76 | 0.61 | 11.3525 | 0.9155 | – | 69.59 KB |\”>

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19043
Intel Core i9-8950HK CPU 2.90GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=6.0.201
  [ Host ]     : .NET Core 6.0.3 (CoreCLR 6.0.322.12309, CoreFX 6.0.322.12309), X64 RyuJIT
  DefaultJob : .NET Core 6.0.3 (CoreCLR 6.0.322.12309, CoreFX 6.0.322.12309), X64 RyuJIT

| Method       |      Mean |     Error |    StdDev | Ratio | RatioSD |   Gen 0 |  Gen 1 | Gen 2 | Allocated |
| ------------ | --------: | --------: | --------: | ----: | ------: | ------: | -----: | ----: | --------: |
| DryIoc       |  1.535 us | 0.0143 us | 0.0111 us |  1.00 |    0.00 |  0.4749 | 0.0076 |     - |   2.91 KB |
| DryIoc _MsDI  |  2.405 us | 0.0277 us | 0.0246 us |  1.57 |    0.02 |  0.4807 | 0.0076 |     - |   2.96 KB |
| MsDI         |  3.655 us | 0.0726 us | 0.0807 us |  2.40 |    0.05 |  0.7629 | 0.0114 |     - |   4.68 KB |
| Grace        |  1.807 us | 0.0241 us | 0.0213 us |  1.18 |    0.02 |  0.5169 | 0.0076 |     - |   3.17 KB |
| Grace_MsDI   |  2.576 us | 0.0421 us | 0.0394 us |  1.68 |    0.03 |  0.5569 | 0.0076 |     - |   3.41 KB |
| Lamar_MsDI   |  6.673 us | 0.0876 us | 0.0732 us |  4.35 |    0.06 |  0.9995 | 0.4959 |     - |   6.16 KB |
| Autofac      | 47.040 us | 0.7367 us | 0.6531 us | 30.65 |    0.48 |  7.7515 | 0.6104 |     - |  47.73 KB |
| Autofac_MsDI | 59.566 us | 0.8734 us | 0.7742 us | 38.76 |    0.61 | 11.3525 | 0.9155 |     - |  69.59 KB | 

可靠性

  • 超过2000个测试用例涵盖了。
  • 线程安全和无锁的注册和决议。
  • 检测对象图中的递归依赖性(周期)。
  • 尽早提供很多细节。
  • 通过container.validate()为潜在分辨率问题提供诊断。

特征

不完整的功能列表

  • 对实施类型映射的服务注册(另外支持:注册一次,注册替换,删除注册)。
  • 委托工厂的注册并已经创建了服务实例。
  • 从提供的组件中的类型注册。
  • 注册用任意类型的服务密钥和单个服务的多个非钥匙实现的注册。
  • 根据上下文的条件注册。
  • 注册了相关的任意类型的元数据对象。
  • 解决和分辨。
  • 通过重复使用和终生范围的服务寿命控制:
    • 带有可选名称的嵌套一次性示波器
    • 可选的环境范围上下文
    • 重复使用类型:瞬态,单胎,以多种口味范围范围,包括对象图中的特定服务祖先的范围
    • 使用parrentReuse和usedEcoreTreereUse(用于装饰器)的选项
    • 预防疾病和弱参考的选项
  • 开放式支持,包括类型约束,方差,复杂的嵌套和重复定义。
  • 构造函数参数注入和可选属性和现场注入。
  • 参数注入的静态和实例工厂方法类似于构造函数参数注入。
  • 将属性和字段注入现有对象。
  • 装饰工:
    • 嵌套有相对顺序控制
    • 通用和非生成
    • 重复使用可能与装饰服务不同
    • 包装器的装饰师
  • 包装纸:
    • 服务收集:t [],iEnumerable <t>,LazyEnumerable <t>和i(readonly)收集|列表<t>
    • 单个服务包装器:懒惰<t>,func <t>,meta <tmetadata,t>或元组<tmetadata,t>,keyvaluepair <tkey,t>
    • 用func <targ,t>,func <targ1,targ2,t>等的构造函数或工厂方法参数的咖喱
    • 嵌套包装纸:例如元组<somemetadata,func <isomeservice >> []
    • 用户定义的包装纸
    • 合成的
  • 用户提供的解决未知服务的策略。
    • 动态注册提供商
    • 可选的自动混凝土类型分辨率

分辨率选项

DryIoc通过表达汇编和解释实现服务分辨率和注入。解释是没有系统的目标平台的唯一选项。反射。像Xamarin IOS一样。检查分辨率管道文档以获取更多详细信息。


Freepik从www.flaticon.com制作的图标由CC 3.0许可

下载源码

通过命令行克隆项目:

git clone https://github.com/dadhi/DryIoc.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 DryIoc https://www.zuozi.net/31698.html

CanalSharp
上一篇: CanalSharp
ape volo admin
下一篇: ape volo admin
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务