新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > DOTNET平臺組件配置工具的設(shè)計與實現(xiàn)

DOTNET平臺組件配置工具的設(shè)計與實現(xiàn)

作者: 時間:2010-07-26 來源:網(wǎng)絡(luò) 收藏
反轉(zhuǎn)控制(IOC)和面向切面編程(AOP)技術(shù)作為當(dāng)前比較流行的技術(shù),其優(yōu)勢已受到廣泛關(guān)注,但是這兩項新技術(shù)在實際項目上的應(yīng)用研究卻很落后,而且在.NET這兩項技術(shù)沒有形成可以廣泛套用的框架,使得開發(fā)人員在.NET下應(yīng)用IOC和AOP技術(shù)的難度和成本大幅度提高。Castle提供了.NET下開發(fā)IOC和AOP技術(shù)的框架,一定程度上解決了開發(fā)人員的難題,但是如何高效地IOC和AOP技術(shù)的開發(fā),至今無人提出較好的建議。
本文主要研究Castle框架中的IOC和AOP機制,目標(biāo)是出一個可視化IOC和AOP機制中文件的可視化。該經(jīng)過修改和完善也適用于其他框架中的IOC和AOP文件的生成。
1 Castle框架和相關(guān)技術(shù)介紹
1.1 Castle框架介紹

 Castle是.NET平臺下的一個系統(tǒng)級框架,它是通過將一些成熟開源應(yīng)用進(jìn)行無縫整合而形成的一套完善的系統(tǒng)級應(yīng)用框架,這其中包括了ActiveRecord、AspectSharp、MonoRail及MicroKernel/Windsor。其中MicroKernel是IOC框架的核心;AspectSharp是AOP的框架。
1.2 IOC技術(shù)介紹
反轉(zhuǎn)控制IOC(Inversion of Control)[1],又稱依賴注入DI(Dependency Injection),是面向?qū)ο箢I(lǐng)域新興的編程思想。簡單地說,IOC就是指由容器來控制程序之間的關(guān)系,而非傳統(tǒng)實現(xiàn)中的由程序代碼直接操控。這也就是所謂“反轉(zhuǎn)控制”的概念所在:控制權(quán)由應(yīng)用代碼轉(zhuǎn)到外部容器,控制權(quán)的轉(zhuǎn)移,也就是所謂的反轉(zhuǎn)。
1.3 AOP技術(shù)介紹
AOP[2](Aspect Oriented Programming)是OOP的延續(xù),意思是面向切面編程??梢酝ㄟ^預(yù)編譯方式和運行期動態(tài)代理實現(xiàn)在不修改源代碼的情況下給程序動態(tài)統(tǒng)一添加功能的一種技術(shù)。它可以解決OOP和過程化方法不能夠很好解決的橫切(crosscut)問題,如:事務(wù)、安全、日志等橫切關(guān)注。當(dāng)未來系統(tǒng)變得越來越復(fù)雜,橫切關(guān)注點就成為一個大問題的時候,AOP就可以很輕松地解決橫切關(guān)注點的問題。
2 可視化IOC和AOP配置思路
 可視化IOC和AOP配置工具是一個在.NET平臺下開發(fā)的WinForm程序,這個工具的主要作用就是在IOC或者AOP都開發(fā)好的條件下,利用這個工具生成IOC或者AOP的配置文件,方法是讀取現(xiàn)存的IOC或者AOP組件。在工具中進(jìn)行相應(yīng)的配置,最后直接生成開發(fā)人員所需的配置文件。
 該工具的主要功能是通過讀入現(xiàn)存的IOC組件或AOP組件,提取并暫存組件中與配置有關(guān)的重要信息,以可視化的方式顯示在工具界面中,然后由開發(fā)人員操作該工具完成組件對應(yīng)的配置文件的生成。這個過程可以劃分為5個階段(如圖1):讀取類文件>分析類文件>顯示配置信息>開發(fā)人員對參數(shù)進(jìn)行配置>生成配置文件。其中前三層是該工具主要實現(xiàn)的功能。因此,該可視化工具的代碼部分分為3個層次來編寫。分別是:讀類文件、分析提取信息、顯示信息。

本文引用地址:http://m.butianyuan.cn/article/151717.htm

 第一層主要是完成類文件的讀取,在.NET平臺下使用到了System.IO命名空間中文件操作相關(guān)的File類和StreamReader類,最終將整個讀取的文件內(nèi)容以string類型返回,以供第二層分析文件使用。
 第二層的功能是在第一層的讀取文件內(nèi)容的基礎(chǔ)上分析并提取關(guān)鍵字,即取出配置文件需要的重要信息,例如IOC反轉(zhuǎn)控制模式主要有設(shè)值注入和構(gòu)造方法注入,設(shè)值注入就是對類中的屬性進(jìn)行注入,而構(gòu)造方法注入是對構(gòu)造函數(shù)中的參數(shù)值進(jìn)行注入。因此類中的屬性和構(gòu)造函數(shù)的參數(shù)就屬于IOC配置文件的重要信息,第二層主要完成對類似的重要信息的識別和分類。在第二層中,完成的識別功能主要有:
(1) 識別類文件的命名空間、類名、接口名
 命名空間、類名、接口名都是組成IOC和AOP配置文件的必備元素。
 在IOC配置文件中,命名空間、類名、接口名常出現(xiàn)在component標(biāo)簽的service和type屬性值中,而在AOP的配置文件中命名空間出現(xiàn)在Imports關(guān)鍵字之后。所以對命名空間、類名、接口名的提取是生成配置文件的必要條件。
(2) 識別類文件中的屬性
 IOC反轉(zhuǎn)控制模式中的設(shè)值注入就是對類中的屬性進(jìn)行注入,如采用該注入模式系統(tǒng),在IOC配置文件中,需要把類中的屬性作為配置文件的標(biāo)簽。
(3) 識別類的構(gòu)造方法中的參數(shù)名
 IOC反轉(zhuǎn)控制模式中的構(gòu)造注入是對構(gòu)造函數(shù)中的參數(shù)值進(jìn)行注入,如果采用該模式設(shè)計系統(tǒng),在IOC的配置文件中,需要把構(gòu)造方法的參數(shù)名作為配置文件中的標(biāo)簽。
 以上介紹的是第二層所識別的關(guān)鍵字的類別。在程序中關(guān)鍵字的獲取主要是通過編寫獲取方法來實現(xiàn)。獲取命名空間使用GetNamespace方法;獲取類名使用GetClass方法;獲取接口名使用GetInterface方法;獲取屬性名使用GetProperty方法。實現(xiàn)的思路是在遵循一定規(guī)約的前提下通過屬性在類中的位置特征將其提取出來并且依次保存到一個ArrayList對象中。


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