ABP开源项目最近有点小火,还开展了线下活动。本着学习DDD的心态与学习开源代码的的好奇,我也看了一遍ABP源码,在此将自己学习ABP的一些心得记录下来。

 

作为核心的IoC

作为一种解耦的方式,一些IoC框架就成了项目了核心。比如蒋金楠的VideoMall与陈青阳的Byteart Retail项目都是使用Unity。而ABP则是使用Castle。

 

Register与Resolve

Register与Reslove是IoC基本功能,向容器中注类型对应关系再向容器按注入规则索取对象实体。ABP为Register与Resolve分别定义接口:IIocRegistrar、IocResolver,再由IIocManager继承这两个接口,所以在IIocManager中统一了Register与Resolve,其中IIocManger中定义了IWindsorContainer。再由IocManager去实现IIoCManager.这样就形成了一个完整的, Register与Resolve。类结构如下:

ABP之依赖注入

其中,IoCManager当中用了单例去维持Register内容。

ABP之依赖注入

生命周期

ABP对于生命周期管理提供了两种方式。

  1. 手工注入

系统提供了一生命周期的枚举类型:DependencyLifeStyle

 

    /// <summary>
    /// Lifestyles of types used in dependency injection system.
    /// </summary>
    public enum DependencyLifeStyle
    {
        /// <summary>
        /// Singleton object. Created a single object on first resolving
        /// and same instance is used for subsequent resolves.
        /// </summary>
        Singleton,

        /// <summary>
        /// Transient object. Created one object for every resolving.
        /// </summary>
        Transient
    }
View Code

相关文章:

  • 2021-12-31
  • 2021-11-17
  • 2021-11-29
  • 2022-12-23
  • 2018-06-22
  • 2022-02-01
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2017-12-08
  • 2021-09-28
  • 2022-01-19
相关资源
相似解决方案