第4章 詳細(xì)設(shè)計(jì)(4.5-4.6)_第1頁(yè)
第4章 詳細(xì)設(shè)計(jì)(4.5-4.6)_第2頁(yè)
第4章 詳細(xì)設(shè)計(jì)(4.5-4.6)_第3頁(yè)
第4章 詳細(xì)設(shè)計(jì)(4.5-4.6)_第4頁(yè)
第4章 詳細(xì)設(shè)計(jì)(4.5-4.6)_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院第4章 詳細(xì)設(shè)計(jì)(第4.5-4.6節(jié))武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院主要內(nèi)容面向?qū)ο蟪绦虻脑敿?xì)設(shè)計(jì)基于組件的程序設(shè)計(jì)方法武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院 在結(jié)構(gòu)化程序設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)是問(wèn)題求解的中在結(jié)構(gòu)化程序設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)是問(wèn)題求解的中心環(huán)節(jié),一個(gè)完整的軟件系統(tǒng)是圍繞一個(gè)或幾個(gè)關(guān)心環(huán)節(jié),一個(gè)完整的軟件系統(tǒng)是圍繞一個(gè)或幾個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)建立起來(lái)的。鍵數(shù)據(jù)結(jié)構(gòu)建立起來(lái)的。 操作則是以傳送到函數(shù)或過(guò)程中的數(shù)據(jù)位基礎(chǔ)進(jìn)操作則是以傳送到函數(shù)或過(guò)程中的數(shù)據(jù)位基礎(chǔ)進(jìn)行的。行的。 結(jié)構(gòu)化程序設(shè)計(jì)方法和面向

2、數(shù)據(jù)結(jié)構(gòu)的問(wèn)題求解結(jié)構(gòu)化程序設(shè)計(jì)方法和面向數(shù)據(jù)結(jié)構(gòu)的問(wèn)題求解方法,在中小型軟件系統(tǒng)開發(fā)中得到很好應(yīng)用。方法,在中小型軟件系統(tǒng)開發(fā)中得到很好應(yīng)用。 當(dāng)系統(tǒng)的規(guī)模和復(fù)雜性不斷增加時(shí),其呈現(xiàn)了局當(dāng)系統(tǒng)的規(guī)模和復(fù)雜性不斷增加時(shí),其呈現(xiàn)了局限性,主要反映在關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的作用域和可視性限性,主要反映在關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的作用域和可視性方面。方面。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.5.14.5.1面向?qū)ο蟪绦虻奶匦悦嫦驅(qū)ο蟪绦虻奶匦?封裝性:類的封封裝性:類的封裝性使得數(shù)據(jù)和裝性使得數(shù)據(jù)和操縱數(shù)據(jù)的算法操縱數(shù)據(jù)的算法(函數(shù)或過(guò)程)(函數(shù)或過(guò)程)緊密地捆綁在一緊密地捆綁在一起。起。這樣就可

3、以使得這樣就可以使得操縱數(shù)據(jù)的函數(shù)操縱數(shù)據(jù)的函數(shù)或過(guò)程的作用域或過(guò)程的作用域和可視性限制在和可視性限制在軟件系統(tǒng)的局部軟件系統(tǒng)的局部區(qū)域內(nèi)。區(qū)域內(nèi)。 /定義日期字符串類型定義日期字符串類型string80typedef char String8080;/定義日期類定義日期類CDateclass CDate/類的實(shí)現(xiàn)類的實(shí)現(xiàn)private: int year,month,day; /類的接口類的接口public: CDate(int month,int day,int year); CDate operator+(int days); void GetDateString(String80 &a

4、mp;DateString); /;/部分成員函數(shù)的實(shí)現(xiàn)部分成員函數(shù)的實(shí)現(xiàn)void CDate:GetDateString(String80 &DateString) sprintf(DateString, %d-%d-%d, month, day, year % 100);C+類的標(biāo)準(zhǔn)設(shè)計(jì)方法是將數(shù)據(jù)成員設(shè)計(jì)為私有的需要對(duì)外公開的成員函數(shù)設(shè)計(jì)為公有的C+C+中類的數(shù)據(jù)部分稱為數(shù)據(jù)成員,中類的數(shù)據(jù)部分稱為數(shù)據(jù)成員,類的算法部分稱為成員函數(shù)類的算法部分稱為成員函數(shù)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院繼承性繼承性 在面向?qū)ο蟪淘诿嫦驅(qū)ο蟪绦蛟O(shè)計(jì)中,允序設(shè)計(jì)中,允許某個(gè)類

5、繼承許某個(gè)類繼承其它類的成員其它類的成員函數(shù)或數(shù)據(jù)成函數(shù)或數(shù)據(jù)成員。員。被繼承的類稱被繼承的類稱為基類、父類為基類、父類或超類,繼承或超類,繼承的類稱為派生的類稱為派生類或子類。類或子類。 class CBaseClass ;若要從CBaseClass派生一個(gè)新的類,其語(yǔ)法是:class CDerivedClass : 存取權(quán)限標(biāo)識(shí) CBaseClass ; 派生類繼承基類成員時(shí),派生類不能存取基類的private成員,否則需要將基類的成員聲明為protected.見P147武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院多態(tài)性多態(tài)性 多態(tài)性使得相關(guān)的類多態(tài)性使得相關(guān)的類可有同名的函數(shù)

6、,這可有同名的函數(shù),這個(gè)同名的函數(shù)根據(jù)不個(gè)同名的函數(shù)根據(jù)不同類產(chǎn)生不同的結(jié)果。同類產(chǎn)生不同的結(jié)果。換言之,不同類的對(duì)換言之,不同類的對(duì)象可以具有相同的接象可以具有相同的接口,這些相同的接口口,這些相同的接口自然會(huì)呈現(xiàn)出不同的自然會(huì)呈現(xiàn)出不同的行為。通過(guò)多態(tài)性程行為。通過(guò)多態(tài)性程序設(shè)計(jì),可以編寫并序設(shè)計(jì),可以編寫并編譯代碼以處理未知編譯代碼以處理未知類型的對(duì)象。類型的對(duì)象。 在在C+C+中,多態(tài)性是通過(guò)虛擬函數(shù)實(shí)現(xiàn)的。中,多態(tài)性是通過(guò)虛擬函數(shù)實(shí)現(xiàn)的。 /定義日期字符串類型定義日期字符串類型string80string80typedef char String8080;typedef char S

7、tring8080; /定義日期類定義日期類CDateCDateclass CDateclass CDate protected:protected: int year,month,day; int year,month,day; public:public: CDate(int month,int day,int year); CDate(int month,int day,int year); CDate operator+(int days); CDate operator+(int days); virtual void GetDateString(String80 &Date

8、String); virtual void GetDateString(String80 &DateString); void DisplayDateString(void); / void DisplayDateString(void); /將調(diào)用將調(diào)用GetDateStringGetDateString/;如果不采用多態(tài)性處理GetDateString,則在CDate的子類中如果重寫了GetDateString會(huì)影響DisplayDateString嗎?武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.5.2 4.5.2 設(shè)計(jì)原則設(shè)計(jì)原則 一、可復(fù)用性一、可復(fù)用性: :

9、1 1、保證方法的內(nèi)聚性、保證方法的內(nèi)聚性; ;只做一件事只做一件事 2 2、減少一個(gè)方法的代碼規(guī)模、減少一個(gè)方法的代碼規(guī)模; ; 3 3、保持方法對(duì)外接口的一致性、保持方法對(duì)外接口的一致性; ; 4 4、分離策略(控制)方法和實(shí)現(xiàn)方法、分離策略(控制)方法和實(shí)現(xiàn)方法; ; 5 5、方法應(yīng)均勻覆蓋數(shù)據(jù);、方法應(yīng)均勻覆蓋數(shù)據(jù); 6 6、加強(qiáng)封裝性,操作對(duì)象內(nèi)部數(shù)據(jù),避免全局?jǐn)?shù)據(jù)、加強(qiáng)封裝性,操作對(duì)象內(nèi)部數(shù)據(jù),避免全局?jǐn)?shù)據(jù) 7 7、減少方法的耦合性;、減少方法的耦合性; 8 8、利用繼承機(jī)制;、利用繼承機(jī)制; 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院二、可擴(kuò)展性二、可擴(kuò)展性: 1

