版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件架構(gòu)集成技術(shù) 軟件架構(gòu)集成技術(shù) l 軟件體系結(jié)構(gòu)是構(gòu)建計(jì)算機(jī)軟件實(shí)踐的基礎(chǔ)。與建筑師設(shè)定建筑項(xiàng)目的設(shè)計(jì)原則和目標(biāo),作為繪圖員畫(huà)圖的基礎(chǔ)一樣,一個(gè)軟件架構(gòu)師或系統(tǒng)架構(gòu)師陳述軟件構(gòu)架,以作為實(shí)際系統(tǒng)的設(shè)計(jì)方案的基礎(chǔ)。l 軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。 軟件架構(gòu)是一個(gè)系統(tǒng)的草圖。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊。架構(gòu)的目標(biāo)是什么 l 可靠性(Reliable)。軟件系統(tǒng)對(duì)于用戶的商業(yè)經(jīng)營(yíng)和管理來(lái)說(shuō)極為重要,因此軟件系統(tǒng)必須非常可靠。l 安全行(Se
2、cure)。軟件系統(tǒng)所承擔(dān)的交易的商業(yè)價(jià)值極高,系統(tǒng)的安全性非常重要。l 可擴(kuò)展性(Scalable)。軟件必須能夠在用戶的使用率、用戶的數(shù)目增加很快的情況下,保持合理的性能。只有這樣,才能適應(yīng)用戶的市場(chǎng)擴(kuò)展得可能性。 l 可定制化(Customizable)。同樣的一套軟件,可以根據(jù)客戶群的不同和市場(chǎng)需求的變化進(jìn)行調(diào)整。l 可擴(kuò)展性(Extensible)。在新技術(shù)出現(xiàn)的時(shí)候,一個(gè)軟件系統(tǒng)應(yīng)當(dāng)允許導(dǎo)入新技術(shù),從而對(duì)現(xiàn)有系統(tǒng)進(jìn)行功能和性能的擴(kuò)展l 可維護(hù)性(Maintainable)。軟件系統(tǒng)的維護(hù)包括兩方面,一是排除現(xiàn)有的錯(cuò)誤,二是將新的軟件需求反映到現(xiàn)有系統(tǒng)中去。一個(gè)易于維護(hù)的系統(tǒng)可以有效
3、地降低技術(shù)支持的花費(fèi)9.1.1什么是CORBA l CORBA(Common Object Request Broker Architecture公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))是由OMG組織制訂的一種標(biāo)準(zhǔn)的面向?qū)ο髴?yīng)用程序體系規(guī)范。其職責(zé)是為應(yīng)用開(kāi)發(fā)提供一個(gè)公共框架,制訂工業(yè)指南和對(duì)象管理規(guī)范,加快對(duì)象技術(shù)的發(fā)展。l CORBA用于在不同進(jìn)程(程序)之間,甚至是不同物理機(jī)器上的進(jìn)程之間通訊。底層技術(shù)依靠RPC(遠(yuǎn)程過(guò)程調(diào)用)實(shí)現(xiàn)。面向?qū)ο蟮能浖?,以?shù)據(jù)為中心設(shè)計(jì),對(duì)象類(lèi)既具有模塊的封裝性和類(lèi)屬等特性,還具有繼承特性,極大地提高了類(lèi)的可擴(kuò)充性和可復(fù)用能力。對(duì)象類(lèi)較之于傳統(tǒng)軟件的功能模塊而另具有的優(yōu)點(diǎn)
4、是:l (1) 易于理解,具有完整的語(yǔ)義特征;l (2) 易于擴(kuò)充和修改,具有較高的通用性和適應(yīng)性;l (3) 易于構(gòu)造組裝,具有規(guī)范的外部接口。9.1.1什么是CORBAlCORBA具有如下突出特點(diǎn):l(1)分布計(jì)算技術(shù)和面向?qū)ο缶幊碳夹g(shù)(Object Oriented Programming,OOP)相融合。通過(guò)OOP 繼承性,實(shí)現(xiàn)軟件源代碼的復(fù)用。l(2)引入了“代理”的概念。代理的基本作用是完成對(duì)客戶方提出的抽象服務(wù)請(qǐng)求的映射;自動(dòng)發(fā)現(xiàn)和尋找服務(wù)器;自動(dòng)設(shè)定路由,實(shí)現(xiàn)到服務(wù)方的執(zhí)行。通過(guò)代理,用戶在編制客戶程序時(shí)不需要了解實(shí)現(xiàn)的細(xì)節(jié),只需完整地定義和說(shuō)明所需完成的任務(wù)和目標(biāo)。l(3)客
5、戶端程序與服務(wù)器端程序的完全分離。通過(guò)代理機(jī)制,客戶方不再同服務(wù)器發(fā)生直接聯(lián)系,而僅和代理進(jìn)行交互。因此在保持調(diào)用方式不變的情況下,服務(wù)器方和客戶方程序都可以自由地修改和升級(jí)而無(wú)須通知對(duì)方,從根本上改變了傳統(tǒng)的面向過(guò)程調(diào)用機(jī)制的客戶端服務(wù)器模式。l(4)提供了“軟件總線”的功能。軟件總線是CORBA定義的一組獨(dú)立于語(yǔ)言和環(huán)境的接口規(guī)范,按照該接口規(guī)范開(kāi)發(fā)出來(lái)的軟件,便可以方便地集成到該系統(tǒng)中,而這個(gè)規(guī)范獨(dú)立于任何實(shí)現(xiàn)語(yǔ)言。l(5)設(shè)計(jì)原則和設(shè)計(jì)方式的層次化。CORBA規(guī)范僅定義了ORB中用到的最基本對(duì)象、屬性和方法,而面向應(yīng)用的對(duì)象可以在OMA的應(yīng)用對(duì)象、領(lǐng)域?qū)ο蠡蜷_(kāi)發(fā)環(huán)境中逐層進(jìn)行定義和實(shí)現(xiàn)
6、,CORBA規(guī)范是針對(duì)ORB通信中間件制定的工業(yè)標(biāo)準(zhǔn),而面向應(yīng)用的對(duì)象定義則可以在對(duì)象管理體系結(jié)構(gòu)的應(yīng)用對(duì)象或應(yīng)用開(kāi)發(fā)環(huán)境中逐步分層定義和實(shí)現(xiàn)。9.1.2 CORBA的標(biāo)準(zhǔn)規(guī)范 l CORBA的核心是對(duì)象請(qǐng)求代理ORB,它提供對(duì)象定位、對(duì)象激活和對(duì)象通訊的透明機(jī)制??蛻舭l(fā)出要求服務(wù)的請(qǐng)求,而對(duì)象則提供服務(wù),ORB把請(qǐng)求發(fā)送給對(duì)象、把輸出值返回給客戶。ORB的服務(wù)對(duì)客戶而言是透明的,客戶不知道對(duì)象駐留在網(wǎng)絡(luò)中何處、對(duì)象是如何通訊、如何實(shí)現(xiàn)以及如何執(zhí)行的,只要他持有對(duì)某對(duì)象的對(duì)象引用,就可以向該對(duì)象發(fā)出服務(wù)請(qǐng)求。CORBA允許用戶以兩種不同的方式提出對(duì)象請(qǐng)求:l 1)靜態(tài)調(diào)用靜態(tài)調(diào)用:l 通過(guò)給定
7、接口的存根,在編譯了對(duì)象代碼后,進(jìn)入客戶端的程序。因此,靜態(tài)調(diào)用必須在編譯時(shí)就知道對(duì)象及其類(lèi)型。l 2)動(dòng)態(tài)調(diào)用動(dòng)態(tài)調(diào)用:l 通過(guò)ORB的動(dòng)態(tài)調(diào)用接口DII,在運(yùn)行時(shí)生成訪問(wèn)對(duì)象的代碼。l 不管客戶以哪一種形式提出請(qǐng)求,ORB的任務(wù)是:找出所要對(duì)象的位置,激活該對(duì)象,向?qū)ο髠鬟f此請(qǐng)求。對(duì)象執(zhí)行所請(qǐng)求的服務(wù)后,把輸出值返回給ORB,然后再由ORB返回給客戶。9.1.2 CORBA的標(biāo)準(zhǔn)規(guī)范lCORBA的重要概念是:l1對(duì)象連接對(duì)象連接lCORBA廣泛地支持對(duì)象的實(shí)現(xiàn),在單服務(wù)器系統(tǒng)中也可以實(shí)現(xiàn)由接口定義語(yǔ)言定義的接口。ORB的靈活性既可以直接集成已有的應(yīng)用,又不會(huì)使新對(duì)象受某些原則的制約。對(duì)象連
8、接提供了有不同類(lèi)型對(duì)象實(shí)現(xiàn)時(shí),使用ORB服務(wù)的方法,服務(wù)包括:對(duì)象引用、方法調(diào)用、安全控制、對(duì)象實(shí)現(xiàn)的激活與靜候等。l2接口定義語(yǔ)言(IDL)lCORBA用IDL來(lái)描述對(duì)象接口,IDL是一種說(shuō)明性語(yǔ)言,它的語(yǔ)法類(lèi)似于C+。IDL提供的數(shù)據(jù)類(lèi)型有:基本數(shù)據(jù)類(lèi)型、構(gòu)造類(lèi)型、模板類(lèi)型、和復(fù)合類(lèi)型、操作說(shuō)明。這些類(lèi)型可以用來(lái)定義變?cè)念?lèi)型和返回類(lèi)型,操作說(shuō)明則可以用來(lái)定義對(duì)象提供的服務(wù)。lIDL還提供模塊構(gòu)造,其中可以包含接口,而接口是IDL各類(lèi)型中最重要的,它除了描述CORBA對(duì)象以外,還可以用作對(duì)象引用類(lèi)型。lIDL提供了接口繼承性,派生接口可以繼承其基類(lèi)接口所定義的操作與類(lèi)型。IDL的接口繼承性
9、有其特殊性,此處不贅述。l總之,CORBA的IDL是一種說(shuō)明性語(yǔ)言,描述面向?qū)ο笙到y(tǒng)開(kāi)發(fā)所遵循的接口與實(shí)現(xiàn)相分離的基本原則。l3動(dòng)態(tài)調(diào)用接口動(dòng)態(tài)調(diào)用接口l把IDL說(shuō)明編譯成面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的實(shí)代碼后,客戶可以調(diào)用已知對(duì)象的操作。在某些應(yīng)用中,用戶并不了解應(yīng)用接口編譯信息,但也要求調(diào)用對(duì)象的操作,這時(shí)就要?jiǎng)討B(tài)調(diào)用接口來(lái)調(diào)用用戶的操作了。例如,圖形用戶接口應(yīng)支持用戶瀏覽接口公共庫(kù),以獲得每個(gè)對(duì)象所支持的操作信息,用戶可根據(jù)自己的需求從瀏覽對(duì)象中挑選出所需的對(duì)象操作,具體的對(duì)象操作的調(diào)用實(shí)際上是用動(dòng)態(tài)調(diào)用接口來(lái)完成的。l4接口公用庫(kù)接口公用庫(kù)l接口公用庫(kù)持久地存儲(chǔ)IDL的接口說(shuō)明,借助于接口公用
10、庫(kù),可以實(shí)現(xiàn)對(duì)象繼承性層次結(jié)構(gòu)的導(dǎo)航,并且提供了有關(guān)對(duì)象支持的所有操作的描述。接口公用庫(kù)最常見(jiàn)的功能是為接口瀏覽器提供信息,幫助應(yīng)用開(kāi)發(fā)者找出潛在的可重用的軟件部件。ORB可以利用接口公用庫(kù)檢查運(yùn)行時(shí)的操作參數(shù)類(lèi)型,但接口公用庫(kù)的基本功能是提供類(lèi)型信息,為動(dòng)態(tài)調(diào)用接口發(fā)送請(qǐng)求提供信息支持。 9.1.3 CORBA的核心內(nèi)容的核心內(nèi)容l對(duì)象管理體系結(jié)構(gòu)對(duì)象管理體系結(jié)構(gòu)OMA圖9.1 OMA參考模型 對(duì)象請(qǐng)求代理公共設(shè)施應(yīng)用接口領(lǐng)域接口 對(duì)象服務(wù)9.1.3 CORBA的核心內(nèi)容的核心內(nèi)容l (1)對(duì)象服務(wù)object services(OS)。定義加入ORB的系統(tǒng)級(jí)服務(wù),如安全性、命名和事務(wù)處理,
11、它們是與應(yīng)用域無(wú)關(guān)的。對(duì)象服務(wù)是一些最有可能被用來(lái)支持分布式對(duì)象環(huán)境F構(gòu)造應(yīng)用的標(biāo)準(zhǔn)化部件。目前通過(guò)的對(duì)象服務(wù)包括對(duì)象命名服務(wù)、事件服務(wù)、對(duì)象生存期服務(wù)、永久對(duì)象服務(wù)、對(duì)象關(guān)系服務(wù)以及事務(wù)服務(wù)、并發(fā)控制服務(wù)等等。l (2)公共設(shè)施common facilities(CF)。水平級(jí)的服務(wù),定義應(yīng)用程序級(jí)服務(wù),如復(fù)合文檔等。公共設(shè)施是比對(duì)象服務(wù)粒度更大的可重用的部件塊。它主要用來(lái)幫助構(gòu)造跨多個(gè)應(yīng)用域的應(yīng)用程序。典型的公共設(shè)施包括用戶接口、信息管理、系統(tǒng)管理和任務(wù)管理等。l (3)領(lǐng)域接口如domain interfaces(DI)。面向待定的領(lǐng)域,在OMA中所處的位置與對(duì)象服務(wù)與公共設(shè)施相似。l
12、(4)應(yīng)用接口application interfaces(AI)。面向指定的現(xiàn)實(shí)世界應(yīng)用。是指供應(yīng)商或用戶借助于ORB、公共對(duì)象服務(wù)及公共設(shè)施而開(kāi)發(fā)的特定產(chǎn)品,它不在CORBA體系結(jié)構(gòu)中標(biāo)推化。 9.1.3 CORBA的核心內(nèi)容的核心內(nèi)容l 對(duì)象框架(object frameworks) 圖9.2 OMA的對(duì)象框架OS DFAI DI OSCF OSOS DFDI OSORB對(duì)象框架OS:對(duì)象服務(wù) CF:公共設(shè)施DI:領(lǐng)域接口 AI:應(yīng)用接口9.2.1 什么是什么是EJB l EJB是一種基于構(gòu)件的開(kāi)發(fā)模型,它是Java服務(wù)器端服務(wù)框架的規(guī)范。EJB詳細(xì)地定義了一個(gè)可以方便地部署Java構(gòu)件
13、的服務(wù)框架模型,用于創(chuàng)建可伸縮、多層次、跨平臺(tái)、分布式的應(yīng)用,并可創(chuàng)建具有動(dòng)態(tài)擴(kuò)展性的服務(wù)器端的應(yīng)用。l EJB具有以下特點(diǎn):l (1) EJB以構(gòu)件的形式組織服務(wù)器:EJB構(gòu)件是直接用Java語(yǔ)言編寫(xiě)的服務(wù)器構(gòu)件,Java語(yǔ)言編寫(xiě)的跨平臺(tái)特性使得EJB構(gòu)件可以方便地移植到各種操作系統(tǒng)平臺(tái)和EJB服務(wù)器上;l (2) EJB構(gòu)件實(shí)現(xiàn)僅需考慮應(yīng)用需求,其系統(tǒng)級(jí)服務(wù)諸如事務(wù)管理、安全性、構(gòu)件生命周期和線程等,都通過(guò)EJB服務(wù)器自動(dòng)進(jìn)行管理的;l (3) EJB體系結(jié)構(gòu)具有面向?qū)ο?、分布式、跨平臺(tái)、可擴(kuò)充性、安全性以及便于開(kāi)發(fā)等優(yōu)點(diǎn),同時(shí)它還是以協(xié)議為中心的,任何協(xié)議都可以被利用。9.2.2 EJB
14、的規(guī)范介紹的規(guī)范介紹l Enterprise Bean 依賴容器來(lái)獲取它的需求。如果 Enterprise Bean 需要訪問(wèn) JDBC 連接或另一個(gè) Enterprise Bean,那么它需要利用容器來(lái)完成此項(xiàng)操作;如果 Enterprise Bean 需要訪問(wèn)調(diào)用者的身份、獲取它自身的引用或訪問(wèn)特性,那么它需要利用容器來(lái)完成這些操作。Enterprise Bean 通過(guò)以下三種機(jī)制之一與容器交互:回調(diào)方法、EJBContext 接口或 JNDI。 回調(diào)方法: 每個(gè) bean 都會(huì)實(shí)現(xiàn) EnterpriseBean 接口的子類(lèi)型,該接口定義了一些方法,稱作回調(diào)方法。每個(gè)回調(diào)方法在 bean
15、的生命周期期間向它提示一個(gè)不同事件,當(dāng)容器要合用某個(gè) bean、將其狀態(tài)存儲(chǔ)到數(shù)據(jù)庫(kù)、結(jié)束事務(wù)、從內(nèi)存中除去該 bean 等操作時(shí),它將調(diào)用這些方法來(lái)通知該 bean?;卣{(diào)方法可以讓 bean 在事件之前或之后立即執(zhí)行內(nèi)部調(diào)整。在第 4 章中將詳細(xì)討論回調(diào)方法。 9.2.2 EJB的規(guī)范介紹的規(guī)范介紹l EJBContext: 每個(gè) bean 都會(huì)得到一個(gè) EJBContext 對(duì)象,它是對(duì)容器的直接引用。EJBContext 接口提供了用于與容器交互的方法,因此那個(gè) bean 可以請(qǐng)求關(guān)于環(huán)境的信息,如其客戶機(jī)的身份或事務(wù)的狀態(tài),或者 bean 可以獲取它自身的遠(yuǎn)程引用。l Java 命名和
16、目錄接口 (JNDI): JNDI 是 Java 平臺(tái)的標(biāo)準(zhǔn)擴(kuò)展,用于訪問(wèn)命名系統(tǒng),如 LDAP、NetWare、文件系統(tǒng)等。每個(gè) bean 自動(dòng)擁有對(duì)某個(gè)特定命名系統(tǒng)(稱作環(huán)境命名上下文 (ENC))的訪問(wèn)權(quán)。ENC 由容器管理,bean 使用 JNDI 來(lái)訪問(wèn) ENC。JNDI ENC 允許 bean 訪問(wèn)資源,如 JDBC 連接、其它 Enterprise Bean,以及特定于該 bean 的屬性。 9.2.2 EJB的規(guī)范介紹的規(guī)范介紹l EJB 規(guī)范定義了 bean-容器契約,它包括了以上描述的機(jī)制(回調(diào)、EJBContext、JNDI ENC)以及一組嚴(yán)謹(jǐn)?shù)囊?guī)則,這些規(guī)則描述了 E
17、nterprise Bean 及其容器在運(yùn)行時(shí)的行為、如何檢查安全性訪問(wèn)、如何管理事務(wù)、如何應(yīng)用持續(xù),等等。bean-容器契約旨在使 Enterprise Bean 可以在 EJB 容器之間移植,從而可以只開(kāi)發(fā)一次 Enterprise Bean,然后在任何 EJB container 運(yùn)行該 Enterprise Bean。供應(yīng)商,如 BEA、IBM 和 GemStone,都銷(xiāo)售包含 EJB 容器的應(yīng)用程序服務(wù)器。理想情況下,任何符合規(guī)范的 Enterprise Bean 都應(yīng)該可以在任何符合規(guī)范的 EJB 容器中運(yùn)行。 9.2.3 EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)l EJB的軟構(gòu)件模型的軟構(gòu)件模
18、型 l 有兩種類(lèi)型的軟構(gòu)件模型:客戶端構(gòu)件模型和服務(wù)器端構(gòu)件模型??蛻舳藰?gòu)件模型如JavaBeans是專(zhuān)門(mén)用于處理程序的表示及用戶界面問(wèn)題的;服務(wù)器端構(gòu)件模型如EJB則向面向事務(wù)的中間件提供基礎(chǔ)設(shè)施。 l 服務(wù)器端構(gòu)件模型把構(gòu)件模型的開(kāi)發(fā)和中間件聯(lián)系在一起。企業(yè)級(jí)應(yīng)用的中間件以其復(fù)雜性著稱,它不僅涉及到應(yīng)用邏輯、并發(fā)性和伸縮性問(wèn)題,而且涉及到如何把不兼容的系統(tǒng)組合在一起的問(wèn)題。服務(wù)器端構(gòu)件模型解決了中間件開(kāi)發(fā)的復(fù)雜性問(wèn)題,它使中間件開(kāi)發(fā)人員集中于應(yīng)用系統(tǒng)的邏輯部分,而不用處理同步、可伸縮性、事務(wù)集成、網(wǎng)絡(luò)、分布式對(duì)象框架等一些分布式應(yīng)用系統(tǒng)中存在的復(fù)雜的細(xì)節(jié)問(wèn)題。 9.2.3 EJB的體系結(jié)構(gòu)
19、的體系結(jié)構(gòu)圖9.5 EJB構(gòu)件模型 EJB客戶容器客戶視圖EJB 服務(wù)器9.2.3 EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)lEJB構(gòu)件模型給開(kāi)發(fā)者提供了一下的支持:1 構(gòu)件包含應(yīng)用程序邏輯2 可重用的構(gòu)件3 可伸縮性4 資源管理5 事務(wù)支持6 并發(fā)性管理9.2.3 EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)l EJB構(gòu)件模型的特點(diǎn)l (1) EJB將成為用Java語(yǔ)言開(kāi)發(fā)分布式的、面向?qū)ο蟮钠髽I(yè)級(jí)應(yīng)用系統(tǒng)的標(biāo)準(zhǔn)構(gòu)件體系結(jié)構(gòu),EJB使得通過(guò)組合構(gòu)件得到分布式應(yīng)用系統(tǒng)成為可能。 l (2) EJB使得應(yīng)用系統(tǒng)開(kāi)發(fā)變得容易,應(yīng)用系統(tǒng)開(kāi)發(fā)人員不需要理解底層的事務(wù)處理細(xì)節(jié)、狀態(tài)管理、多線程、資源共享管理、以及其它復(fù)雜的底層API細(xì)
20、節(jié)。l (3) EJB遵循Java的“write once,run anywhere”的思想,一旦一個(gè)EJB開(kāi)發(fā)完成之后,就可以部署在任何支持EJB的平臺(tái)上,而不需要重新編譯或?qū)υ创a進(jìn)行修改。 l (4) EJB定義了一個(gè)協(xié)議,使得用不同供應(yīng)商提供的工具開(kāi)發(fā)和部署的構(gòu)件能在運(yùn)行時(shí)互操作。l (5) EJB體系結(jié)構(gòu)和已有的服務(wù)器平臺(tái)、其它的Java APL、CORBA等兼容。l (6) EJB將支持Enterprise Beans和其它的非Java應(yīng)用系統(tǒng)的互操作性。 9.2.3 EJB的體系結(jié)構(gòu)的體系結(jié)構(gòu)l EJB 結(jié)構(gòu)中的角色結(jié)構(gòu)中的角色 l 一個(gè)完整的基于EJB的分布式計(jì)算結(jié)構(gòu)由六個(gè)角色
21、組成,這六個(gè)角色可以由不同的開(kāi)發(fā)商提供,每個(gè)角色所作的工作必須遵循Sun公司提供的EJB規(guī)范,以保證彼此之間的兼容性。l 這六個(gè)角色分別是:l Enterprise Bean Provider:EJB組件開(kāi)發(fā)者;l Application Assembler:應(yīng)用組合者;l Deployer:部署者;l EJB Server Provider:EJB 服務(wù)器提供者;l EJB Container Provider:EJB 容器提供者;l System Administrator:系統(tǒng)管理員。9.3.1什么是什么是COMl COM(Component Object Model),組件對(duì)象模型,一
22、般簡(jiǎn)稱組件。是Microsoft提出的組件標(biāo)準(zhǔn),它是一種以組件為發(fā)布單元的對(duì)象模型,這種對(duì)象模型使各軟件組件可以用一種統(tǒng)一的方式進(jìn)行交互。COM不僅定義了組件程序之間進(jìn)行交互的標(biāo)準(zhǔn),也提供了組件程序運(yùn)行所需的環(huán)境。l COM標(biāo)準(zhǔn)包括規(guī)范和實(shí)現(xiàn)兩個(gè)部分,規(guī)范部分定義了組件和組件之間通信的機(jī)制,這些規(guī)范不依賴于任何特定的語(yǔ)言和操作系統(tǒng),只要按照該規(guī)范,任何語(yǔ)言都可以使用。COM標(biāo)準(zhǔn)的實(shí)現(xiàn)部分是COM庫(kù),COM庫(kù)為COM規(guī)范的具體實(shí)現(xiàn)提供了一些核心服務(wù)。COM庫(kù)包括以下內(nèi)容:l 提供了少量API函數(shù)實(shí)現(xiàn)客戶和服務(wù)器端COM應(yīng)用的創(chuàng)建;l COM通過(guò)注冊(cè)表查找本地服務(wù)器和EXE程序,以及程序名與CLS
23、ID(Class Identifier)的轉(zhuǎn)換等;l 提供了一種標(biāo)準(zhǔn)的內(nèi)存控制方法,使應(yīng)用程序可以控制進(jìn)程中內(nèi)存的分配。9.3.1什么是什么是COMl COM有以下特性:l COM是一種規(guī)范。COM規(guī)范描述了為創(chuàng)建能共同操作的組件而必須遵守的標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)描述了COM是什么和它們是如何運(yùn)轉(zhuǎn)的,以及說(shuō)明了如何可動(dòng)態(tài)交替更新組件。l COM是一套服務(wù)。COM規(guī)范是由一套服務(wù)或API來(lái)支持的。COM庫(kù)提供這些服務(wù),它們是WIN32平臺(tái)操作系統(tǒng)的一部分并且可用于當(dāng)作其他操作系統(tǒng)的一個(gè)單獨(dú)的包。l COM是面向?qū)ο蟮?。COM組件對(duì)象有標(biāo)識(shí)、狀態(tài)和行為。l COM能夠容易的用戶化和升級(jí)你的應(yīng)用程序。COM
24、組件動(dòng)態(tài)地相互聯(lián)結(jié),并且COM定義了定位其他組件和鑒定其功能的標(biāo)準(zhǔn)。因此,組件可以交換而不必重新編譯整個(gè)應(yīng)用程序。l COM能夠分布式應(yīng)用。位置透明性是COM的特性之一。這使得你可以編寫(xiě)COM組件而不必考慮它們的位置。組件可以移動(dòng)而不要求對(duì)使用它們的應(yīng)用程序作任何改變。l COM組件可以用任何語(yǔ)言編寫(xiě)。任何能夠處理二進(jìn)制語(yǔ)言都能用于創(chuàng)建COM對(duì)象。能創(chuàng)建組件的語(yǔ)言和工具包括C/C+、JAVA、Visual Basic和Visual C+等。 9.3.1什么是什么是COMl 使用COM帶來(lái)的好處是多方面的: l 即插即用。使用組件的最大好處首先是可以將它們動(dòng)態(tài)的插入或卸出應(yīng)用系統(tǒng),是真正意義上的
25、軟件模塊即插即用。組件可以在運(yùn)行時(shí)刻,在不被重新鏈接或編譯應(yīng)用程序的情況下,可以將系統(tǒng)中的組件用新的組件替換掉,以便即時(shí)方便地進(jìn)行系統(tǒng)的升級(jí)和定制。這樣做的最大好處是程序員可以利用最新的技術(shù)寫(xiě)出的最新組件取代以有的舊組件而整個(gè)系統(tǒng)的其他部分不需要一點(diǎn)改動(dòng)。應(yīng)用程序可以隨新組件不斷取代舊的組件而漸趨完善且健壯。而且利用已有的組件,用戶還可以快速的建立全新的應(yīng)用。l 二進(jìn)制重用。按照COM規(guī)范,組件可以在多個(gè)應(yīng)用系統(tǒng)中重復(fù)利用同一組件。l 分布式應(yīng)用。利用COM/DCOM組件技術(shù),可以方便的將應(yīng)用系統(tǒng)擴(kuò)展到網(wǎng)絡(luò)環(huán)境下。l COM與語(yǔ)言無(wú)關(guān)??梢允褂枚喾N語(yǔ)言編寫(xiě)COM組件,如Delphi、Visua
26、l Basic等,這使得程序員可以利用自己擅長(zhǎng)的語(yǔ)言來(lái)編寫(xiě)組件,而無(wú)須學(xué)習(xí)其他專(zhuān)門(mén)的語(yǔ)言來(lái)編寫(xiě)組件。l COM與平臺(tái)無(wú)關(guān)。利用已編寫(xiě)的組件可以在不同的操作系統(tǒng)平臺(tái)下開(kāi)發(fā)軟件。9.3.1什么是什么是COMl COM服務(wù)端組件可分為三類(lèi):l 進(jìn)程內(nèi)組件,進(jìn)程內(nèi)服務(wù)器是裝入客戶端的進(jìn)程空間內(nèi)的組件,即客戶程序和組件程序在同一個(gè)進(jìn)程地址空間內(nèi)。在客戶端和服務(wù)端組件間有大量數(shù)據(jù)轉(zhuǎn)移操作的情況下是理想的。進(jìn)程內(nèi)服務(wù)器會(huì)更快地裝載。由于它占用和客戶端應(yīng)用程序同樣的地址空間,它可以與客戶端更快的通信。進(jìn)程內(nèi)服務(wù)器是通過(guò)將組件作為動(dòng)態(tài)連接庫(kù)(DLL)的形式來(lái)實(shí)現(xiàn)的。DLL允許特定的一套功能以分離于可執(zhí)行的、以D
27、LL為擴(kuò)展名的文件進(jìn)行存儲(chǔ)。只有當(dāng)程序需要它們時(shí),DLL才將其裝入內(nèi)存中,客戶程序?qū)⒔M件程序加載到自己的進(jìn)程地址空間后再調(diào)用組件程序的函數(shù)。l 本地(即進(jìn)程外)組件,進(jìn)程外組件指客戶程序和組件程序分別處在不同的進(jìn)程空間地址中。進(jìn)程外服務(wù)器對(duì)需要運(yùn)行于獨(dú)立的處理空間或作為獨(dú)立客戶端應(yīng)用程序的線程的組件是理想的。這種服務(wù)器的類(lèi)型自身是EXE,因此具有獨(dú)立的進(jìn)程的資格。由于數(shù)據(jù)必須從一個(gè)地址空間移到另一個(gè)地址空間,因此這些服務(wù)器就會(huì)慢得多。由于進(jìn)程外服務(wù)器是可執(zhí)行的,它們運(yùn)行在自己的線程內(nèi)。當(dāng)客戶端代碼正在執(zhí)行時(shí),客戶端不鎖住服務(wù)器。進(jìn)程外服務(wù)器對(duì)需要表現(xiàn)為獨(dú)立的應(yīng)用程序的組件也是理想的。例如,Mi
28、crosoft Internet Explorer的應(yīng)用程序是本地服務(wù)器的例子??蛻舳撕头?wù)端的通信是通過(guò)進(jìn)程內(nèi)的通信協(xié)議進(jìn)行的,這個(gè)通信協(xié)議是IPC。9.3.1什么是什么是COMl 遠(yuǎn)程組件,遠(yuǎn)程服務(wù)器與本地服務(wù)器類(lèi)似,除了遠(yuǎn)程服務(wù)器是運(yùn)行在通過(guò)網(wǎng)絡(luò)連接的分離的計(jì)算機(jī)上。這種功能是使用DCOM實(shí)現(xiàn)的。DCOM的優(yōu)點(diǎn)在于它并不要求任何特別的編程來(lái)使具有功能。另外服務(wù)端和客戶端通信是通過(guò)RPC通信協(xié)議進(jìn)行的。l 對(duì)于這三種不同的服務(wù)器組件,客戶程序和組件程序交互的內(nèi)在方式是完全不同的。但是對(duì)于功能相同的進(jìn)程內(nèi)和進(jìn)程外組件,從程序編寫(xiě)的角度看,客戶程序是以同樣的方法來(lái)使用組件程序的,客戶程序不需要
29、做任何的修改。9.3.2 DCOM技術(shù)技術(shù) l Microsoft的分布式COM(DCOM)擴(kuò)展了部件對(duì)象模型技術(shù)(COM),使其能夠支持在局域網(wǎng)、廣域網(wǎng)甚至Internet上不同計(jì)算機(jī)的對(duì)象之間的通信。使用DCOM,應(yīng)用程序就可以在位置上達(dá)到分布件,從而滿足客戶相應(yīng)用的需求。l 因?yàn)镈COM是世界上領(lǐng)先的部件技術(shù)COM的無(wú)縫擴(kuò)展,所以可以將現(xiàn)在對(duì)基于COM的應(yīng)用、部件、工具以及知識(shí)轉(zhuǎn)移到標(biāo)準(zhǔn)化的分布式計(jì)算領(lǐng)域中來(lái)。當(dāng)在做分布式計(jì)算時(shí),DCOM處理網(wǎng)絡(luò)協(xié)議的低層次的細(xì)節(jié)問(wèn)題,從而能夠使開(kāi)發(fā)人員集中精力解決用戶所要求的問(wèn)題。9.3.2 DCOM技術(shù)技術(shù) lDCOM的結(jié)構(gòu)的結(jié)構(gòu)l DCOM是部件對(duì)
30、象模型是部件對(duì)象模型(COM)的進(jìn)一步擴(kuò)展。的進(jìn)一步擴(kuò)展。COM定義下部件和它定義下部件和它們的客戶之間互相作用的方式。它使得部件和客戶端無(wú)需任何中介部們的客戶之間互相作用的方式。它使得部件和客戶端無(wú)需任何中介部件就能相互聯(lián)系??蛻暨M(jìn)程直接調(diào)用部件中的方法。圖件就能相互聯(lián)系??蛻暨M(jìn)程直接調(diào)用部件中的方法。圖9.6說(shuō)明了部說(shuō)明了部件對(duì)象模型的表示法。件對(duì)象模型的表示法。圖9.6 部件對(duì)象模型部件客戶9.3.2 DCOM技術(shù)技術(shù)l 當(dāng)客戶進(jìn)程和部件位于不同的機(jī)器時(shí),DCOM僅僅只是用網(wǎng)絡(luò)協(xié)議來(lái)代替本地進(jìn)程之間的通信。無(wú)論是客戶還是部件部不會(huì)知道連接它們的線路比以前長(zhǎng)了許多。圖9.8顯示了DC0M的
31、整體結(jié)構(gòu):COM運(yùn)行庫(kù)向客戶和部件提供了面向?qū)ο蟮姆?wù),并且使用RPC和安全機(jī)制產(chǎn)生符合DCOM線路協(xié)議標(biāo)準(zhǔn)的標(biāo)準(zhǔn)網(wǎng)絡(luò)包。圖9.8 DCOM:不同機(jī)器上的COM部件運(yùn)行時(shí)COM郵件安全機(jī)制 DCE RPC協(xié)議??蛻暨\(yùn)行時(shí)COM安全機(jī)制 DCE RPC 協(xié)議棧DCOM網(wǎng)絡(luò)協(xié)議9.3.2 DCOM技術(shù)技術(shù)l 位置獨(dú)立性 l DCOM的位置獨(dú)立性極大地簡(jiǎn)化了將應(yīng)用部件分布化的任務(wù),使其能夠達(dá)到最合適的執(zhí)行效果。例如,設(shè)想某個(gè)部件必須位于某臺(tái)特定的機(jī)器上或某個(gè)特定的位置,并且此應(yīng)用有許多小部件,就可以通過(guò)將這些部件配置在同一個(gè)LAN上,或者同一臺(tái)機(jī)器上,甚至同一個(gè)進(jìn)程中來(lái)減少網(wǎng)絡(luò)的負(fù)載。當(dāng)應(yīng)用是由比較
32、少的大部件構(gòu)成時(shí),網(wǎng)絡(luò)負(fù)載并不是問(wèn)題,此時(shí)可以將部件放在速度快的機(jī)器上,而不用去管這些機(jī)器到底在哪兒。圖9.9顯示了相同的“有效性檢查部件”在兩種不同情況下是如何分別配置的。一種情況是當(dāng)“客戶”機(jī)和“中間層”機(jī)器之間的帶寬足夠大時(shí),它就配置在客戶機(jī)上;另一種情況是當(dāng)客戶進(jìn)程通過(guò)比較慢的網(wǎng)絡(luò)連接來(lái)訪問(wèn)部件時(shí),它又可配置在服務(wù)器上。9.3.2 DCOM技術(shù)技術(shù)圖9.9 位置獨(dú)立性商業(yè)規(guī)則部件客戶層后端中間層數(shù)據(jù)庫(kù)部件合法性部件合法性部件客戶用戶接口部件COMDCOMCOMDCOMCOM數(shù)據(jù)庫(kù)DCOM9.3.2 DCOM技術(shù)技術(shù)l 有了DCOM的位置獨(dú)立性,應(yīng)用系統(tǒng)可以將互相關(guān)聯(lián)的部件放到靠得比較近的機(jī)器上,甚至可以將它們放到同一臺(tái)機(jī)器上或同一個(gè)進(jìn)程中。即使是由大量的小部件來(lái)完成一個(gè)具有復(fù)雜邏輯結(jié)構(gòu)的功能,它
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧醫(yī)藥職業(yè)學(xué)院《Java+語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘭州工業(yè)學(xué)院《行為醫(yī)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西建設(shè)職業(yè)技術(shù)學(xué)院《土地測(cè)量與評(píng)價(jià)》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉林職業(yè)技術(shù)學(xué)院《外國(guó)音樂(lè)史Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南電子科技職業(yè)學(xué)院《物流流程再造》2023-2024學(xué)年第一學(xué)期期末試卷
- 黑龍江司法警官職業(yè)學(xué)院《生物信息學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶應(yīng)用技術(shù)職業(yè)學(xué)院《集成電路版圖設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶建筑工程職業(yè)學(xué)院《外語(yǔ)教育研究方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 中央戲劇學(xué)院《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國(guó)石油大學(xué)(北京)《數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- FZ/T 73042-2011針織圍巾、披肩
- 統(tǒng)編部編版三年級(jí)道德與法治下冊(cè)優(yōu)秀課件【全冊(cè)】
- 生物質(zhì)能完整資料課件
- 2023年版義務(wù)教育音樂(lè)課程標(biāo)準(zhǔn)(標(biāo)準(zhǔn)版)
- 特色服裝民族服飾項(xiàng)目大學(xué)生創(chuàng)業(yè)計(jì)劃書(shū)
- (完整版)漢密爾頓焦慮量表(HAMA)
- 大型集團(tuán)公司商學(xué)院培訓(xùn)體系建設(shè)方案
- 職工退休提取住房公積金申表版
- 電力電子技術(shù)全套課件
- DB13(J)∕T 8057-2019 市政排水管渠工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 高分辨率陣列感應(yīng)測(cè)井的原理及應(yīng)用
評(píng)論
0/150
提交評(píng)論