背景
最早在开发Mbs 中的插件架构时用服务定位器和服务注册表来屏蔽各大DI容器的差异,后来为了更深入的研究DI 容器的内部实现机制,便开发了Mbs DI容器->Mini容器前身,在开发过程中借鉴了Castle,Unity,Ninject,StructureMap,Spring等思想尤其是Castle容器的工厂以及生命周期管理器等思想。最近一段时间不太忙便重新整理Mbs框架,由于Mbs框架命名不是太好(最早是开发消息总线的),不能描述框架具体包含什么内容,于是便开发Nlite 框架,该框架旨在提供一个轻量级的组件库(DI,Aop,MessageBus, MVP,AddIn,OO Mapper,国际化)等 ,刚开始便拿最核心的DI容器进行开刀,吸收和借鉴MEF中的插件思想来进行打造,该DI容器经过了几个项目的验证,并做了很详细的单元测试,代码覆盖率达到90%多,为DI容器的稳定性打下了坚实的基础。通过开发DI容器以及AOP,在很多方面都有了新的认识,如果不是亲自开发过很多思想是很难体会的。
Mini 容器默认支持以下几种组件注册机制
- Attribute 注册
- 流畅Api 注册
- 代码注册
- 自定义注册
- Singleton :单利
- Thread:对于每一个线程来说是使用了Singleton,也就是每一个线程得到的都是同一个实例
- Transient:每次的请求得到的都是一个新的实例
- Generic Singleton :泛型单利
- Generic Thread :泛型线程内单利
- Generic Transient:泛型临时
Mini 容器缺省提供以下几种依赖注入方式
- 构造函数注入
- 字段注入
- 属性注入
- 方法注入
- 缺省工厂
- 工厂方法工厂
- 代理工厂(供Aop使用)
- 实例工厂(该工厂仅仅提供驻留外部组件实例)
- 自定义工厂
组件监听器的监听阶段(LifestyleStage)
- OnComponentMetadataRegistered - 组件元数据被注册后
- OnComponentCreated - 组件创建后
- OnComponentDestroying - 组件释放中
- OnComponentDestroyed -组件释放后
Mini 容器通过组件监听器可以对DI容器进行扩展,系统缺省提供以下组件监听器
- SupportInitializeListner :组件初始化监听器
- InitializationListner :组件初始化监听器
- DisposalListner :组件释放监听器
- StartableListner :组件启动/停止监听器
- AopListner :Aop监听器