10、1、封裝數(shù)據(jù):類的內(nèi)部數(shù)據(jù)通常對(duì)其他類是隱蔽的。、封裝數(shù)據(jù):類的內(nèi)部數(shù)據(jù)通常對(duì)其他類是隱蔽的。 2 2、封裝方法內(nèi)部的數(shù)據(jù)結(jié)構(gòu):、封裝方法內(nèi)部的數(shù)據(jù)結(jié)構(gòu): 是為實(shí)現(xiàn)方法的算法而設(shè)計(jì)的,不應(yīng)從外部獲得。是為實(shí)現(xiàn)方法的算法而設(shè)計(jì)的,不應(yīng)從外部獲得。 3 3、避免情況分支語(yǔ)句;、避免情況分支語(yǔ)句; 4 4、區(qū)分公有方法和私有方法。、區(qū)分公有方法和私有方法。 公有方法是對(duì)象的外部接口,通常不應(yīng)該修改和公有方法是對(duì)象的外部接口,通常不應(yīng)該修改和刪除。刪除。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院三、健壯性三、健壯性 : 1 1、防止輸入錯(cuò)誤、防止輸入錯(cuò)誤 (圍欄);(圍欄); 2 2、把

11、握優(yōu)化代碼的時(shí)機(jī);、把握優(yōu)化代碼的時(shí)機(jī); 3 3、檢查參數(shù)的合法性:、檢查參數(shù)的合法性: 對(duì)公有方法的參數(shù),必須嚴(yán)格檢查對(duì)參數(shù)的約束。對(duì)公有方法的參數(shù),必須嚴(yán)格檢查對(duì)參數(shù)的約束。 4 4、選擇適當(dāng)?shù)膶?shí)現(xiàn)方法。、選擇適當(dāng)?shù)膶?shí)現(xiàn)方法。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院四、協(xié)作性四、協(xié)作性:涉及協(xié)作、交流和通信:涉及協(xié)作、交流和通信 1 1、設(shè)計(jì)前進(jìn)行周密考慮;、設(shè)計(jì)前進(jìn)行周密考慮; 2 2、盡量使得代碼容易理解;、盡量使得代碼容易理解; 3 3、在對(duì)象模型中使用相同的名稱;、在對(duì)象模型中使用相同的名稱; 4 4、對(duì)類進(jìn)行詳細(xì)的文檔化;、對(duì)類進(jìn)行詳細(xì)的文檔化; 5 5、把類打包

12、成模塊;、把類打包成模塊; 6 6、公開公共的設(shè)計(jì)說(shuō)明書;、公開公共的設(shè)計(jì)說(shuō)明書;武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6 基于組件的程序設(shè)計(jì)方法基于組件的程序設(shè)計(jì)方法 我們能如此開發(fā)軟件嗎?武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院程序設(shè)計(jì)方法的發(fā)展程序設(shè)計(jì)方法的發(fā)展功能分解法功能分解法 計(jì)算任務(wù)計(jì)算任務(wù)結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì) 以數(shù)據(jù)為中心以數(shù)據(jù)為中心面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 以對(duì)象為中心以對(duì)象為中心組件程序設(shè)計(jì)組件程序設(shè)計(jì) 以組件為中心以組件為中心綜合使用武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院軟件需求的變化軟件需求的變化計(jì)

13、算計(jì)算p實(shí)用p管理(MIS)p分布式系統(tǒng)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院軟件環(huán)境的變化軟件環(huán)境的變化單任務(wù)單任務(wù)多任務(wù)多任務(wù)文字界面文字界面圖形界面圖形界面單線程單線程多線程多線程平臺(tái)相關(guān)平臺(tái)相關(guān)跨平臺(tái)跨平臺(tái)單機(jī)單機(jī)( (本地本地) )網(wǎng)絡(luò)網(wǎng)絡(luò)( (分布式分布式) )單一語(yǔ)言單一語(yǔ)言多種語(yǔ)言多種語(yǔ)言武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院面臨的問(wèn)題面臨的問(wèn)題現(xiàn)代軟件應(yīng)用過(guò)于龐大而復(fù)雜,開發(fā)周期現(xiàn)代軟件應(yīng)用過(guò)于龐大而復(fù)雜,開發(fā)周期長(zhǎng),維護(hù)困難,維護(hù)成本高長(zhǎng),維護(hù)困難,維護(hù)成本高應(yīng)用單一,集成了許多功能,使大多數(shù)功應(yīng)用單一,集成了許多功能,使大多數(shù)功能無(wú)法單

14、獨(dú)升級(jí)或替換能無(wú)法單獨(dú)升級(jí)或替換一個(gè)應(yīng)用的數(shù)據(jù)和功能不能用于另一個(gè)應(yīng)一個(gè)應(yīng)用的數(shù)據(jù)和功能不能用于另一個(gè)應(yīng)用用開發(fā)方式不統(tǒng)一,編程模式因應(yīng)用所在位開發(fā)方式不統(tǒng)一,編程模式因應(yīng)用所在位置的不同而變化非常大置的不同而變化非常大武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院軟件發(fā)展面臨的問(wèn)題軟件發(fā)展面臨的問(wèn)題p軟件的復(fù)雜度增加軟件的復(fù)雜度增加n代碼開發(fā)管理代碼開發(fā)管理p軟件升級(jí)和更新軟件升級(jí)和更新n牽一而發(fā)動(dòng)全身?牽一而發(fā)動(dòng)全身?p分布式軟件的發(fā)布和配置分布式軟件的發(fā)布和配置n用戶需要培訓(xùn),程序員和設(shè)計(jì)人員更需要用戶需要培訓(xùn),程序員和設(shè)計(jì)人員更需要武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)

15、與計(jì)算機(jī)學(xué)院組件化程序設(shè)計(jì)方法背景組件化程序設(shè)計(jì)方法背景 軟件體系軟件體系, ,開發(fā)開發(fā), ,和產(chǎn)品本身越來(lái)越復(fù)雜和產(chǎn)品本身越來(lái)越復(fù)雜, ,更新版更新版本的混亂導(dǎo)致本的混亂導(dǎo)致”軟件危機(jī)軟件危機(jī)”的產(chǎn)生的產(chǎn)生, ,所以必須從所以必須從”底層底層”起就要實(shí)現(xiàn)面向?qū)ο蟮膽?yīng)用模式起就要實(shí)現(xiàn)面向?qū)ο蟮膽?yīng)用模式. . 只是從只是從”底層底層”解決面向?qū)ο髴?yīng)用并不是馬上可解決面向?qū)ο髴?yīng)用并不是馬上可以實(shí)現(xiàn)的以實(shí)現(xiàn)的. . 5060 5060年代專家提出了組件的概念年代專家提出了組件的概念. . 80 80年代后年代后, ,面向組件設(shè)計(jì)模式開始大量應(yīng)用面向組件設(shè)計(jì)模式開始大量應(yīng)用, ,以以試圖解決上述問(wèn)題試

