在当前软件开发OO设计中,面对软件需求的各种潜在变化,我们可能会采用领域驱动开发,把我们的各个业务逻辑分层次隔离解除耦合,这就出现了N层架构(这面值得是逻辑上的分层,当然我们的逻辑分层层次需要比物理架构层次多),这样将会使得我们的软件能够适应更多的需求变化。关于领域驱动开发的实例网上都很多,不得不推荐的是微软开源实例项目的NLayerApp:http://microsoftnlayerapp.codeplex.com/。

      然而在于我们的逻辑分层的每一层次之间的耦合度解耦也是一个常见的问题.这样在层次的变化中我们需要实现不变更服务层次,这是我们的设计必须依赖于不变接口(抽象)。对于分层的接口对象创建我们当前流程的解决方案是IOC框架,负责不变对象的创建组合,当下流行的IOC框架有:Autofac,Castle Windsor,Unity,Spring.NET,StructureMap,Ninject,当然这么多IOC框架供我们选择。我本人只了解 Castle Windsor,Unity,更喜欢Unity这套微软自身的轻量级ioc框架。关于IOC框架的测试园友Leepy有测试各大主流.Net的IOC框架性能测试比较。

      另外我还想说的是我们的业务处理中有很多共性,并非业务本身的,比如权限,日志,缓存等功能模块,如果我们每次都重复将是一个巨大的工作量和难以维护的成本。应运而生的AOP框架,就是一种从业务纵向切入,对目标实现权限,日志等。对于AOP的实现主流框架主要有透明代理和静态植入两大类。Castle和EL中的PIAB就是一种透明代理的实现方式,PostSharp则是编译时静态注入框架。其他框架还有SetPoint,NAop,NKalore。

      今天整理一下本博客汇总关于IOC,AOP的随笔,忘大家不辞吝啬多多指教,共同进步。

一:IOC目录:

  1. IOC应用篇:
    1. 利用Attribute简化Unity框架IOC注入
    2. AOP之PostSharp7-解决IOC 不能直接new问题,简化IOC开发和IOC对象LazyLoad
    3. WCF利用企业库Unity框架的IOC层次解耦

二:AOP目录:

  1. AOP静态植入原理:
    1. 浅谈.NET编译时注入(C#—>IL)
    2. 浅谈VS编译自定义编译任务—MSBuild Task(csproject)
    3. 编译时MSIL注入--实践Mono Cecil(1)
    4. MSBuild + MSILInect实现编译时AOP之预览
    5. MSBuild + MSILInect实现编译时AOP-改变前后对比
  2. PostSharp AOP:
    1. AOP之PostSharp初见-OnExceptionAspect
    2. AOP之PostSharp2-OnMethodBoundaryAspect
    3. AOP之PostSharp3-MethodInterceptionAspect
    4. AOP之PostSharp4-实现类INotifyPropertyChanged植入
    5. AOP之PostSharp5-LocationInterceptionAspect
    6. AOP之PostSharp6-EventInterceptionAspect(事件异步调用)
    7. AOP之PostSharp7-解决IOC 不能直接new问题,简化IOC开发和IOC对象LazyLoad
    8. PostSharp - Thread Dispatching(GUI多线程)

    本系列中的随笔还有继续,我会不断更新。忘大家不辞吝啬多多指教,共同进步。