用Unity Container,替换Orchard的Autofac

Topics: 中文(Chinese)
Jan 26, 2014 at 1:40 AM
Orchard,对DI的应用确实有出彩的地方。但是一些老项目用的是Unity,所以打算改造Orchard来利用Orchard的部分功能。
思路:
Q1,关键是 LifeTimeManager,Autofac,可以利用名称来限定生命周期,在注册类型的时候也可以用名称指定生命周期。
A1,Unity,有ChildContianer,和Autofac比较类似,但是它没有名称。而且,有些注册要延后(等到ChildContainer 创建后才能注册)
Q2,Autofac有 IModule,无非实现注册功能。
A2,Unity有 Extensions,或者自己写个Module接口,在某个入口统一注册。
目前已经实现 Caching, Events, Logging.
Caching最大的麻烦是,在Resolve ICacheManager的时候需要注入 一个Type类型,用BuilderStrategy可以实现。
Jun 20, 2014 at 5:50 AM
我看还有很多事情要做,不是那么的简单。
不知道为什么要修改成Unity Container,有什么好处?
如果要修改,似乎以下地方你也要想想:
  1. OrchardControllerFactory
  2. AutofacWebApiDependencyResolver
  3. ISlim
  4. ShellContainerFactory
  5. 似乎还有很多,而且不能等价于Unity的实现,两个不一样的IOC.
    关键一些结构都是直接使用ILifetimeScope,要做的工作太多了吧。
Orchard 是一个很不错的开源项目,除开ContentManagement和DisplayManagement,其他地方我粗略看过,所以感觉不是很简单的事情。