16、圖解決上述問(wèn)題. .武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件技術(shù)組件技術(shù)p組件定義:可獨(dú)立發(fā)布的二進(jìn)制單元組件定義:可獨(dú)立發(fā)布的二進(jìn)制單元, ,有的地方稱有的地方稱作作“package”package”p組件技術(shù)適合于現(xiàn)代的軟件環(huán)境組件技術(shù)適合于現(xiàn)代的軟件環(huán)境n軟件更新快、規(guī)模大、強(qiáng)調(diào)協(xié)作等軟件更新快、規(guī)模大、強(qiáng)調(diào)協(xié)作等n組件的概念、軟件組件的概念、軟件ICICp組件的可獨(dú)立發(fā)布性要求組件的可獨(dú)立發(fā)布性要求“接口與實(shí)現(xiàn)分離接口與實(shí)現(xiàn)分離”p組件組件infrastructureinfrastructure,組件體系,組件體系nCOMCOM、CORBACORBA、EJBEJBp

17、中間件中間件(middleware)(middleware)市場(chǎng)市場(chǎng)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件技術(shù)是一種優(yōu)秀的軟件重用技術(shù)。采用組件組件技術(shù)是一種優(yōu)秀的軟件重用技術(shù)。采用組件開發(fā)軟件就像搭積木一樣容易,組件是具有某種開發(fā)軟件就像搭積木一樣容易,組件是具有某種特定功能的軟件模型,它幾乎可以完成任何任務(wù)。特定功能的軟件模型,它幾乎可以完成任何任務(wù)。CORBA(Common Object Request Broker CORBA(Common Object Request Broker Architecture)Architecture)9191年第年第1 1版,版

18、,OMG(Object Management Group)OMG(Object Management Group)規(guī)范規(guī)范+ +實(shí)現(xiàn)實(shí)現(xiàn)COM(Component Object Model)COM(Component Object Model)9393年發(fā)布,脫胎于年發(fā)布,脫胎于MSMS的的OLEOLE規(guī)范規(guī)范+ +實(shí)現(xiàn)實(shí)現(xiàn)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院現(xiàn)實(shí)生活中的組件概念現(xiàn)實(shí)生活中的組件概念: : 想象一下組裝一臺(tái)電腦想象一下組裝一臺(tái)電腦: : CPU CPU 主板主板, ,電源電源, ,機(jī)箱機(jī)箱, ,顯卡顯卡, ,內(nèi)存條內(nèi)存條, ,硬硬盤盤 有了組件的概念有了組件

19、的概念, ,和一些必要的知識(shí)和一些必要的知識(shí), ,人們?nèi)藗兒苋菀装迅鞣N組件安裝在一起很容易把各種組件安裝在一起, ,形成一個(gè)完形成一個(gè)完整的產(chǎn)品整的產(chǎn)品, ,產(chǎn)品升級(jí)也變得較容易產(chǎn)品升級(jí)也變得較容易武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件是一個(gè)功能相對(duì)完整的集合組件是一個(gè)功能相對(duì)完整的集合. .組件與組件通過(guò)組件與組件通過(guò)大家共同制定的大家共同制定的一組方法一組方法進(jìn)行操作進(jìn)行操作. .使用的人不必使用的人不必( (理想情況理想情況) )關(guān)心組件內(nèi)具體情況關(guān)心組件內(nèi)具體情況, ,只只要理解組件的要理解組件的I/OI/O就可以正確應(yīng)用組件,并且將組就可以正確應(yīng)用組件,并且將組

20、件有機(jī)的組合起來(lái)件有機(jī)的組合起來(lái), ,形成一個(gè)完整的產(chǎn)品形成一個(gè)完整的產(chǎn)品. .組件可以單獨(dú)開發(fā)組件可以單獨(dú)開發(fā), ,單獨(dú)編譯單獨(dú)編譯, ,單獨(dú)測(cè)試單獨(dú)測(cè)試. .通過(guò)組件通過(guò)組件的復(fù)用的復(fù)用, ,可以大大提高開發(fā)的各種指標(biāo)可以大大提高開發(fā)的各種指標(biāo)( (可行性可行性, ,效效率率, ,成本成本, ,質(zhì)量質(zhì)量, ,可維護(hù)性可維護(hù)性)組件組件可以自行進(jìn)行內(nèi)部管理的一個(gè)或多個(gè)類所可以自行進(jìn)行內(nèi)部管理的一個(gè)或多個(gè)類所組成的群體。組成的群體。什么是組件什么是組件? ?武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院組件技術(shù)的特點(diǎn)組件技術(shù)的特點(diǎn)真正的軟件重用和高度的互操作性真正的軟件重用和高度的互

21、操作性接口的可靠性接口的可靠性可擴(kuò)充服務(wù)可擴(kuò)充服務(wù)具有強(qiáng)有力的基礎(chǔ)設(shè)施具有強(qiáng)有力的基礎(chǔ)設(shè)施具有構(gòu)建和膠合組件的工具具有構(gòu)建和膠合組件的工具武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.1 4.6.1 三層應(yīng)用體系結(jié)構(gòu)三層應(yīng)用體系結(jié)構(gòu) 應(yīng)用體系結(jié)構(gòu)是軟件系統(tǒng)組織的一些重要決應(yīng)用體系結(jié)構(gòu)是軟件系統(tǒng)組織的一些重要決策,它是軟件體系結(jié)構(gòu)的一個(gè)策,它是軟件體系結(jié)構(gòu)的一個(gè)概念性表示概念性表示選擇組成系統(tǒng)的結(jié)構(gòu)元素和接口;選擇組成系統(tǒng)的結(jié)構(gòu)元素和接口;由這些元素之間的協(xié)作決定的系統(tǒng)的行為;由這些元素之間的協(xié)作決定的系統(tǒng)的行為;將這些元素和行為組合成更大的子系統(tǒng);將這些元素和行為組合成更大的

22、子系統(tǒng);指導(dǎo)系統(tǒng)組織的體系結(jié)構(gòu)模式;指導(dǎo)系統(tǒng)組織的體系結(jié)構(gòu)模式;武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院三層應(yīng)用體系結(jié)構(gòu)模型圖三層應(yīng)用體系結(jié)構(gòu)模型圖 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院三層應(yīng)用體系結(jié)構(gòu)三層應(yīng)用體系結(jié)構(gòu)用戶層用戶層 用戶層用于向用戶顯示系統(tǒng)中的數(shù)據(jù)允許用戶輸入和編輯數(shù)用戶層用于向用戶顯示系統(tǒng)中的數(shù)據(jù)允許用戶輸入和編輯數(shù)據(jù)。據(jù)。業(yè)務(wù)層業(yè)務(wù)層 業(yè)務(wù)層用于執(zhí)行業(yè)務(wù)和制定數(shù)據(jù)規(guī)則。業(yè)務(wù)層為用戶提供服業(yè)務(wù)層用于執(zhí)行業(yè)務(wù)和制定數(shù)據(jù)規(guī)則。業(yè)務(wù)層為用戶提供服務(wù),不與任何特定的用戶捆綁在一起,而面向所有的應(yīng)用。業(yè)務(wù)務(wù),不與任何特定的用戶捆綁在一起,而面向所有的

23、應(yīng)用。業(yè)務(wù)層不應(yīng)該知道它所操縱數(shù)據(jù)是如何存儲(chǔ)和位置,業(yè)務(wù)層不依賴于層不應(yīng)該知道它所操縱數(shù)據(jù)是如何存儲(chǔ)和位置,業(yè)務(wù)層不依賴于數(shù)據(jù)層的數(shù)據(jù)存取服務(wù)完成實(shí)際的數(shù)據(jù)存取操作。數(shù)據(jù)層的數(shù)據(jù)存取服務(wù)完成實(shí)際的數(shù)據(jù)存取操作。數(shù)據(jù)層數(shù)據(jù)層 在數(shù)據(jù)層,數(shù)據(jù)存儲(chǔ)子層通常就是某個(gè)或某些數(shù)據(jù)庫(kù)管理系在數(shù)據(jù)層,數(shù)據(jù)存儲(chǔ)子層通常就是某個(gè)或某些數(shù)據(jù)庫(kù)管理系統(tǒng)用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行實(shí)質(zhì)性的存儲(chǔ)、檢索和更新操作。統(tǒng)用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行實(shí)質(zhì)性的存儲(chǔ)、檢索和更新操作。 某個(gè)或某些數(shù)據(jù)系統(tǒng)的一部分不是以數(shù)據(jù)庫(kù)形式而是以文件某個(gè)或某些數(shù)據(jù)系統(tǒng)的一部分不是以數(shù)據(jù)庫(kù)形式而是以文件或其他形式實(shí)現(xiàn),可以實(shí)現(xiàn)對(duì)文件等進(jìn)行實(shí)質(zhì)性的存儲(chǔ)、檢索和或其他形式實(shí)現(xiàn)

24、,可以實(shí)現(xiàn)對(duì)文件等進(jìn)行實(shí)質(zhì)性的存儲(chǔ)、檢索和更新操作。更新操作。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.2 CORBA4.6.2 CORBA對(duì)象總線技術(shù)對(duì)象總線技術(shù) 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(Common Object Common Object Request Broker Architecture, CORBARequest Broker Architecture, CORBA)是)是由由對(duì)象管理組織對(duì)象管理組織OMGOMG制定的一個(gè)工業(yè)規(guī)范,其主制定的一個(gè)工業(yè)規(guī)范,其主要目標(biāo)是提供一種要目標(biāo)是提供一種機(jī)制機(jī)制,在此基礎(chǔ)上,對(duì)象可,在此基礎(chǔ)上

