DOTNET平台组件配置工具的设计与实现
本文主要研究Castle框架中的IOC和AOP机制,目标是设计出一个可视化工具,实现IOC和AOP机制中配置文件的可视化配置。该工具经过修改和完善也适用于其他框架中的IOC和AOP配置文件的生成。
1 Castle框架和相关技术介绍
1.1 Castle框架介绍
Castle是.NET平台下的一个系统级框架,它是通过将一些成熟开源应用进行无缝整合而形成的一套完善的系统级应用框架,这其中包括了ActiveRecord、AspectSharp、MonoRail及MicroKernel/Windsor。其中MicroKernel是IOC框架的核心;AspectSharp是AOP的框架。
1.2 IOC技术介绍
反转控制IOC(Inversion of Control)[1],又称依赖注入DI(Dependency Injection),是面向对象领域新兴的编程思想。简单地说,IOC就是指由容器来控制程序之间的关系,而非传统实现中的由程序代码直接操控。这也就是所谓“反转控制”的概念所在:控制权由应用代码转到外部容器,控制权的转移,也就是所谓的反转。
1.3 AOP技术介绍
AOP[2](Aspect Oriented Programming)是OOP的延续,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务、安全、日志等横切关注。当未来系统变得越来越复杂,横切关注点就成为一个大问题的时候,AOP就可以很轻松地解决横切关注点的问题。
2 可视化IOC和AOP配置工具设计思路
可视化IOC和AOP配置工具是一个在.NET平台下开发的WinForm程序,这个工具的主要作用就是在IOC组件或者AOP组件都开发好的条件下,利用这个工具生成IOC或者AOP的配置文件,方法是读取现存的IOC组件或者AOP组件。在工具中进行相应的配置,最后直接生成开发人员所需的配置文件。
该工具的主要功能是通过读入现存的IOC组件或AOP组件,提取并暂存组件中与配置有关的重要信息,以可视化的方式显示在工具界面中,然后由开发人员操作该工具完成组件对应的配置文件的生成。这个过程可以划分为5个阶段(如图1):读取类文件>分析类文件>显示配置信息>开发人员对参数进行配置>生成配置文件。其中前三层是该工具主要实现的功能。因此,该可视化工具的代码部分分为3个层次来编写。分别是:读类文件、分析提取信息、显示信息。
第一层主要是完成类文件的读取,在.NET平台下使用到了System.IO命名空间中文件操作相关的File类和StreamReader类,最终将整个读取的文件内容以string类型返回,以供第二层分析文件使用。
第二层的功能是在第一层的读取文件内容的基础上分析并提取关键字,即取出配置文件需要的重要信息,例如IOC反转控制模式主要有设值注入和构造方法注入,设值注入就是对类中的属性进行注入,而构造方法注入是对构造函数中的参数值进行注入。因此类中的属性和构造函数的参数就属于IOC配置文件的重要信息,第二层主要完成对类似的重要信息的识别和分类。在第二层中,完成的识别功能主要有:
(1) 识别类文件的命名空间、类名、接口名
命名空间、类名、接口名都是组成IOC和AOP配置文件的必备元素。
在IOC配置文件中,命名空间、类名、接口名常出现在component标签的service和type属性值中,而在AOP的配置文件中命名空间出现在Imports关键字之后。所以对命名空间、类名、接口名的提取是生成配置文件的必要条件。
(2) 识别类文件中的属性
IOC反转控制模式中的设值注入就是对类中的属性进行注入,如采用该注入模式设计系统,在IOC配置文件中,需要把类中的属性作为配置文件的标签。
(3) 识别类的构造方法中的参数名
IOC反转控制模式中的构造注入是对构造函数中的参数值进行注入,如果采用该模式设计系统,在IOC的配置文件中,需要把构造方法的参数名作为配置文件中的标签。
以上介绍的是第二层所识别的关键字的类别。在程序中关键字的获取主要是通过编写获取方法来实现。获取命名空间使用GetNamespace方法;获取类名使用GetClass方法;获取接口名使用GetInterface方法;获取属性名使用GetProperty方法。实现的思路是在遵循一定规约的前提下通过属性在类中的位置特征将其提取出来并且依次保存到一个ArrayList对象中。
评论