C#---AOP面向切面编程应用

目录

1.基本概念

2.AOP的实现方式

2.1 基于Attribute特性给实体类的属性验证

 2.2基于装饰器设计模式为核心业务切入方法

 2.3基于远程代理实现订单业务扩展

 2.4基于Castle动态代理完成对象扩展

 2.5Unity容器的使用


1.基本概念

AOP(Aspect Oriented Programming)是一种能够在现有面向对象封装的基础上,为了满足软件业务扩展的需求,实现程序动态扩展的一种方式。

场景:适合软件的二次开发应用,动态扩展某些业务,但是尽量的让这些改动最小。

个人理解:给现有业务方法拓展功能,而对原来封装没有破坏.

2二.AOP的实现方式

2.1 基于Attribute特性给实体类的属性验证

C#---AOP面向切面编程应用_第1张图片

 C#---AOP面向切面编程应用_第2张图片

 这一步就是获取注入的特性,并调用特性中的验证方法,对属性值进行验证.C#---AOP面向切面编程应用_第3张图片

 C#---AOP面向切面编程应用_第4张图片

 2.2基于装饰器设计模式为核心业务切入方法

C#---AOP面向切面编程应用_第5张图片

 C#---AOP面向切面编程应用_第6张图片

 2.3基于远程代理实现订单业务扩展

 第一步:在实现接口类中添加一个父类MarshalByRefObject

C#---AOP面向切面编程应用_第7张图片

 第二步:基于代理远程代理实现对业务扩展

引入命名空间

C#---AOP面向切面编程应用_第8张图片

 第三步:编写拓展方法

C#---AOP面向切面编程应用_第9张图片

 第四步:完成被代理对象的创建

C#---AOP面向切面编程应用_第10张图片

 第五步:使用及结果

C#---AOP面向切面编程应用_第11张图片

 C#---AOP面向切面编程应用_第12张图片

 2.4基于Castle动态代理完成对象扩展

 第一步:实现接口类必须是Virtual

C#---AOP面向切面编程应用_第13张图片

 第二步:实现一个拦截器接口

C#---AOP面向切面编程应用_第14张图片

第三步:编写切入方法

C#---AOP面向切面编程应用_第15张图片

 C#---AOP面向切面编程应用_第16张图片

 2.5Unity容器的使用

【1】概念解释:Unity是一个轻量级的可扩展的依赖注入容器。使用方便上,可以选择代码方式,也可以选择xml配置文件进行配置,达到对象关系的依赖。在程序运行中调用Unity容器,就可以获得我们所需要的对象。

【2】应用选择:小型项目可以使用代码方式,相对于大型的项目来讲,可以使用配置文件。

【3】应用场景:主要用于核心模型后续扩展日志功能、认证、授权、缓存等这些通用的业务。

【4】充分理解Ioc和AOP的关系:AOP面向切面编程,是一种编程思想OOP的延伸。通常就是说我们把系统中非核心的业务提取出来,进行单独的处理。主要的事情(核心业务)由我做,次要事情由别人做。在AOP思想的具体实现中,会用到Ioc容器。

第一步:添加Unity容器的引用(需要两个,Unity 5.5.0 和Unity.Interception 5.2.1)

C#---AOP面向切面编程应用_第17张图片

 第二步:编写核心业务接口IOrderService,并实现接口

第三步:添加要注入的具体行为类(就是要实现我们想要扩展的东西),必须实现接口ICallHandler

C#---AOP面向切面编程应用_第18张图片

第四步: 为每一个行为,设计一个特性类,因为行的注入是通过特性完成的。在特性类中返回具体的特性行为。

 C#---AOP面向切面编程应用_第19张图片

 第五步:为定义的业务接口IOrderService增加需要的特性,并且显示的指明注入的顺序

C#---AOP面向切面编程应用_第20张图片

 注意:当我们给接口增加特性以后,主要是实现这个接口的,这些特性行为都将同时注入进去。

第六步:使用容器

C#---AOP面向切面编程应用_第21张图片

 通过配置文件完成对象的创建

【1】添加接口和各种实现类型

【2】添加两个独立的引用(Microsoft.Practices.Unity.Configuration.dll,Microsoft.Practices.Unity.dll)+ 单独的Configuration配置文件读取的引用

【3】编写配置文件相关节点

【4】使用容器。

C#---AOP面向切面编程应用_第22张图片

 C#---AOP面向切面编程应用_第23张图片

你可能感兴趣的:(c#)