25、,對(duì)象可以透明地請(qǐng)求和獲得應(yīng)答。以透明地請(qǐng)求和獲得應(yīng)答。CORBACORBA的實(shí)質(zhì)是的實(shí)質(zhì)是遠(yuǎn)過(guò)程調(diào)用遠(yuǎn)過(guò)程調(diào)用與與面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù)的的有機(jī)結(jié)合。有機(jī)結(jié)合。 OMGOMG于于19901990年制訂了年制訂了OMAOMA(Object Management Object Management ArchitectureArchitecture),它可用任何方法來(lái)實(shí)現(xiàn),),它可用任何方法來(lái)實(shí)現(xiàn),CORBACORBA是其中的一種實(shí)現(xiàn)方案。是其中的一種實(shí)現(xiàn)方案。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBACORBA(Common Object Request Broker

26、 ArchitectureCommon Object Request Broker Architecture)CORBACORBA是基于面向?qū)ο蠹夹g(shù)的,它能解決遠(yuǎn)程對(duì)象是基于面向?qū)ο蠹夹g(shù)的,它能解決遠(yuǎn)程對(duì)象之間的互操作問(wèn)題之間的互操作問(wèn)題由由OMGOMG提出,用于分布式異構(gòu)環(huán)境下,可移植可重提出,用于分布式異構(gòu)環(huán)境下,可移植可重用、可互連的面向?qū)ο蟮能浖_發(fā)和應(yīng)用平臺(tái)是一用、可互連的面向?qū)ο蟮能浖_發(fā)和應(yīng)用平臺(tái)是一種面向?qū)ο蟮姆植际街虚g件體系規(guī)范。種面向?qū)ο蟮姆植际街虚g件體系規(guī)范。借助借助CORBACORBA提供的中間件機(jī)制,我們?cè)谶M(jìn)行方法調(diào)提供的中間件機(jī)制,我們?cè)谶M(jìn)行方法調(diào)用時(shí),無(wú)需考慮被調(diào)

27、用對(duì)象所在的具體位置,而是用時(shí),無(wú)需考慮被調(diào)用對(duì)象所在的具體位置,而是像調(diào)用一個(gè)本地模塊的方法一樣像調(diào)用一個(gè)本地模塊的方法一樣“直接直接”與其通信與其通信(因此,有些應(yīng)用中,(因此,有些應(yīng)用中,CORBACORBA也被用于本地進(jìn)程間也被用于本地進(jìn)程間通信,以降低各模塊間的耦合度,同時(shí)也便于系統(tǒng)通信,以降低各模塊間的耦合度,同時(shí)也便于系統(tǒng)結(jié)構(gòu)的調(diào)整)。結(jié)構(gòu)的調(diào)整)。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBACORBA定義了一系列定義了一系列APIAPI,通信協(xié)議和服務(wù)使得異,通信協(xié)議和服務(wù)使得異構(gòu)的應(yīng)用程序能夠互相操作,這些應(yīng)用程序用不構(gòu)的應(yīng)用程序能夠互相操作,這些應(yīng)用程

28、序用不同的程序語(yǔ)言編寫,運(yùn)行在不同的平臺(tái)上。是同的程序語(yǔ)言編寫,運(yùn)行在不同的平臺(tái)上。是真真正跨平臺(tái)的,平臺(tái)獨(dú)立性。正跨平臺(tái)的,平臺(tái)獨(dú)立性。它通過(guò)一種叫它通過(guò)一種叫IDLIDL(Interface Definition LanguageInterface Definition Language)的接口定)的接口定義語(yǔ)言,能做到語(yǔ)言無(wú)關(guān)。也就是說(shuō),任何語(yǔ)言義語(yǔ)言,能做到語(yǔ)言無(wú)關(guān)。也就是說(shuō),任何語(yǔ)言都能制作都能制作CORBACORBA組件,而組件,而CORBACORBA組件能在任何語(yǔ)言組件能在任何語(yǔ)言下使用。下使用。CORBACORBA為這些定義明確的程序提供了平臺(tái)和位置的為這些定義明確的程序提供了

29、平臺(tái)和位置的透明性,這些程序是分布式計(jì)算平臺(tái)的基礎(chǔ)。透明性,這些程序是分布式計(jì)算平臺(tái)的基礎(chǔ)。CORBACORBA一種異構(gòu)平臺(tái)下的語(yǔ)言無(wú)關(guān)的對(duì)象互操作模一種異構(gòu)平臺(tái)下的語(yǔ)言無(wú)關(guān)的對(duì)象互操作模型。型。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院什么是什么是CORBACORBACORBACORBA是是一種體系結(jié)構(gòu)一種體系結(jié)構(gòu)CORBACORBA是是一種通信協(xié)議一種通信協(xié)議(GIOP/IIOP)(GIOP/IIOP)CORBACORBA是一條屏蔽了平臺(tái)和編程語(yǔ)言的是一條屏蔽了平臺(tái)和編程語(yǔ)言的軟件軟件總線總線CORBACORBA是一套細(xì)化到編程接口的是一套細(xì)化到編程接口的語(yǔ)言規(guī)范語(yǔ)言規(guī)范CO

