国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

基于組件的.NET軟件開發(5)

2024-07-10 13:03:49
字體:
來源:轉載
供稿:網友


實戰:
創建一個vb.net windows應用程序:vbtestdynamiccomponent。將前面介紹的兩個類componentlist和loadcomponent加入到工程中。

我們在程序啟動時從配置文件中讀入相關的程序集信息和類名信息,為此在主窗體的form_load過程中添加以下代碼:



01 private objloadcomponent as loadcomponent

02 private vbobj as object

03 private componentreader as mycomponentlist

04

05 private sub vbtestdynamicform_load(……) handles mybase.load

06 objloadcomponent = new loadcomponent()

07 componentreader = new mycomponentlist("componentlist.xml")

08 dim filename as string

09 dim classname as string

10 componentreader.beginread()

11 filename = componentreader.getfilename(0)

12 classname = componentreader.getclassname(0)

13 dim ret as boolean

14 ret = objloadcomponent.loadcomponentlibrary(filename)

15 vbobj = objloadcomponent.loadclass(classname)

16 vbobj.show()

17 end sub

我們看見,第07--10句從配置文件中取出dll文件名和類名,第11、12句獲取第一個dll文件名和類名,然后在第14句裝入組件庫,第15句裝入對象,因為返回的對象其實是一個窗體,所以,在第16句可以直接調用show()方法顯示此窗體。

從代碼中可以看見,在.net中動態創建對象是多么地方便和簡單!請注意:在工程中我們甚至不需要給工程添加對特定組件的引用!本例中動態創建的對象是窗體,而form對象是缺省就可使用的。在真實工程中,可以把所有的接口放入一個特定的dll中,我稱之為“facade assembly”,其它工程只需引用這個dll,則實現了這些接口的所有組件都可自由地通過名字來創建!

小結
我們在短短的一篇短文中介紹了.net的混合語言開發特性和動態裝配組件技術,展示了在.net下開發基于組件的應用軟件之簡便性與靈活性,這就為我們開發“擁抱變化”的軟件系統提供了新的可能性,可以總結如下:

(1)我們可以通過開發前的ooad(面向對象分析與設計)將系統功能分塊,然后分配給不同的開發人員開發成多個dll,最后再方便地將這些組件組合起來構造一個新的系統,一旦把某個功能做成了組件,它就可以在以后的項目中不斷復用,bug會越來越少,功能會越來越強,運行會越來越穩定,這樣的組件,將是無比寶貴的技術資源。

(2)由于.net強大的組件對象模型,原來適用于源代碼級別的一些面向對象特性:比如繼承和多態,現在都可以推廣應用到組件級別。特別地,在組件間現在我們也可以應用設計模式了。

同志們,趕緊去翻翻gof的經典書籍,把上面的24種模式應用在組件間,你一定會深深地感到軟件技術進步所給程序員帶來的廣闊發揮余地。

(3)通過在外部保存配置信息,使我們可以在不重新編譯程序的情況下,動態地讓整個軟件顯現出一種完全不同的風格與功能。想想如果在我們的示例中創建的兩個窗體是另兩個復雜的程序的主窗體,這不就意味著我們的程序可以非常方便地集成它們嗎?實現起來太簡單了,不就是在配置文件中增加一兩行代碼嗎?

(4)配置文件采用xml標準,可以很容易地為元素增加新的屬性,從而擴充程序的功能。另外,通過提供dtd和schema,可以在動態裝入配置文件之前就驗證文件是否是有效的,還有xslt可以對配置文件進行動態地置換……,xml的靈活性與可擴展性就不用我多說了吧?這方面的靈活應用就看你的啦!

(4)有了以上的技術支撐,我們開發軟件的過程中重點就放在ooad之上了,這正好體現出在面向對象時代系統分析與設計重于編碼的特點。

比如某軟件公司需要開發某個行業的產品,它可以對這個行業業務功能進行詳細的分析,抽象出不同級別的業務,其中最基本的業務被做成可以動態裝載的組件。當需要為此行業的一家新客戶定制軟件時,可以通過裝配現有的基本業務組件,再開發少量的專用組件來完成,從而極大地提高開發效率。這就是cbd(component-based develop:基于組件開發)。

目前很熱門的mda(model driven architecture),其實就是基于組件的,沒有大量的穩定的組件做支撐,mda是“drive”不起來的。

筆者發現,凡是成功的軟件公司,尤其是那些一流的跨國公司,比如ca、sap、愛立信等,其內部都有著一個大規模的組件庫,庫中的組件都經過了嚴格的實踐考驗,基于已有的成熟的組件開發新系統,其代碼復用率有時可達80%到90%,要達到這種代碼復用程度,需要軟件企業深入某一個行業內進行幾年十幾年甚至幾十年的深厚積累,這也是年輕的國內軟件企業與國外一流企業的差距所在。

(5)……

好了,不用再多說了,相信聰明的讀者可以體會到組件開發的巨大威力。

再回到.net,微軟在給vs.net做廣告時說:它大大提高了開發效率。這并不是吹牛,我個人感覺,使用.net開發項目,較之傳統的win32平臺上的技術,開發效率可以提高1/3!真正深入地學習與應用.net,筆者不禁對開發與設計.net技術的科學家和工程師們敬佩不已,向他們的創造性勞動致意。同時,筆者也更期望中國的軟件技術能奮起直追,我們的確落后得太多!





發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上林县| 同德县| 镇康县| 卓尼县| 高平市| 桂东县| 精河县| 湘西| 枣阳市| 运城市| 龙海市| 六枝特区| 延寿县| 宁乡县| 文登市| 南康市| 栾川县| 九龙坡区| 宜良县| 密山市| 三穗县| 南平市| 修文县| 桦南县| 虞城县| 吴堡县| 仙游县| 正安县| 兴隆县| 休宁县| 安溪县| 嘉黎县| 和平区| 湘西| 阿巴嘎旗| 公主岭市| 吴忠市| 密山市| 张掖市| 德昌县| 琼中|