30、RBACORBA是一套解決是一套解決進(jìn)程通信的工具進(jìn)程通信的工具武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBA對(duì)象總線技術(shù)對(duì)象總線技術(shù)公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu)(Common Object Request Broker Architecture,CORBA)對(duì)象管理體系結(jié)構(gòu)對(duì)象管理體系結(jié)構(gòu)公用對(duì)象服務(wù)公用設(shè)施應(yīng)用程序?qū)ο髮?duì)象請(qǐng)求代理(ORB)公用對(duì)象服務(wù)公用設(shè)施應(yīng)用程序?qū)ο髮?duì)象請(qǐng)求代理(ORB)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBACORBA對(duì)象總線技術(shù)對(duì)象總線技術(shù)公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu)公用對(duì)象請(qǐng)求代理體系結(jié)構(gòu)( COR

31、BA( CORBA)1.1.對(duì)象請(qǐng)求代理對(duì)象請(qǐng)求代理(ORB):(ORB):管理對(duì)象之間進(jìn)行通信和管理對(duì)象之間進(jìn)行通信和數(shù)據(jù)交換的中間件數(shù)據(jù)交換的中間件. .ORB客戶對(duì)象服務(wù)器對(duì)象請(qǐng)求定位某一服務(wù)激活服務(wù)建立連接通信客戶對(duì)象與服務(wù)器對(duì)象通過(guò)ORB進(jìn)行通信和數(shù)據(jù)交換武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院2 2、公用對(duì)象服務(wù)、公用對(duì)象服務(wù): : 是是CORBACORBA提供的系統(tǒng)級(jí)服務(wù)的集合,是對(duì)象請(qǐng)求代提供的系統(tǒng)級(jí)服務(wù)的集合,是對(duì)象請(qǐng)求代理的功能擴(kuò)充和補(bǔ)充理的功能擴(kuò)充和補(bǔ)充. .為創(chuàng)建對(duì)象、對(duì)象訪問(wèn)控制、對(duì)為創(chuàng)建對(duì)象、對(duì)象訪問(wèn)控制、對(duì)象跟蹤和對(duì)象引用等提供服務(wù)。象跟蹤和對(duì)象引

32、用等提供服務(wù)。 開發(fā)人員無(wú)需從頭開發(fā),只需調(diào)用這些對(duì)象開發(fā)人員無(wú)需從頭開發(fā),只需調(diào)用這些對(duì)象的服務(wù)功能。的服務(wù)功能。公用設(shè)施:基于這些技術(shù)向應(yīng)用程序開發(fā)者和最終用公用設(shè)施:基于這些技術(shù)向應(yīng)用程序開發(fā)者和最終用戶提供一些共性的對(duì)象組件戶提供一些共性的對(duì)象組件應(yīng)用程序?qū)ο螅菏菓?yīng)用程序?qū)ο螅菏荂ORBACORBA基礎(chǔ)結(jié)構(gòu)的最終使用者基礎(chǔ)結(jié)構(gòu)的最終使用者武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBACORBA體系結(jié)構(gòu)體系結(jié)構(gòu)CORBACORBA上的服務(wù)用上的服務(wù)用IDLIDL描述,描述,IDLIDL將被映射為某種程序設(shè)計(jì)語(yǔ)言將被映射為某種程序設(shè)計(jì)語(yǔ)言如如C+C+或或JavaJava

33、,并且分成兩部分。,并且分成兩部分。服務(wù)器方在服務(wù)器方在SkeletonSkeleton的基礎(chǔ)上編寫的基礎(chǔ)上編寫 Object ImplementationObject Implementation而客戶方要訪問(wèn)服務(wù)器對(duì)象上的方法,則要通過(guò)客戶樁。而客戶方要訪問(wèn)服務(wù)器對(duì)象上的方法,則要通過(guò)客戶樁。而雙方又要通過(guò)而而雙方又要通過(guò)而ORBORB(Object Request BrokerObject Request Broker)總線通信。)總線通信。IDL(Interface Definition Language)是用于說(shuō)明對(duì)象接口的標(biāo)識(shí)語(yǔ)言是用于說(shuō)明對(duì)象接口的標(biāo)識(shí)語(yǔ)言武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)

34、學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBACORBA的組成的組成 客戶程序(Client)對(duì)象實(shí)現(xiàn)(Server)動(dòng)態(tài)調(diào)用接口靜態(tài)IDL存根ORB接口動(dòng)態(tài)骨架接口靜態(tài)IDL骨架對(duì)象適配器ORB核GIOP/IIOP接口存儲(chǔ)數(shù)據(jù)庫(kù)實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)庫(kù)GIOPGIOP是一種通信協(xié)議,它規(guī)定了兩個(gè)實(shí)體:是一種通信協(xié)議,它規(guī)定了兩個(gè)實(shí)體:客戶和服務(wù)器客戶和服務(wù)器ORBsORBs間的通信機(jī)制。間的通信機(jī)制。GIOPGIOP因?yàn)槭且环N通用協(xié)議,所以不能直接使用。因?yàn)槭且环N通用協(xié)議,所以不能直接使用。在不同的網(wǎng)絡(luò)上需要有不同的實(shí)現(xiàn)。目前使用最在不同的網(wǎng)絡(luò)上需要有不同的實(shí)現(xiàn)。目前使用最廣的便是廣的便是Internet

35、Internet上的上的GIOPGIOP,稱為,稱為IIOPIIOP(Internet Inter-ORB ProtocolInternet Inter-ORB Protocol)。)。IIOPIIOP基于基于TCP/IPTCP/IP協(xié)議。協(xié)議。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院 ORB(Object Request Broker)CORBACORBA體系結(jié)構(gòu)的核心就是體系結(jié)構(gòu)的核心就是ORBORB??梢赃@樣。可以這樣簡(jiǎn)單理解:簡(jiǎn)單理解:ORBORB就是使得客戶應(yīng)用程序能調(diào)就是使得客戶應(yīng)用程序能調(diào)用遠(yuǎn)端對(duì)象方法的一種機(jī)制。用遠(yuǎn)端對(duì)象方法的一種機(jī)制。 ORB模型武漢紡織大學(xué)

36、數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院ORBORB核核/ORB/ORB接口接口 ORBORB(Object Request BrokerObject Request Broker)是作為對(duì)象互通信的軟總線。)是作為對(duì)象互通信的軟總線。ORBORB截獲服務(wù)請(qǐng)求調(diào)用,然后識(shí)別網(wǎng)絡(luò)中服務(wù)器的位置,即對(duì)截獲服務(wù)請(qǐng)求調(diào)用,然后識(shí)別網(wǎng)絡(luò)中服務(wù)器的位置,即對(duì)象實(shí)現(xiàn)的位置。若服務(wù)器不在運(yùn)行,則象實(shí)現(xiàn)的位置。若服務(wù)器不在運(yùn)行,則ORBORB啟動(dòng)服務(wù)器,并一啟動(dòng)服務(wù)器,并一直等待到它準(zhǔn)備接受服務(wù)請(qǐng)求為止。直等待到它準(zhǔn)備接受服務(wù)請(qǐng)求為止。 ORBORB接口是接口是ORBORB核給出的接口,同時(shí)為客戶和對(duì)象實(shí)現(xiàn)

37、方所見,核給出的接口,同時(shí)為客戶和對(duì)象實(shí)現(xiàn)方所見,提供了一些只能由提供了一些只能由ORBORB核提供的服務(wù):對(duì)象引用操作、核提供的服務(wù):對(duì)象引用操作、ORBORB初始初始化、對(duì)象適配器初始化和獲取初始對(duì)象引用?;?、對(duì)象適配器初始化和獲取初始對(duì)象引用。 ORBORB之間的互操作則采用之間的互操作則采用GIOPGIOP和和IIOPIIOP實(shí)現(xiàn)。實(shí)現(xiàn)。 ORBORB的特性可使客戶程序不用考慮:服務(wù)器編程語(yǔ)言、服務(wù)器的特性可使客戶程序不用考慮:服務(wù)器編程語(yǔ)言、服務(wù)器平臺(tái)、服務(wù)器地點(diǎn)和網(wǎng)絡(luò)協(xié)議。平臺(tái)、服務(wù)器地點(diǎn)和網(wǎng)絡(luò)協(xié)議。 ORBORB提供了兩個(gè)用于存儲(chǔ)有關(guān)對(duì)象信息的服務(wù):接口倉(cāng)庫(kù)(接提供了兩個(gè)用于存儲(chǔ)

38、有關(guān)對(duì)象信息的服務(wù):接口倉(cāng)庫(kù)(接口存儲(chǔ)數(shù)據(jù)庫(kù))和實(shí)現(xiàn)倉(cāng)庫(kù)(實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)庫(kù))??诖鎯?chǔ)數(shù)據(jù)庫(kù))和實(shí)現(xiàn)倉(cāng)庫(kù)(實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)庫(kù))。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院ORBORB提供發(fā)送客戶的請(qǐng)求到目標(biāo)對(duì)象并將應(yīng)答傳給客戶的提供發(fā)送客戶的請(qǐng)求到目標(biāo)對(duì)象并將應(yīng)答傳給客戶的透明通信機(jī)制透明通信機(jī)制ORBORB提供以下透明機(jī)制:提供以下透明機(jī)制:對(duì)象位置透明:對(duì)象位置透明:客戶不需要知道目標(biāo)對(duì)象的位置,它客戶不需要知道目標(biāo)對(duì)象的位置,它可以是在網(wǎng)絡(luò)的另一臺(tái)機(jī)器上,或者屬于同一臺(tái)機(jī)器可以是在網(wǎng)絡(luò)的另一臺(tái)機(jī)器上,或者屬于同一臺(tái)機(jī)器的不同或相同的進(jìn)程。的不同或相同的進(jìn)程。對(duì)象實(shí)現(xiàn)透明:對(duì)象實(shí)現(xiàn)

39、透明:客戶不需要知道目標(biāo)對(duì)象的具體的編客戶不需要知道目標(biāo)對(duì)象的具體的編程語(yǔ)言、其使用的操作系統(tǒng)及硬件平臺(tái)。程語(yǔ)言、其使用的操作系統(tǒng)及硬件平臺(tái)。對(duì)象運(yùn)行狀態(tài)透明:對(duì)象運(yùn)行狀態(tài)透明:客戶向目標(biāo)對(duì)象發(fā)送請(qǐng)求時(shí)不需客戶向目標(biāo)對(duì)象發(fā)送請(qǐng)求時(shí)不需要知道目標(biāo)對(duì)象的運(yùn)行狀態(tài),如果有必要,要知道目標(biāo)對(duì)象的運(yùn)行狀態(tài),如果有必要,ORBORB會(huì)將其會(huì)將其自動(dòng)激活,然后再把請(qǐng)求發(fā)送給它。自動(dòng)激活,然后再把請(qǐng)求發(fā)送給它。通信機(jī)制透明:通信機(jī)制透明:客戶不需要了解客戶不需要了解ORBORB所使用的通信機(jī)制所使用的通信機(jī)制(如(如TCP/IPTCP/IP、共享內(nèi)存、本地方法調(diào)用),所有調(diào)用、共享內(nèi)存、本地方法調(diào)用),所有調(diào)

40、用均可遵循統(tǒng)一的方式進(jìn)行。均可遵循統(tǒng)一的方式進(jìn)行。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院 IDL(Interface Definition Language)IDLIDL使使CORBACORBA做到語(yǔ)言無(wú)關(guān)。做到語(yǔ)言無(wú)關(guān)。是一種描述性語(yǔ)言而不是程序設(shè)計(jì)語(yǔ)言,只描述接口和相關(guān)是一種描述性語(yǔ)言而不是程序設(shè)計(jì)語(yǔ)言,只描述接口和相關(guān)的數(shù)據(jù)類型,不描述實(shí)現(xiàn)的數(shù)據(jù)類型,不描述實(shí)現(xiàn), ,類似于類似于C C中的頭文件。實(shí)際上它不中的頭文件。實(shí)際上它不是真正的編程語(yǔ)言。是真正的編程語(yǔ)言。映射后的代碼叫映射后的代碼叫Client Stub CodeClient Stub Code和和 Serve

41、r Skeleton Server Skeleton CodeCode。 IDLIDL獨(dú)立于編程語(yǔ)言,但可以映射為多種編程語(yǔ)言:如獨(dú)立于編程語(yǔ)言,但可以映射為多種編程語(yǔ)言:如C C,C+C+,JAVAJAVA,AdaAda,CobolCobol等等與與C+C+語(yǔ)言類似,簡(jiǎn)單易學(xué)語(yǔ)言類似,簡(jiǎn)單易學(xué)應(yīng)用時(shí)由應(yīng)用時(shí)由IDLIDL編譯器來(lái)實(shí)現(xiàn)從編譯器來(lái)實(shí)現(xiàn)從IDLIDL語(yǔ)言到具體編程語(yǔ)言的映射語(yǔ)言到具體編程語(yǔ)言的映射武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院IDLIDL編譯編譯由由IDLIDL編譯器根據(jù)編譯器根據(jù)IDLIDL代碼生成相應(yīng)編程代碼生成相應(yīng)編程語(yǔ)言的客戶代理(骨架)和服務(wù)器代

42、理語(yǔ)言的客戶代理(骨架)和服務(wù)器代理(存根)對(duì)象等。(存根)對(duì)象等。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院對(duì)象適配器對(duì)象適配器 對(duì)象適配器是對(duì)象適配器是ORBORB與對(duì)象實(shí)現(xiàn)間的接口,與對(duì)象實(shí)現(xiàn)間的接口,其主要的工作如下:其主要的工作如下: 對(duì)象實(shí)現(xiàn)的注冊(cè);對(duì)象實(shí)現(xiàn)的注冊(cè);生成及管理對(duì)象引用;生成及管理對(duì)象引用;服務(wù)器進(jìn)程激活;服務(wù)器進(jìn)程激活;對(duì)象激活對(duì)象激活/ /撤銷撤銷/ /向上調(diào)用。向上調(diào)用。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院基于基于CORBACORBA的軟件開發(fā)的軟件開發(fā) 編寫編寫OMGOMG定義的定義的IDLIDL接口規(guī)范說(shuō)明文件接口規(guī)范說(shuō)明

43、文件,描述服務(wù)對(duì)象所支持的,描述服務(wù)對(duì)象所支持的操作和類型;操作和類型;編譯編譯IDLIDL規(guī)格說(shuō)明文件,生成客戶端存根和服務(wù)器端骨架;規(guī)格說(shuō)明文件,生成客戶端存根和服務(wù)器端骨架;編寫編寫對(duì)象實(shí)現(xiàn)程序?qū)ο髮?shí)現(xiàn)程序;編寫編寫服務(wù)器和客戶主程序結(jié)構(gòu)服務(wù)器和客戶主程序結(jié)構(gòu); ;將對(duì)象實(shí)現(xiàn)程序,服務(wù)主程序和生成的服務(wù)器骨架編譯連接成將對(duì)象實(shí)現(xiàn)程序,服務(wù)主程序和生成的服務(wù)器骨架編譯連接成服務(wù)端可執(zhí)行程序服務(wù)端可執(zhí)行程序;將客戶端主程序和生成的客戶端存根編譯連接成將客戶端主程序和生成的客戶端存根編譯連接成客戶端可執(zhí)行客戶端可執(zhí)行程序程序,且若服務(wù)器端是基于,且若服務(wù)器端是基于WebWeb和瀏覽器方式的,則

44、相應(yīng)地編寫和瀏覽器方式的,則相應(yīng)地編寫HTMLHTML超文本文件,鏈入編寫的客戶方超文本文件,鏈入編寫的客戶方Java AppletJava Applet小程序;小程序;分別分別運(yùn)行運(yùn)行服務(wù)器端和客戶端程序。服務(wù)器端和客戶端程序。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院通常,開發(fā)一個(gè)通常,開發(fā)一個(gè)CORBACORBA應(yīng)用的大致步驟如下:應(yīng)用的大致步驟如下:1 1)定義)定義 IDLIDL。2 2)用)用IDL complier IDL complier 將將IDLIDL編譯成編譯成 Client Stub Client Stub 代碼和代碼和 Server SkeletonS

45、erver Skeleton代碼。代碼。3 3)編寫)編寫ServerServer方的實(shí)現(xiàn)方的實(shí)現(xiàn)(Implementation)(Implementation)代碼。代碼。4 4)編寫)編寫 ServerServer。5 5)編寫)編寫 ClientClient。6 6)編譯和調(diào)試。)編譯和調(diào)試。7 7)運(yùn)行程序。)運(yùn)行程序。武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院CORBACORBA的特點(diǎn)的特點(diǎn) 同時(shí)支持分布計(jì)算技術(shù)和面向?qū)ο蠹夹g(shù)。同時(shí)支持分布計(jì)算技術(shù)和面向?qū)ο蠹夹g(shù)。支持許多現(xiàn)存的語(yǔ)言并把這些語(yǔ)言混合到一個(gè)分支持許多現(xiàn)存的語(yǔ)言并把這些語(yǔ)言混合到一個(gè)分布式應(yīng)用系統(tǒng)之中。布式應(yīng)

46、用系統(tǒng)之中。 代理機(jī)制使得客戶端程序和服務(wù)器端程序完全分代理機(jī)制使得客戶端程序和服務(wù)器端程序完全分離,這樣服務(wù)器端和客戶端程序都可自由地修改離,這樣服務(wù)器端和客戶端程序都可自由地修改而無(wú)需通知對(duì)方。而無(wú)需通知對(duì)方。 提供了提供了“軟件總線軟件總線”的功能,實(shí)現(xiàn)了軟件組件的的功能,實(shí)現(xiàn)了軟件組件的即插即用。即插即用。 提供了一種高度的互操作性,保證了建立在不同提供了一種高度的互操作性,保證了建立在不同CORBACORBA產(chǎn)品之上的分布式樣對(duì)象能夠相互通信。產(chǎn)品之上的分布式樣對(duì)象能夠相互通信。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.3 COM4.6.3 COM對(duì)象總線技術(shù)

47、對(duì)象總線技術(shù) 組件對(duì)象模型(組件對(duì)象模型(Component Object Model, COMComponent Object Model, COM)是微軟是微軟(Microsoft)(Microsoft)的組件軟件方案,是為組件的的組件軟件方案,是為組件的互操作而定義的二進(jìn)制組件模型?;ゲ僮鞫x的二進(jìn)制組件模型。分布式組件對(duì)象模型(分布式組件對(duì)象模型(Distribnted Component Distribnted Component Object ModelObject Model,DCOMDCOM)是)是COMCOM的一個(gè)分布式擴(kuò)充,的一個(gè)分布式擴(kuò)充,是在分布式計(jì)算環(huán)境的遠(yuǎn)程過(guò)程調(diào)

48、用的基礎(chǔ)上開是在分布式計(jì)算環(huán)境的遠(yuǎn)程過(guò)程調(diào)用的基礎(chǔ)上開發(fā)的。發(fā)的。COM+COM+是按是按COMCOM的標(biāo)準(zhǔn)建立的,并組合了一些工具的的標(biāo)準(zhǔn)建立的,并組合了一些工具的新版本,如新版本,如MTSMTS(Microsoft Transaction Microsoft Transaction ServerServer)、)、MSMQ(Microsoft Message Queues)MSMQ(Microsoft Message Queues)等。等。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院 COM COM標(biāo)準(zhǔn)標(biāo)準(zhǔn) COMCOM作為一面向?qū)ο蟮木幊棠P停康氖翘岣哕浖淖鳛橐幻嫦驅(qū)ο?/p>

49、的編程模型,目的是提高軟件的交互協(xié)同工作能力,而不受開發(fā)語(yǔ)言和方法、運(yùn)行環(huán)交互協(xié)同工作能力,而不受開發(fā)語(yǔ)言和方法、運(yùn)行環(huán)境和地點(diǎn)的限制。境和地點(diǎn)的限制。 在在WindowsWindows系統(tǒng)平臺(tái)上,一個(gè)系統(tǒng)平臺(tái)上,一個(gè)COMCOM組件或是一個(gè)組件或是一個(gè)DLLDLL文文件,或是一個(gè)件,或是一個(gè)EXEEXE文件。文件。 一個(gè)組件程序可以包含多個(gè)一個(gè)組件程序可以包含多個(gè)COMCOM對(duì)象,每個(gè)對(duì)象,每個(gè)COMCOM對(duì)象可對(duì)象可以實(shí)現(xiàn)多個(gè)接口。以實(shí)現(xiàn)多個(gè)接口。COM組件COM對(duì)象COM對(duì)象COM接口COM接口武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COMCOM對(duì)象對(duì)象 在在COMCOM

50、規(guī)范中,并沒有對(duì)規(guī)范中,并沒有對(duì)COMCOM對(duì)象進(jìn)行嚴(yán)格的定義。對(duì)象進(jìn)行嚴(yán)格的定義。COMCOM對(duì)象同對(duì)象同C+C+語(yǔ)言中的類一樣,也包括屬性和方語(yǔ)言中的類一樣,也包括屬性和方法。屬性反映了對(duì)象的狀態(tài),方法則是對(duì)象提供法。屬性反映了對(duì)象的狀態(tài),方法則是對(duì)象提供給外界的接口,客戶必須通過(guò)接口才能獲得對(duì)象給外界的接口,客戶必須通過(guò)接口才能獲得對(duì)象的服務(wù)。的服務(wù)。COMCOM對(duì)象以提供功能服務(wù)為主,可用來(lái)替代傳統(tǒng)的對(duì)象以提供功能服務(wù)為主,可用來(lái)替代傳統(tǒng)的APIAPI(Application Programming InterfaceApplication Programming Interface)

51、函)函數(shù)。數(shù)。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COMCOM對(duì)象標(biāo)識(shí)對(duì)象標(biāo)識(shí)客戶并不直接訪問(wèn)客戶并不直接訪問(wèn)COMCOM組件,而是通過(guò)一個(gè)全局組件,而是通過(guò)一個(gè)全局標(biāo)識(shí)符進(jìn)行對(duì)象的創(chuàng)建和初始化工作。標(biāo)識(shí)符進(jìn)行對(duì)象的創(chuàng)建和初始化工作。在在COMCOM的規(guī)范中,每個(gè)對(duì)象有一個(gè)的規(guī)范中,每個(gè)對(duì)象有一個(gè)128128位的全局惟位的全局惟一標(biāo)識(shí)符一標(biāo)識(shí)符GUIDGUID(Globally Unique IdentifierGlobally Unique Identifier)來(lái)標(biāo)識(shí),稱為來(lái)標(biāo)識(shí),稱為CLSIDCLSID(Class IdentifierClass Identifie

52、r)。)。 (GUIDGUID不是專門用來(lái)定義不是專門用來(lái)定義COMCOM對(duì)象標(biāo)識(shí)符的對(duì)象標(biāo)識(shí)符的, ,且且GUIDGUID是一個(gè)隨機(jī)數(shù))是一個(gè)隨機(jī)數(shù))COMCOM庫(kù)提供了一個(gè)庫(kù)提供了一個(gè)APIAPI函數(shù)產(chǎn)生函數(shù)產(chǎn)生GUIDGUID: HRESULT CoCreateGuid(GUID HRESULT CoCreateGuid(GUID * * pguid); pguid);武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COMCOM接口接口 COMCOM規(guī)范的核心內(nèi)容是關(guān)于接口的定義。規(guī)范的核心內(nèi)容是關(guān)于接口的定義。 COMCOM接口有兩種:標(biāo)準(zhǔn)接口和用戶接口,接口有兩種:標(biāo)準(zhǔn)接口和

53、用戶接口,用戶接口是用戶為用戶接口是用戶為COMCOM對(duì)象設(shè)計(jì)的接口。對(duì)象設(shè)計(jì)的接口。標(biāo)準(zhǔn)接口是標(biāo)準(zhǔn)接口是COMCOM規(guī)范定義的,可用來(lái)訪問(wèn)規(guī)范定義的,可用來(lái)訪問(wèn)有關(guān)有關(guān)COMCOM對(duì)象的信息。對(duì)象的信息。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院接口結(jié)構(gòu)接口結(jié)構(gòu)類似于類似于COMCOM對(duì)象的標(biāo)識(shí),對(duì)象的標(biāo)識(shí),COMCOM接口也采用接口也采用GUIDGUID,稱為稱為IIDIID(interface identifierinterface identifier). .客戶使用一個(gè)客戶使用一個(gè)COMCOM對(duì)象的接口,必須知道接口對(duì)象的接口,必須知道接口的的IIDIID和接口提供的

54、方法。和接口提供的方法。接口指針PVtable指針指向功能1指向功能2對(duì)象實(shí)現(xiàn)(virtual function table)(供客戶使用)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院接口定義語(yǔ)言接口定義語(yǔ)言(MIDL)(MIDL)微軟用其接口定義語(yǔ)言微軟用其接口定義語(yǔ)言MIDLMIDL來(lái)精確定義接口,每一來(lái)精確定義接口,每一接口中的方法以及每一方法的參數(shù)。接口中的方法以及每一方法的參數(shù)。Microsoft VC+Microsoft VC+提供了提供了MIDLMIDL工具,可把工具,可把IDLIDL接口描接口描述文件(述文件(* *.idl.idl)編譯成)編譯成C/C+C/C+語(yǔ)

55、言兼容的接口描述語(yǔ)言兼容的接口描述頭文件(頭文件(* *hh)供組件程序和客戶程序使用。)供組件程序和客戶程序使用。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院COMCOM庫(kù)庫(kù) 在在Microsoft WindowsMicrosoft Windows操作系統(tǒng)環(huán)境下,操作系統(tǒng)環(huán)境下,COMCOM庫(kù)以庫(kù)以DLLDLL文文件的形式存在,其中包括以下幾項(xiàng)內(nèi)容:件的形式存在,其中包括以下幾項(xiàng)內(nèi)容:提供少量的提供少量的APIAPI函數(shù)函數(shù),用來(lái)加速客戶和服務(wù)器,用來(lái)加速客戶和服務(wù)器COMCOM應(yīng)用程序應(yīng)用程序的創(chuàng)建;的創(chuàng)建;完成對(duì)象實(shí)現(xiàn)的完成對(duì)象實(shí)現(xiàn)的定位服務(wù)定位服務(wù)。它根據(jù)唯一的類標(biāo)識(shí),通

56、過(guò)系。它根據(jù)唯一的類標(biāo)識(shí),通過(guò)系統(tǒng)注冊(cè)表來(lái)確定類和服務(wù)器實(shí)現(xiàn)的地址。統(tǒng)注冊(cè)表來(lái)確定類和服務(wù)器實(shí)現(xiàn)的地址。實(shí)現(xiàn)實(shí)現(xiàn)透明的遠(yuǎn)過(guò)程調(diào)用透明的遠(yuǎn)過(guò)程調(diào)用,以支持在本地或遠(yuǎn)程服務(wù)器中運(yùn),以支持在本地或遠(yuǎn)程服務(wù)器中運(yùn)行的對(duì)象。行的對(duì)象。提供一套應(yīng)用程序如何控制其進(jìn)程空間里提供一套應(yīng)用程序如何控制其進(jìn)程空間里內(nèi)存的分配和釋內(nèi)存的分配和釋放放的標(biāo)準(zhǔn)機(jī)制。的標(biāo)準(zhǔn)機(jī)制。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院進(jìn)程內(nèi)調(diào)用進(jìn)程內(nèi)調(diào)用在進(jìn)程內(nèi),服務(wù)器組件和客戶程序運(yùn)行在進(jìn)程內(nèi),服務(wù)器組件和客戶程序運(yùn)行在同一地址空間中,一旦客戶程序與組在同一地址空間中,一旦客戶程序與組件程序建立通信關(guān)系,客戶程序就可以

57、件程序建立通信關(guān)系,客戶程序就可以通過(guò)得到的接口指針直接調(diào)用服務(wù)器對(duì)通過(guò)得到的接口指針直接調(diào)用服務(wù)器對(duì)象的成員函數(shù)。象的成員函數(shù)。 接口指針PVtable指針指向功能1指向功能2對(duì)象實(shí)現(xiàn)(virtual function table)武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院本地調(diào)用本地調(diào)用在同一機(jī)器上的不同進(jìn)程,在同一機(jī)器上的不同進(jìn)程,COMCOM采用了采用了本地過(guò)程調(diào)用本地過(guò)程調(diào)用LPCLPC(Local Procedure CallLocal Procedure Call)實(shí))實(shí)現(xiàn)進(jìn)程外組件與客戶程序的通信。圖中虛線表明,對(duì)開發(fā)人員而言,不需考慮底層細(xì)現(xiàn)進(jìn)程外組件與客戶程序

58、的通信。圖中虛線表明,對(duì)開發(fā)人員而言,不需考慮底層細(xì)節(jié),節(jié),COMCOM實(shí)現(xiàn)了進(jìn)程模型的透明,使得客戶程序調(diào)用接口成員函數(shù)好像是直接進(jìn)行的。實(shí)現(xiàn)了進(jìn)程模型的透明,使得客戶程序調(diào)用接口成員函數(shù)好像是直接進(jìn)行的。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院分布式分布式COMCOM(DCOMDCOM) 對(duì)于組件程序與客戶程序不在同一主機(jī)的情形,對(duì)于組件程序與客戶程序不在同一主機(jī)的情形,DCOMDCOM則把則把COMCOM的的進(jìn)程模型的透明性拓展為位置透明性,把進(jìn)程模型的透明性拓展為位置透明性,把COMCOM中本地跨進(jìn)程(同中本地跨進(jìn)程(同一主機(jī)不同進(jìn)程)通信用一個(gè)網(wǎng)絡(luò)協(xié)議傳輸過(guò)程來(lái)替代

59、,組件一主機(jī)不同進(jìn)程)通信用一個(gè)網(wǎng)絡(luò)協(xié)議傳輸過(guò)程來(lái)替代,組件程序和客戶程序均感覺不到中間發(fā)生的過(guò)程,只是中間數(shù)據(jù)傳程序和客戶程序均感覺不到中間發(fā)生的過(guò)程,只是中間數(shù)據(jù)傳遞的路線更長(zhǎng)一些。遞的路線更長(zhǎng)一些。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院基于基于COMCOM組件的組件的Windows DNAWindows DNA軟軟件開發(fā)模式件開發(fā)模式 Windows DNAWindows DNA(Windows Distributed Windows Distributed interNet Application ArchitectureinterNet Application A

60、rchitecture)是)是WindowsWindows平臺(tái)上基于三層模型的應(yīng)用程序開發(fā)平臺(tái)上基于三層模型的應(yīng)用程序開發(fā)模式。模式。 武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢紡織大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院4.6.4 4.6.4 組件庫(kù)技術(shù)組件庫(kù)技術(shù) 通??梢圆捎靡韵峦緩絹?lái)獲取組件:通??梢圆捎靡韵峦緩絹?lái)獲取組件:基于領(lǐng)域分析獲取組件;基于領(lǐng)域分析獲取組件;從現(xiàn)存組件中獲取得符合要求的組件,直接使用或作適從現(xiàn)存組件中獲取得符合要求的組件,直接使用或作適應(yīng)性修改,得到可復(fù)用的組件;應(yīng)性修改,得到可復(fù)用的組件;通過(guò)遺產(chǎn)工程,將具有潛在復(fù)用價(jià)值的組件提取出來(lái),通過(guò)遺產(chǎn)工程,將具有潛在復(fù)用價(jià)值的組件提取出來(lái),得到可復(fù)用的組件;得到可復(fù)用的組件;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論