版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 流行的軟件體系結(jié)構(gòu)流行的軟件體系結(jié)構(gòu) 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 概述概述 隨著計算機硬件技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,隨著計算機硬件技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展, 網(wǎng)絡(luò)計算經(jīng)歷了從集中式計算到分布式計算的網(wǎng)絡(luò)計算經(jīng)歷了從集中式計算到分布式計算的 重大演變,新的分布式網(wǎng)絡(luò)計算要求軟件實現(xiàn)重大演變,新的分布式網(wǎng)絡(luò)計算要求軟件實現(xiàn) 跨空間、跨時間、跨設(shè)備、跨用戶的共享,導(dǎo)跨空間、跨時間、跨設(shè)備、跨用戶的共享,導(dǎo) 致軟件在規(guī)模、復(fù)雜度、功能上的極大增長,致軟件在規(guī)模、復(fù)雜度、功能上的極大增長, 迫使軟件向異構(gòu)協(xié)同工作、各層次上集成、可迫使軟件向
2、異構(gòu)協(xié)同工作、各層次上集成、可 反復(fù)重用的工業(yè)化道路上前進。反復(fù)重用的工業(yè)化道路上前進。 新的軟件開發(fā)模式必須支持分布式計算、瀏覽新的軟件開發(fā)模式必須支持分布式計算、瀏覽 器器/服務(wù)器結(jié)構(gòu)、模塊化和構(gòu)件化集成,可用不服務(wù)器結(jié)構(gòu)、模塊化和構(gòu)件化集成,可用不 同的標(biāo)準(zhǔn)構(gòu)件組裝而成。同的標(biāo)準(zhǔn)構(gòu)件組裝而成。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 概述概述 提供一種手段,使應(yīng)用軟件可用預(yù)先編好的、提供一種手段,使應(yīng)用軟件可用預(yù)先編好的、 功能明確的產(chǎn)品部件定制而成,并可用不同版功能明確的產(chǎn)品部件定制而成,并可用不同版 本的部件實現(xiàn)應(yīng)用的擴展和更新。本的部件實現(xiàn)應(yīng)用的擴展和更新。 利用模塊化方法,
3、將復(fù)雜的難以維護的系統(tǒng)分利用模塊化方法,將復(fù)雜的難以維護的系統(tǒng)分 解為互相獨立、協(xié)同工作的部件,并努力使這解為互相獨立、協(xié)同工作的部件,并努力使這 些部件可反復(fù)重用。些部件可反復(fù)重用。 突破時間、空間及不同硬件設(shè)備的限制,利用突破時間、空間及不同硬件設(shè)備的限制,利用 客戶和軟件之間統(tǒng)一的接口實現(xiàn)跨平臺的互操客戶和軟件之間統(tǒng)一的接口實現(xiàn)跨平臺的互操 作。作。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 構(gòu)件技術(shù)構(gòu)件技術(shù) 為滿足上述要求,構(gòu)件技術(shù)應(yīng)運而生為滿足上述要求,構(gòu)件技術(shù)應(yīng)運而生 構(gòu)件技術(shù)被認(rèn)為是未來幾年軟件發(fā)展的基構(gòu)件技術(shù)被認(rèn)為是未來幾年軟件發(fā)展的基 礎(chǔ)。礎(chǔ)。 目標(biāo)是達到需求、體系結(jié)構(gòu)、
4、設(shè)計、實現(xiàn)目標(biāo)是達到需求、體系結(jié)構(gòu)、設(shè)計、實現(xiàn) 的重用,并使系統(tǒng)具有更好的適應(yīng)性、伸的重用,并使系統(tǒng)具有更好的適應(yīng)性、伸 縮性和可維護性??s性和可維護性。 借鑒汽車制造業(yè)和建筑業(yè)的思想,采用流借鑒汽車制造業(yè)和建筑業(yè)的思想,采用流 水線生產(chǎn)方式的預(yù)制件裝配方式水線生產(chǎn)方式的預(yù)制件裝配方式 預(yù)制件要求并不苛刻,只要能重用就可以預(yù)制件要求并不苛刻,只要能重用就可以 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 構(gòu)件技術(shù)構(gòu)件技術(shù) 通過使用購買或定制構(gòu)件這一新的解決方通過使用購買或定制構(gòu)件這一新的解決方 案可以有效地提高產(chǎn)品的質(zhì)量,加快產(chǎn)品案可以有效地提高產(chǎn)品的質(zhì)量,加快產(chǎn)品 開發(fā)速度,這種開發(fā)技術(shù)稱為
5、開發(fā)速度,這種開發(fā)技術(shù)稱為“基于構(gòu)件基于構(gòu)件 的開發(fā)技術(shù)的開發(fā)技術(shù)” 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 軟件復(fù)用軟件復(fù)用 軟件產(chǎn)品的復(fù)用軟件產(chǎn)品的復(fù)用 軟件過程的復(fù)用:基于構(gòu)件的復(fù)用軟件過程的復(fù)用:基于構(gòu)件的復(fù)用 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 基于構(gòu)件的復(fù)用基于構(gòu)件的復(fù)用 構(gòu)件的開發(fā)構(gòu)件的開發(fā) 構(gòu)件的管理構(gòu)件的管理 基于構(gòu)件組裝的系統(tǒng)開發(fā)基于構(gòu)件組裝的系統(tǒng)開發(fā) 構(gòu)件必須遵循某一特定的構(gòu)建模型,并且針構(gòu)件必須遵循某一特定的構(gòu)建模型,并且針 對某一特定的構(gòu)件平臺對某一特定的構(gòu)件平臺 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 抽象抽象 面向?qū)ο蠹夹g(shù)已達到類級重用(代碼
6、重用),面向?qū)ο蠹夹g(shù)已達到類級重用(代碼重用), 以類為封裝的單位。以類為封裝的單位。 重用粒度太小,不足以解決異構(gòu)互操作和效率更高重用粒度太小,不足以解決異構(gòu)互操作和效率更高 的重用。的重用。 構(gòu)件更推廣了對象封裝的內(nèi)涵,對一組類的組構(gòu)件更推廣了對象封裝的內(nèi)涵,對一組類的組 合進行封裝(也可以不包括類,比如包括傳統(tǒng)合進行封裝(也可以不包括類,比如包括傳統(tǒng) 的過程),并代表完成一個或多個功能的特定的過程),并代表完成一個或多個功能的特定 服務(wù),也為用戶提供了多個接口。服務(wù),也為用戶提供了多個接口。 在不同層次上,構(gòu)件均可以將底層的多個邏輯組合在不同層次上,構(gòu)件均可以將底層的多個邏輯組合 成高層
7、次上的粒度更大的新構(gòu)件,甚至直接封裝到成高層次上的粒度更大的新構(gòu)件,甚至直接封裝到 一個系統(tǒng),使模塊的重用從代碼級、對象級、架構(gòu)一個系統(tǒng),使模塊的重用從代碼級、對象級、架構(gòu) 級到系統(tǒng)級都可能實現(xiàn)。級到系統(tǒng)級都可能實現(xiàn)。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 構(gòu)件的屬性構(gòu)件的屬性 是可獨立配置的單元是可獨立配置的單元 構(gòu)件必須具有原子性,本身不可拆分;構(gòu)件必須具有原子性,本身不可拆分; 必須與其所部屬的環(huán)境以及其他構(gòu)件很好地分離必須與其所部屬的環(huán)境以及其他構(gòu)件很好地分離 必須很好地封裝自己的構(gòu)成部件必須很好地封裝自己的構(gòu)成部件 可以作為第三方的組裝單元被復(fù)合使用可以作為第三方的組裝單元被
8、復(fù)合使用 不但具備良好的內(nèi)聚性,還必須具有清晰的規(guī)格說明來描不但具備良好的內(nèi)聚性,還必須具有清晰的規(guī)格說明來描 述其依賴條件和所提供的服務(wù)。這樣,第三方廠商能夠?qū)⑹銎湟蕾嚄l件和所提供的服務(wù)。這樣,第三方廠商能夠?qū)?一個構(gòu)件與其他構(gòu)件組裝在一起。即構(gòu)件只通過定義良好一個構(gòu)件與其他構(gòu)件組裝在一起。即構(gòu)件只通過定義良好 的接口與外部環(huán)境交互。的接口與外部環(huán)境交互。 沒有外部可見的狀態(tài)沒有外部可見的狀態(tài) 不應(yīng)當(dāng)與自身備份有所區(qū)別,在任何環(huán)境中,最多僅有特不應(yīng)當(dāng)與自身備份有所區(qū)別,在任何環(huán)境中,最多僅有特 定構(gòu)件的一個備份定構(gòu)件的一個備份 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 構(gòu)件技術(shù)構(gòu)件技術(shù)
9、分布式構(gòu)件技術(shù)分布式構(gòu)件技術(shù) CORBA規(guī)范規(guī)范 Sun的的Java平臺平臺 Microsoft的的.NET平臺平臺 分布式構(gòu)件體系結(jié)構(gòu)分布式構(gòu)件體系結(jié)構(gòu) J2EE .NET 提供事物完整性、消息傳遞、目錄服務(wù)、安全、提供事物完整性、消息傳遞、目錄服務(wù)、安全、 異常處理、遠(yuǎn)程訪問等。異常處理、遠(yuǎn)程訪問等。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 基于基于CORBA的分布式構(gòu)件技術(shù)的分布式構(gòu)件技術(shù) OMG(對象管理學(xué)會)是一個由業(yè)界(對象管理學(xué)會)是一個由業(yè)界760多個公司多個公司 組成的工業(yè)協(xié)會,目的是為了共同制定一個大家都組成的工業(yè)協(xié)會,目的是為了共同制定一個大家都 遵循的分布式對象計
10、算標(biāo)準(zhǔn),將對象和分布式系統(tǒng)遵循的分布式對象計算標(biāo)準(zhǔn),將對象和分布式系統(tǒng) 技術(shù)集成為一個可相互操作的統(tǒng)一結(jié)構(gòu),既支持現(xiàn)技術(shù)集成為一個可相互操作的統(tǒng)一結(jié)構(gòu),既支持現(xiàn) 有的平臺也將支持未來的平臺集成。有的平臺也將支持未來的平臺集成。 OMA(對象管理體系),基礎(chǔ)是(對象管理體系),基礎(chǔ)是ORB(對象請求(對象請求 中介)標(biāo)準(zhǔn),不僅提供了中介)標(biāo)準(zhǔn),不僅提供了CORBA基礎(chǔ)架構(gòu)說明,基礎(chǔ)架構(gòu)說明, 還提供了一系列服務(wù),如安全、交易和消息傳遞等。還提供了一系列服務(wù),如安全、交易和消息傳遞等。 針對針對ORB,OMG制定了制定了CORBA規(guī)范。規(guī)范。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) OMA對
11、象管理體系結(jié)構(gòu)對象管理體系結(jié)構(gòu) 對象請求代理對象請求代理 (Object Request BrokerObject Request Broker) CORBACORBA服務(wù)服務(wù) (CORBA ServiceCORBA Service) 應(yīng)用對象應(yīng)用對象 ( (Applicatio n Object) ) 水平水平CORBACORBA設(shè)備設(shè)備 ( (Horizontal CORBA Facility) ) 垂直垂直CORBACORBA設(shè)備設(shè)備 ( (Vertical CORBA Facility) ) 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA服務(wù)服務(wù) 提供適用于實現(xiàn)對象的一些基本
12、功能,如對提供適用于實現(xiàn)對象的一些基本功能,如對 象的命名服務(wù)、對象交易服務(wù)(對象并行、象的命名服務(wù)、對象交易服務(wù)(對象并行、 對象存儲、對象產(chǎn)生和消亡、事件消息響應(yīng)對象存儲、對象產(chǎn)生和消亡、事件消息響應(yīng) 以及事務(wù)交易的一致性保證)和持久狀態(tài)服以及事務(wù)交易的一致性保證)和持久狀態(tài)服 務(wù)(務(wù)(Persistent State Service, PPS)等。)等。 是發(fā)布對象系統(tǒng)必不可少的公共服務(wù),是底是發(fā)布對象系統(tǒng)必不可少的公共服務(wù),是底 層支持的必需服務(wù)。層支持的必需服務(wù)。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA設(shè)備設(shè)備 水平水平CORBA設(shè)備:在各種工業(yè)部門中針對所設(shè)備:在
13、各種工業(yè)部門中針對所 有類型有類型CORBA應(yīng)用的元素應(yīng)用的元素 包括用戶接口和系統(tǒng)管理設(shè)備包括用戶接口和系統(tǒng)管理設(shè)備 針對大多數(shù)類型的應(yīng)用,不考慮設(shè)備被使用的領(lǐng)針對大多數(shù)類型的應(yīng)用,不考慮設(shè)備被使用的領(lǐng) 域域 垂直垂直CORBA設(shè)備:只在特殊垂直市場和工業(yè)設(shè)備:只在特殊垂直市場和工業(yè) 中針對某些應(yīng)用的功能,也稱領(lǐng)域中針對某些應(yīng)用的功能,也稱領(lǐng)域CORBA設(shè)設(shè) 備備 包括某些特殊領(lǐng)域的應(yīng)用,比如在會計業(yè)中的總包括某些特殊領(lǐng)域的應(yīng)用,比如在會計業(yè)中的總 賬和分期償付,制造業(yè)的自動化店層控制設(shè)備。賬和分期償付,制造業(yè)的自動化店層控制設(shè)備。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 應(yīng)用對象應(yīng)用
14、對象 位于位于OMA層次結(jié)構(gòu)的最頂層,可以是分布系層次結(jié)構(gòu)的最頂層,可以是分布系 統(tǒng)中的任何成分,如程序、進程、類實例。統(tǒng)中的任何成分,如程序、進程、類實例。 通常會根據(jù)獨立的應(yīng)用被定制,并不需要標(biāo)通常會根據(jù)獨立的應(yīng)用被定制,并不需要標(biāo) 準(zhǔn)化,所以這一類的對象并不受準(zhǔn)化,所以這一類的對象并不受OMG標(biāo)準(zhǔn)的標(biāo)準(zhǔn)的 影響。影響。 必須符合必須符合OMA的標(biāo)準(zhǔn)接口。的標(biāo)準(zhǔn)接口。 OMA中的對象作為服務(wù)者被動態(tài)地引用,并中的對象作為服務(wù)者被動態(tài)地引用,并 且以唯一的標(biāo)識提供服務(wù)。且以唯一的標(biāo)識提供服務(wù)。 對象間的交互通過對象間的交互通過ORB實現(xiàn)實現(xiàn) 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 對象
15、請求代理對象請求代理 是是OMA的核心部分的核心部分 當(dāng)應(yīng)用對象在分布對象系統(tǒng)中請求服務(wù)時,當(dāng)應(yīng)用對象在分布對象系統(tǒng)中請求服務(wù)時, 就是以系統(tǒng)客戶的身份,通過就是以系統(tǒng)客戶的身份,通過ORB與系統(tǒng)中與系統(tǒng)中 其他對象完成交互其他對象完成交互 OMG進一步給出了進一步給出了OMA對象管理體系結(jié)構(gòu)對象管理體系結(jié)構(gòu) 的的ORB開放標(biāo)準(zhǔn)開放標(biāo)準(zhǔn) 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA體系結(jié)構(gòu)體系結(jié)構(gòu) CORBA規(guī)范包括規(guī)范包括ORB、接口定義語言、接口定義語言(IDL)、 存根存根(Stub)、框架、框架(Skeleton)、對象適配器、對象適配器、 動態(tài)調(diào)用接口動態(tài)調(diào)用接口 第第1
16、4章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA體系結(jié)構(gòu)體系結(jié)構(gòu) 接口庫接口庫 Interface Repository 實現(xiàn)庫實現(xiàn)庫 Implementation Repository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài) 調(diào)用調(diào)用 客戶客戶 StubStub ORBORB 接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù) Skeleton 動態(tài)服務(wù)動態(tài)服務(wù) Skeleton 客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) ) ORBORB的任務(wù)就是把客戶發(fā)出的請求傳送給目標(biāo)對象,的任務(wù)就是把客戶發(fā)出的請求傳送給
17、目標(biāo)對象, 并把目標(biāo)對象的執(zhí)行結(jié)果返回給請求客戶。它屏蔽并把目標(biāo)對象的執(zhí)行結(jié)果返回給請求客戶。它屏蔽 了了對象位置、對象實現(xiàn)、對象執(zhí)行狀態(tài)、對象通了了對象位置、對象實現(xiàn)、對象執(zhí)行狀態(tài)、對象通 信機制和數(shù)據(jù)表示。信機制和數(shù)據(jù)表示。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA體系結(jié)構(gòu)體系結(jié)構(gòu) IDL:IDL:客戶目標(biāo)對象發(fā)送請求必須知道目標(biāo)對象所具備的操作??蛻裟繕?biāo)對象發(fā)送請求必須知道目標(biāo)對象所具備的操作。 IDLIDL提供了對象定義的手段,使得請求對象了解服務(wù)對象。提供了對象定義的手段,使得請求對象了解服務(wù)對象。 IDLIDL是說明性語言,只對對象接口定義,不提供任何實現(xiàn)細(xì)節(jié)是說明
18、性語言,只對對象接口定義,不提供任何實現(xiàn)細(xì)節(jié) 的描述。的描述。IDLIDL把編譯后的代碼映射到具體的編程語言,并且產(chǎn)把編譯后的代碼映射到具體的編程語言,并且產(chǎn) 生客戶生客戶StubStub和服務(wù)和服務(wù)SkeletonSkeleton。 對象請求代理(對象請求代理(Object Request BrokerObject Request Broker) 客戶程序客戶程序 ( (Client) ) 對象實現(xiàn)對象實現(xiàn) ( (Object implementation) ) 請求請求(Request)(Request) IDLIDL StubStub IDLIDL StubStub 第第14章流行軟件體
19、系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA體系結(jié)構(gòu)體系結(jié)構(gòu) 接口庫接口庫 Interface Repository 實現(xiàn)庫實現(xiàn)庫 Implementation Repository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài) 調(diào)用調(diào)用 客戶客戶 StubStub ORBORB 接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù) Skeleton 動態(tài)服務(wù)動態(tài)服務(wù) Skeleton 客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) ) 存根(存根(StubStub)是客戶端的代碼,客戶應(yīng)用程序通過存根向)是客戶端的代碼,客戶應(yīng)用程序通
20、過存根向 服務(wù)器應(yīng)用程序發(fā)送請求,服務(wù)器應(yīng)用程序發(fā)送請求, 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA體系結(jié)構(gòu)體系結(jié)構(gòu) 接口庫接口庫 Interface Repository 實現(xiàn)庫實現(xiàn)庫 Implementation Repository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài) 調(diào)用調(diào)用 客戶客戶 StubStub ORBORB 接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù) Skeleton 動態(tài)服務(wù)動態(tài)服務(wù) Skeleton 客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) ) 框架(框架(Skel
21、etonSkeleton)是服務(wù)器端的代碼,提供對象適配器轉(zhuǎn)發(fā))是服務(wù)器端的代碼,提供對象適配器轉(zhuǎn)發(fā) 的請求調(diào)度到對象實現(xiàn)上的適當(dāng)操作的代碼。的請求調(diào)度到對象實現(xiàn)上的適當(dāng)操作的代碼。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA體系結(jié)構(gòu)體系結(jié)構(gòu) 接口庫接口庫 Interface Repository 實現(xiàn)庫實現(xiàn)庫 Implementation Repository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài) 調(diào)用調(diào)用 客戶客戶 StubStub ORBORB 接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù) Skeleton 動態(tài)服務(wù)動態(tài)服
22、務(wù) Skeleton 客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) ) 對象適配器(對象適配器(Object AdapterObject Adapter)是)是ORBORB核心的上層機制。它負(fù)責(zé)核心的上層機制。它負(fù)責(zé) 接受服務(wù)請求,完成實例化服務(wù)對象,向?qū)ο髠魉驼埱?,為服接受服?wù)請求,完成實例化服務(wù)對象,向?qū)ο髠魉驼埱?,為?務(wù)指定對象引用和提供運行環(huán)境。務(wù)指定對象引用和提供運行環(huán)境。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) CORBA體系結(jié)構(gòu)體系結(jié)構(gòu) 接口庫接口庫 Interface Repository 實現(xiàn)庫實現(xiàn)庫 Implementation Re
23、pository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài) 調(diào)用調(diào)用 客戶客戶 StubStub ORBORB 接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù) Skeleton 動態(tài)服務(wù)動態(tài)服務(wù) Skeleton 客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) ) 通過對象適配器,通過對象適配器,ORBORB服務(wù)方給客戶應(yīng)用提供了一個假象(虛擬服務(wù)方給客戶應(yīng)用提供了一個假象(虛擬 環(huán)境),即服務(wù)對象都是活動著的,隨時等待客戶應(yīng)用發(fā)來請環(huán)境),即服務(wù)對象都是活動著的,隨時等待客戶應(yīng)用發(fā)來請 求。求。ORBORB通過適配器
24、將目的對象分成組,每組通過特定的對象適通過適配器將目的對象分成組,每組通過特定的對象適 配器來滿足特定的需求。配器來滿足特定的需求。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 基于基于Java的分布式構(gòu)件技術(shù)的分布式構(gòu)件技術(shù) 1996年年1月,月,Sun公司正式發(fā)布了公司正式發(fā)布了Java1.0 1998年夏末又推出了年夏末又推出了Java2.0 1999年年Sun公司推出三個版本的公司推出三個版本的Java2平臺:平臺: J2ME:是:是Java 2 Platform Micro Edition的縮寫,即的縮寫,即 Java2平臺微型版,適用于開發(fā)小型設(shè)備和智能卡上的平臺微型版,適用于開
25、發(fā)小型設(shè)備和智能卡上的 應(yīng)用系統(tǒng),如手機和掌上電腦的操作系統(tǒng)等應(yīng)用系統(tǒng),如手機和掌上電腦的操作系統(tǒng)等 J2SE:是:是Java 2 Platform Standard Edition的縮寫,的縮寫, 即即Java2平臺標(biāo)準(zhǔn)版,適用于創(chuàng)建普通臺式電腦上的應(yīng)平臺標(biāo)準(zhǔn)版,適用于創(chuàng)建普通臺式電腦上的應(yīng) 用系統(tǒng),如用系統(tǒng),如PC機、小型工作站的應(yīng)用軟件等機、小型工作站的應(yīng)用軟件等 J2EE:是:是Java 2 Platform Enterprise Edition的縮寫,的縮寫, 即即Java2平臺企業(yè)版,適用于創(chuàng)建服務(wù)器端的大型應(yīng)用平臺企業(yè)版,適用于創(chuàng)建服務(wù)器端的大型應(yīng)用 軟件和服務(wù)系統(tǒng)。軟件和服務(wù)系
26、統(tǒng)。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) J2EE平臺平臺 使用多層分布式應(yīng)用模型,根據(jù)功能劃分成各個構(gòu)使用多層分布式應(yīng)用模型,根據(jù)功能劃分成各個構(gòu) 件,這些構(gòu)件根據(jù)其在多層件,這些構(gòu)件根據(jù)其在多層J2EE環(huán)境中所處的層環(huán)境中所處的層 被安裝在不同的機器上。下圖是三個被安裝在不同的機器上。下圖是三個J2EE應(yīng)用。應(yīng)用。 J2EEJ2EE應(yīng)用應(yīng)用1 1J2EEJ2EE應(yīng)用應(yīng)用2 2J2EEJ2EE應(yīng)用應(yīng)用3 3 客戶端客戶端 應(yīng)用程序應(yīng)用程序 動態(tài)動態(tài)HTMLHTML 頁面頁面 動態(tài)動態(tài)HTMLHTML 頁面頁面 客戶層客戶層 WebWeb層層 業(yè)務(wù)層業(yè)務(wù)層 EISEIS層層 客戶端機
27、器客戶端機器 J2EEJ2EE服務(wù)器服務(wù)器 機器機器 數(shù)據(jù)庫服務(wù)器數(shù)據(jù)庫服務(wù)器 機器機器 JSPJSP頁面頁面 JSPJSP頁面頁面 EJBEJBEJBEJB 數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) J2EE平臺平臺 最基本的最基本的Java構(gòu)件是在構(gòu)件是在J2ME中的中的JavaBean,它,它 是按照特定格式編寫的是按照特定格式編寫的Java類類 JavaBean包括實例變量(包括實例變量(Instance Variable)和)和 get()、set()方法來訪問實例變量的數(shù)據(jù)。方法來訪問實例變量的數(shù)據(jù)。 這種格式大大簡化了程序設(shè)計。這種格式大
28、大簡化了程序設(shè)計。 J2EE的構(gòu)件在的構(gòu)件在JavaBeans基礎(chǔ)上進行了拓展?;A(chǔ)上進行了拓展。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) J2EE構(gòu)件構(gòu)件 客戶端構(gòu)件:客戶端構(gòu)件:Java應(yīng)用程序和應(yīng)用程序和Applet Web構(gòu)件:構(gòu)件:JavaServer Pages ( JSP ) 和和 Java Servlet 業(yè)務(wù)邏輯構(gòu)件:業(yè)務(wù)邏輯構(gòu)件:Enterprise JavaBeans ( EJB ) 這些構(gòu)件在開發(fā)完成后,部署到相應(yīng)的容器中。這些構(gòu)件在開發(fā)完成后,部署到相應(yīng)的容器中。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 客戶端構(gòu)件客戶端構(gòu)件 Java應(yīng)用程序是運行在應(yīng)用客
29、戶容器內(nèi)部的單個程應(yīng)用程序是運行在應(yīng)用客戶容器內(nèi)部的單個程 序,應(yīng)用客戶容器提供了支持消息、遠(yuǎn)程調(diào)用、數(shù)序,應(yīng)用客戶容器提供了支持消息、遠(yuǎn)程調(diào)用、數(shù) 據(jù)庫連接和查詢服務(wù)的據(jù)庫連接和查詢服務(wù)的API,容器所需的,容器所需的API主要主要 有:有:J2SE、JME、JNDI、RMI-IIOP和和JDBC,這,這 些容器由應(yīng)用服務(wù)器供貨商提供。些容器由應(yīng)用服務(wù)器供貨商提供。 Applet運行在運行在Applet容器中,這種容器是支持容器中,這種容器是支持 Java技術(shù)的基本瀏覽器。作為一個技術(shù)的基本瀏覽器。作為一個Java構(gòu)件模型,構(gòu)件模型, 目標(biāo)是創(chuàng)建可下載的輕量級構(gòu)件,來豐富客戶端網(wǎng)目標(biāo)是創(chuàng)建可
30、下載的輕量級構(gòu)件,來豐富客戶端網(wǎng) 頁的視覺效果。頁的視覺效果。Applet需要需要J2SE API的支持。的支持。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) Web構(gòu)件構(gòu)件 JSP和和Servlet是運行在是運行在Web容器中基于容器中基于Web的構(gòu)的構(gòu) 件。件。Web容器由容器由Web服務(wù)器所支持。是服務(wù)器所支持。是JSP和和 Servlet在運行時的執(zhí)行環(huán)境,容器所需的在運行時的執(zhí)行環(huán)境,容器所需的API主要主要 有:有: J2SE、JMS、JNDI、JTA、JavaMail、JAF、 RMI-IIOP和和JDBC。JSP和和Servlet提供了動態(tài)內(nèi)容提供了動態(tài)內(nèi)容 顯示、處理以及與
31、顯示相關(guān)的格式的機制。顯示、處理以及與顯示相關(guān)的格式的機制。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) JSP技術(shù)技術(shù) 為為Web客戶端產(chǎn)生動態(tài)內(nèi)容提供了一種可擴展的方客戶端產(chǎn)生動態(tài)內(nèi)容提供了一種可擴展的方 式。目的在于生成能夠處理動態(tài)內(nèi)容的式。目的在于生成能夠處理動態(tài)內(nèi)容的Web頁面,頁面, 這些頁面處理的數(shù)據(jù)會發(fā)生變化,因此業(yè)務(wù)處理邏這些頁面處理的數(shù)據(jù)會發(fā)生變化,因此業(yè)務(wù)處理邏 輯也會相應(yīng)發(fā)生變化。輯也會相應(yīng)發(fā)生變化。 一個一個JSP頁面是一個基于文本的文檔,它的寫法很頁面是一個基于文本的文檔,它的寫法很 像網(wǎng)頁,用來描述怎樣處理像網(wǎng)頁,用來描述怎樣處理Request和產(chǎn)生和產(chǎn)生 Re
32、sponse. 通常由通常由JSP標(biāo)記、標(biāo)記、HTML標(biāo)記和嵌入其中的標(biāo)記和嵌入其中的Java代代 碼組成。服務(wù)器在頁面被客戶端請求后對這些碼組成。服務(wù)器在頁面被客戶端請求后對這些Java 代碼進行處理,然后生成代碼進行處理,然后生成HTML頁面返回給客戶端頁面返回給客戶端 瀏覽器。瀏覽器。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) JSP技術(shù)技術(shù) 隨著隨著JSP技術(shù)的發(fā)展,技術(shù)的發(fā)展,JSP頁面中嵌入的頁面中嵌入的Java代碼代碼 已經(jīng)越來越少了,取代這些代碼的是一些用戶自定已經(jīng)越來越少了,取代這些代碼的是一些用戶自定 義的標(biāo)記和義的標(biāo)記和JSP的標(biāo)準(zhǔn)標(biāo)記(的標(biāo)準(zhǔn)標(biāo)記(JSTL,JSP標(biāo)
33、準(zhǔn)標(biāo)簽標(biāo)準(zhǔn)標(biāo)簽 庫)。擴展標(biāo)記的使用令庫)。擴展標(biāo)記的使用令JSP頁面變得越來越清晰,頁面變得越來越清晰, 結(jié)構(gòu)越來越完整。結(jié)構(gòu)越來越完整。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) Servlet 是運行在服務(wù)器上的小程序,可被看作是服務(wù)器端是運行在服務(wù)器上的小程序,可被看作是服務(wù)器端 的的Applet,實際上一個,實際上一個Servlet就是擴展就是擴展Web服務(wù)服務(wù) 器功能的一個器功能的一個Java類。類。 是作為是作為CGI(Common Gateway Interface,通用網(wǎng)通用網(wǎng) 關(guān)接口)的替代物發(fā)展起來的關(guān)接口)的替代物發(fā)展起來的,具有可移植性、靈具有可移植性、靈 活性以
34、及易編寫等優(yōu)點?;钚砸约耙拙帉懙葍?yōu)點。 接受客戶端發(fā)來的請求并對它們進行處理,然后生接受客戶端發(fā)來的請求并對它們進行處理,然后生 成響應(yīng),并將它們發(fā)送給客戶端。成響應(yīng),并將它們發(fā)送給客戶端。 Servlet技術(shù)是技術(shù)是JSP的基礎(chǔ),的基礎(chǔ),JSP頁面在運行前都必頁面在運行前都必 須轉(zhuǎn)化及編譯成須轉(zhuǎn)化及編譯成Servlet形式。形式。 是是Web構(gòu)件,所以必須要運行在構(gòu)件,所以必須要運行在Web服務(wù)器上。服務(wù)器上。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 業(yè)務(wù)邏輯構(gòu)件業(yè)務(wù)邏輯構(gòu)件 EJB構(gòu)件是構(gòu)件是J2EE的核心,是實現(xiàn)企業(yè)級應(yīng)用中業(yè)的核心,是實現(xiàn)企業(yè)級應(yīng)用中業(yè) 務(wù)邏輯的務(wù)邏輯的Java構(gòu)
35、件。構(gòu)件。 EJB構(gòu)件駐留在構(gòu)件駐留在EJB容器中。容器中。EJB容器為容器為EJB構(gòu)件構(gòu)件 提供了一組標(biāo)準(zhǔn)的系統(tǒng)服務(wù),其中包括事務(wù)管理、提供了一組標(biāo)準(zhǔn)的系統(tǒng)服務(wù),其中包括事務(wù)管理、 持久性、安全性和并發(fā)控制等。通過持久性、安全性和并發(fā)控制等。通過EJB容器以及容器以及 使用使用XML對構(gòu)件的部署進行說明,構(gòu)件開發(fā)者便可對構(gòu)件的部署進行說明,構(gòu)件開發(fā)者便可 以從實現(xiàn)上述系統(tǒng)服務(wù)中解脫出來。以從實現(xiàn)上述系統(tǒng)服務(wù)中解脫出來。 EJB容器降低了容器降低了EJB構(gòu)件開發(fā)的復(fù)雜程度,提高了構(gòu)件開發(fā)的復(fù)雜程度,提高了 構(gòu)件開發(fā)的效率,保證了構(gòu)件的可移植性。構(gòu)件開發(fā)的效率,保證了構(gòu)件的可移植性。 EJB規(guī)范
36、定義了規(guī)范定義了EJB構(gòu)件與構(gòu)件與EJB容器之間的交互機容器之間的交互機 制。制。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 業(yè)務(wù)邏輯構(gòu)件業(yè)務(wù)邏輯構(gòu)件 EJB是運行在獨立服務(wù)器上的構(gòu)件,客戶端通過網(wǎng)是運行在獨立服務(wù)器上的構(gòu)件,客戶端通過網(wǎng) 絡(luò)對絡(luò)對EJB對象進行調(diào)用。對象進行調(diào)用。 通過通過RMI技術(shù),技術(shù),J2EE將將EJB構(gòu)件創(chuàng)建為遠(yuǎn)程對象,構(gòu)件創(chuàng)建為遠(yuǎn)程對象, 客戶端通過網(wǎng)絡(luò)調(diào)用客戶端通過網(wǎng)絡(luò)調(diào)用EJB對象。客戶端進行調(diào)用時,對象??蛻舳诉M行調(diào)用時, 不是采用不是采用RMI注冊表提供的命名服務(wù)進行查找,而注冊表提供的命名服務(wù)進行查找,而 是使用是使用JNDI技術(shù)查找技術(shù)查找EJB對象
37、。對象。JNDI屏蔽掉了屏蔽掉了 RMI命名服務(wù)的實現(xiàn)細(xì)節(jié),使客戶端程序更具通用命名服務(wù)的實現(xiàn)細(xì)節(jié),使客戶端程序更具通用 性。性。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) EJB構(gòu)件構(gòu)件 實體實體Bean(Entity Bean) 提供了對持久數(shù)據(jù)(如數(shù)據(jù)庫中存儲的數(shù)據(jù))進提供了對持久數(shù)據(jù)(如數(shù)據(jù)庫中存儲的數(shù)據(jù))進 行操作的接口行操作的接口 對應(yīng)持久數(shù)據(jù)的對象視圖對應(yīng)持久數(shù)據(jù)的對象視圖 通過與某個持久數(shù)據(jù)相關(guān)聯(lián)的實體通過與某個持久數(shù)據(jù)相關(guān)聯(lián)的實體bean,客戶,客戶 可對該數(shù)據(jù)進行查詢、更新等操作??蓪υ摂?shù)據(jù)進行查詢、更新等操作。 通過兩種機制來持久保存對象:通過兩種機制來持久保存對象:
38、 容器管理持久性(容器管理持久性(CMP) Bean管理持久性(管理持久性(BMP) 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) EJB構(gòu)件構(gòu)件 會話會話bean(Session Bean) 是一種對連接是一種對連接EJB容器的客戶程序的擴展,主要容器的客戶程序的擴展,主要 用于實現(xiàn)業(yè)務(wù)處理邏輯,以及提供對業(yè)務(wù)層訪問用于實現(xiàn)業(yè)務(wù)處理邏輯,以及提供對業(yè)務(wù)層訪問 的接口。的接口。 分為兩種:分為兩種: 有狀態(tài)會話有狀態(tài)會話bean:提供保存會話狀態(tài)信息的:提供保存會話狀態(tài)信息的 功能,每個會話功能,每個會話bean實例都與一個特定的客實例都與一個特定的客 戶相關(guān)聯(lián);戶相關(guān)聯(lián); 無狀態(tài)會話無狀態(tài)會
39、話bean:不保存客戶的會話狀態(tài)信:不保存客戶的會話狀態(tài)信 息,每次服務(wù),同一個客戶不一定對應(yīng)同一個息,每次服務(wù),同一個客戶不一定對應(yīng)同一個 會話會話bean實例。實例。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) EJB構(gòu)件構(gòu)件 消息驅(qū)動消息驅(qū)動bean(Message-driven Bean) 是是JMS(Java Message Service,Java消息服消息服 務(wù))與務(wù))與EJB集成的結(jié)果。集成的結(jié)果。 沒有向客戶端公開接口,消息驅(qū)動沒有向客戶端公開接口,消息驅(qū)動EJB構(gòu)件不能構(gòu)件不能 由客戶直接獲得其引用而進行調(diào)用,客戶只能通由客戶直接獲得其引用而進行調(diào)用,客戶只能通 過消息系
40、統(tǒng)進行間接的調(diào)用。過消息系統(tǒng)進行間接的調(diào)用。 為客戶和為客戶和EJB構(gòu)件之間提供了一種異步的通信能構(gòu)件之間提供了一種異步的通信能 力力 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) EJB構(gòu)件構(gòu)件 大多數(shù)大多數(shù)EJB構(gòu)件(不包括消息驅(qū)動構(gòu)件(不包括消息驅(qū)動bean)由以下)由以下 遠(yuǎn)程接口、本地接口和遠(yuǎn)程接口、本地接口和Bean類組成:類組成: 遠(yuǎn)程接口(遠(yuǎn)程接口(remote interface) 聲明了相應(yīng)聲明了相應(yīng)Bean類公開的所有業(yè)務(wù)方法類公開的所有業(yè)務(wù)方法 必須遵循必須遵循EJB規(guī)范規(guī)范 必須由必須由javax.ejb.EJBObject派生派生 本地接口(本地接口(home in
41、terface) 聲明了與聲明了與EJB構(gòu)件生命周期有關(guān)的方法構(gòu)件生命周期有關(guān)的方法 客戶可以使用本地接口中提供的方法創(chuàng)建、查找和刪客戶可以使用本地接口中提供的方法創(chuàng)建、查找和刪 除除EJB構(gòu)件構(gòu)件 方法的實現(xiàn)由方法的實現(xiàn)由EJB容器負(fù)責(zé),容器負(fù)責(zé),EJB開發(fā)人員只需要提開發(fā)人員只需要提 供方法的原型供方法的原型 必須由必須由javax.ejb.EJBHome派生派生 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) EJB構(gòu)件構(gòu)件 大多數(shù)大多數(shù)EJB構(gòu)件(不包括消息驅(qū)動構(gòu)件(不包括消息驅(qū)動bean)由以下)由以下 遠(yuǎn)程接口、本地接口和遠(yuǎn)程接口、本地接口和Bean類組成:類組成: Bean類類 實
42、現(xiàn)實現(xiàn)EJB構(gòu)件的業(yè)務(wù)邏輯方法構(gòu)件的業(yè)務(wù)邏輯方法 用戶通過遠(yuǎn)程接口調(diào)用這些方法用戶通過遠(yuǎn)程接口調(diào)用這些方法 所有所有Bean類都必須實現(xiàn)的最基本的接口是類都必須實現(xiàn)的最基本的接口是 javax.ejb.EnterpriseBean 一般不直接實現(xiàn)一般不直接實現(xiàn)javax.ejb.EnterpriseBean接口,而接口,而 是實現(xiàn)相應(yīng)的是實現(xiàn)相應(yīng)的Bean類型的接口類型的接口 消息驅(qū)動消息驅(qū)動EJB構(gòu)件沒有本地接口和遠(yuǎn)程接口構(gòu)件沒有本地接口和遠(yuǎn)程接口 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) EJB構(gòu)件構(gòu)件 EJB構(gòu)件運行在構(gòu)件運行在EJB容器中,容器中,EJB容器為容器為 EJB構(gòu)件提供
43、事務(wù)管理、持久性、安全性和構(gòu)件提供事務(wù)管理、持久性、安全性和 并發(fā)控制等系統(tǒng)服務(wù)。并發(fā)控制等系統(tǒng)服務(wù)。 當(dāng)當(dāng)EJB構(gòu)件被裝入到容器中時,需要向容器構(gòu)件被裝入到容器中時,需要向容器 說明說明EJB構(gòu)件將如何部署到容器中去,以及構(gòu)件將如何部署到容器中去,以及 希望容器提供哪些服務(wù)。希望容器提供哪些服務(wù)。 通過一個通過一個XML格式的部署描述文件說明。格式的部署描述文件說明。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 部署描述文件部署描述文件 EJB基本信息:指明基本信息:指明EJB的名稱、遠(yuǎn)程接口、的名稱、遠(yuǎn)程接口、 本地接口及本地接口及Bean類類 EJB管理要求:指明管理要求:指明EJB容
44、器應(yīng)該如何管理容器應(yīng)該如何管理 Bean EJB持久性要求:指明實體持久性要求:指明實體Bean是由自己管是由自己管 理持久性,還是由容器管理持久性理持久性,還是由容器管理持久性 EJB事務(wù)處理要求:指明容器的安全策略事務(wù)處理要求:指明容器的安全策略 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) J2EE構(gòu)件構(gòu)件 包括包括Java應(yīng)用程序、應(yīng)用程序、Applet、JSP、 Servlet、EJB 可以打包成模塊(可以打包成模塊(module)并以)并以Java Archive(JAR)文件的形式發(fā)布)文件的形式發(fā)布 一個模塊通常包含了相關(guān)的構(gòu)件、相關(guān)文件一個模塊通常包含了相關(guān)的構(gòu)件、相關(guān)文件
45、和用來描述怎樣部署構(gòu)件的部署描述文件和用來描述怎樣部署構(gòu)件的部署描述文件 (XML文件)。文件)。 通過模塊可以用一些相同構(gòu)件來組裝不同的通過模塊可以用一些相同構(gòu)件來組裝不同的 J2EE應(yīng)用,實現(xiàn)了構(gòu)件技術(shù)的目標(biāo)應(yīng)用,實現(xiàn)了構(gòu)件技術(shù)的目標(biāo)重用重用 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 基于基于.NET平臺的分布式構(gòu)件技術(shù)平臺的分布式構(gòu)件技術(shù) 微軟沒有提出一整套標(biāo)準(zhǔn),逐漸引入構(gòu)件技術(shù),可獲微軟沒有提出一整套標(biāo)準(zhǔn),逐漸引入構(gòu)件技術(shù),可獲 益于以前的成功技術(shù),如益于以前的成功技術(shù),如Visual Basic控件、對象鏈控件、對象鏈 接和嵌入(接和嵌入(OLE)、)、OLE數(shù)據(jù)庫連接(數(shù)據(jù)庫連
46、接(ODBC)、)、 ActiveX、微軟事務(wù)服務(wù)器技術(shù)(、微軟事務(wù)服務(wù)器技術(shù)(MTS)、)、Active Server Page(ASP)。)。 COM(Component Object Model,組建對象模型),組建對象模型) 是從是從Windows3.1中最初為支持復(fù)合文檔而使用中最初為支持復(fù)合文檔而使用OLE 技術(shù)發(fā)展而來的,經(jīng)歷了技術(shù)發(fā)展而來的,經(jīng)歷了OLE2/COM、ActiveX、 DCOM和和COM+等幾個階段。等幾個階段。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) COM 為代碼的重用提供了一種模塊化、面向?qū)ο蟮姆绞綖榇a的重用提供了一種模塊化、面向?qū)ο蟮姆绞?定義了定
47、位和識別其他組件功能的標(biāo)準(zhǔn)方式,組件可定義了定位和識別其他組件功能的標(biāo)準(zhǔn)方式,組件可 用各種語言編寫和使用用各種語言編寫和使用 是微軟平臺上所有構(gòu)件的基石是微軟平臺上所有構(gòu)件的基石 但是。但是。 COM組件不容易編寫組件不容易編寫 提供的功能取決于編寫所用的語言提供的功能取決于編寫所用的語言 很難部署很難部署 COM服務(wù)器組件的開發(fā)人員必須確保組件的新版本與服務(wù)器組件的開發(fā)人員必須確保組件的新版本與 舊版本兼容,但有時新舊版本不兼容,被稱為舊版本兼容,但有時新舊版本不兼容,被稱為“DLL Hell” 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) .NET框架框架 NET框架和框架和NET組件可
48、以避開組件可以避開COM設(shè)計的復(fù)雜設(shè)計的復(fù)雜 性,使程序員更容易得到組件化的體系結(jié)構(gòu)性,使程序員更容易得到組件化的體系結(jié)構(gòu) 是用于構(gòu)建和運行下一代是用于構(gòu)建和運行下一代Internet應(yīng)用程序和應(yīng)用程序和 XML Web服務(wù)的平臺服務(wù)的平臺 提供了一個高效并標(biāo)準(zhǔn)的環(huán)境,用于將現(xiàn)有資提供了一個高效并標(biāo)準(zhǔn)的環(huán)境,用于將現(xiàn)有資 源與下一代應(yīng)用程序和服務(wù)進行集成,以便靈源與下一代應(yīng)用程序和服務(wù)進行集成,以便靈 活地解決企業(yè)級應(yīng)用程序部署和操作的難題。活地解決企業(yè)級應(yīng)用程序部署和操作的難題。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) .NET框架的體系結(jié)構(gòu)框架的體系結(jié)構(gòu) 通用語言運行時(通用語言運行
49、時(Common Language RuntimeCommon Language Runtime) 類庫(類庫(Class LibraryClass Library) 數(shù)據(jù)和數(shù)據(jù)和XMLXML(ADO.NETADO.NET) WebWeb服務(wù)服務(wù) 用戶界面用戶界面 ASP.NETASP.NET VB C+ C# Perl VB C+ C# Perl Visual Studio.NET Visual Studio.NET 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) .NET框架框架 主要包括公共語言運行時(主要包括公共語言運行時(CLR)和)和.NET基類基類 庫(庫(FCL) 在開發(fā)技術(shù)方面
50、,提供了全新的數(shù)據(jù)庫訪問技在開發(fā)技術(shù)方面,提供了全新的數(shù)據(jù)庫訪問技 術(shù)術(shù)ADO.NET、Web應(yīng)用開發(fā)技術(shù)應(yīng)用開發(fā)技術(shù)ASP.NET和和 Windows編程技術(shù)編程技術(shù)Windows Forms 在開發(fā)語言方面,提供了對在開發(fā)語言方面,提供了對VB、C+、C#等等 多種語言的支持多種語言的支持 Visual Studio.NET為為.NET框架集成了大多數(shù)框架集成了大多數(shù) 工具工具 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 公共語言運行時公共語言運行時 位于操作系統(tǒng)之上,位于操作系統(tǒng)之上,.NET框架的最低一層,是框架的最低一層,是 框架的基礎(chǔ)框架的基礎(chǔ) 為宿主托管應(yīng)用程序提供虛擬環(huán)境為宿
51、主托管應(yīng)用程序提供虛擬環(huán)境 提供更多的功能和特性提供更多的功能和特性 統(tǒng)一和簡化的編程模型,使用戶不必迷惑于統(tǒng)一和簡化的編程模型,使用戶不必迷惑于Win32 API和和COM,避免了,避免了DLL版本和更新問題,簡化了版本和更新問題,簡化了 應(yīng)用程序的發(fā)布和升級應(yīng)用程序的發(fā)布和升級 多種語言之間的交互多種語言之間的交互 自動的內(nèi)存和資源管理自動的內(nèi)存和資源管理 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 公共語言運行時公共語言運行時 基于基于CLR的代碼稱為托管代碼(的代碼稱為托管代碼(Managed Code) 當(dāng)運行托管代碼時,通過針對公共語言運行時的編譯當(dāng)運行托管代碼時,通過針對公共語
52、言運行時的編譯 器生成微軟中間語言(器生成微軟中間語言(Microsoft Intermediate Language, MSIL),同時生成所需的元數(shù)據(jù),在代),同時生成所需的元數(shù)據(jù),在代 碼運行時再使用即時編譯器(碼運行時再使用即時編譯器(Just in Time Compiler)生成相應(yīng)的機器代碼來執(zhí)行)生成相應(yīng)的機器代碼來執(zhí)行 大部分情況下,代碼只在第一次被調(diào)用時被即時編譯,大部分情況下,代碼只在第一次被調(diào)用時被即時編譯, 其后便被緩存在內(nèi)存中以便下次執(zhí)行時沒有延遲。未其后便被緩存在內(nèi)存中以便下次執(zhí)行時沒有延遲。未 調(diào)用的代碼決不會被即時編譯。調(diào)用的代碼決不會被即時編譯。 即時編譯會
53、影響系統(tǒng)性能,但是即時編譯器能優(yōu)化所即時編譯會影響系統(tǒng)性能,但是即時編譯器能優(yōu)化所 產(chǎn)生的本機代碼,以適應(yīng)它所運行的主機處理器,因產(chǎn)生的本機代碼,以適應(yīng)它所運行的主機處理器,因 此即時編譯器運行效率優(yōu)于普通代碼。此即時編譯器運行效率優(yōu)于普通代碼。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 托管環(huán)境中運行代碼的好處托管環(huán)境中運行代碼的好處 即時編譯器將通用中間語言指令轉(zhuǎn)換為本機代碼,扮即時編譯器將通用中間語言指令轉(zhuǎn)換為本機代碼,扮 演了代碼驗證的角色,可以確保代碼是類型安全的,演了代碼驗證的角色,可以確保代碼是類型安全的, 避免了不同組件之間可能存在的類型不匹配的問題避免了不同組件之間可能存
54、在的類型不匹配的問題 托管代碼占用的資源可以被回收。托管代碼占用的資源可以被回收。CLR包含一個復(fù)雜包含一個復(fù)雜 的垃圾回收器,垃圾回收器自動跟蹤代碼創(chuàng)建的對象的垃圾回收器,垃圾回收器自動跟蹤代碼創(chuàng)建的對象 的應(yīng)用,當(dāng)別的進程需要使用對象占用的內(nèi)存時,它的應(yīng)用,當(dāng)別的進程需要使用對象占用的內(nèi)存時,它 可銷毀這些對象。可銷毀這些對象。 CLR負(fù)責(zé)處理對象的內(nèi)存布局、管理對象的應(yīng)用、自負(fù)責(zé)處理對象的內(nèi)存布局、管理對象的應(yīng)用、自 動垃圾收集,從根本上解決了內(nèi)存泄露和無效內(nèi)存應(yīng)動垃圾收集,從根本上解決了內(nèi)存泄露和無效內(nèi)存應(yīng) 用的問題,大大減輕了開發(fā)人員的負(fù)擔(dān),提高程序的用的問題,大大減輕了開發(fā)人員的負(fù)
55、擔(dān),提高程序的 健壯性。健壯性。 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) .NET基類庫基類庫 系統(tǒng)框架服務(wù)系統(tǒng)框架服務(wù) 一套在標(biāo)準(zhǔn)語言庫中使用的基本類庫,如集合、輸一套在標(biāo)準(zhǔn)語言庫中使用的基本類庫,如集合、輸 入入/輸出、字符串及數(shù)據(jù)類。輸出、字符串及數(shù)據(jù)類。 提供了訪問操作系統(tǒng)和其他服務(wù)的類,如網(wǎng)絡(luò)、線提供了訪問操作系統(tǒng)和其他服務(wù)的類,如網(wǎng)絡(luò)、線 程、全球化和加密的類程、全球化和加密的類 包括數(shù)據(jù)訪問類庫及開發(fā)工具,如調(diào)試和剖析服務(wù)包括數(shù)據(jù)訪問類庫及開發(fā)工具,如調(diào)試和剖析服務(wù) 使用的類使用的類 ADO.NET組件組件 為基于網(wǎng)絡(luò)的可擴展應(yīng)用程序和服務(wù)提供了數(shù)據(jù)訪為基于網(wǎng)絡(luò)的可擴展應(yīng)用
56、程序和服務(wù)提供了數(shù)據(jù)訪 問服務(wù)問服務(wù) 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) .NET基類庫基類庫 XML數(shù)據(jù)組件數(shù)據(jù)組件 提供了對提供了對XML數(shù)據(jù)的操作支持?jǐn)?shù)據(jù)的操作支持 支持支持ADO.NET數(shù)據(jù)與數(shù)據(jù)與XML數(shù)據(jù)之間的轉(zhuǎn)換數(shù)據(jù)之間的轉(zhuǎn)換 Windows表單組件表單組件 提供了強大的提供了強大的Windows應(yīng)用程序模型和豐富的應(yīng)用程序模型和豐富的 Windows用戶接口,包括傳統(tǒng)的用戶接口,包括傳統(tǒng)的ActiveX控件和控件和 Windows XP界面,如透明的、分層的、浮動的窗界面,如透明的、分層的、浮動的窗 口等口等 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) .NET基類
57、庫基類庫 ASP.NET應(yīng)用服務(wù)應(yīng)用服務(wù) 用于處理基于用于處理基于HTTP的請求,采用編譯方式大大提的請求,采用編譯方式大大提 高了它的性能高了它的性能 使用基于構(gòu)件的使用基于構(gòu)件的Microsoft.NET框架配置模板框架配置模板 支持應(yīng)用程序的實時更新,提供高速緩存服務(wù)支持應(yīng)用程序的實時更新,提供高速緩存服務(wù) ASP.NET Web表單表單 支持傳統(tǒng)的將支持傳統(tǒng)的將HTML內(nèi)容和腳本代碼混合的內(nèi)容和腳本代碼混合的ASP方方 式式 提供了一種將應(yīng)用程序代碼和用戶接口內(nèi)容分離的、提供了一種將應(yīng)用程序代碼和用戶接口內(nèi)容分離的、 更加結(jié)構(gòu)化的方法(更加結(jié)構(gòu)化的方法(Code Behind方法)方法
58、) 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) .NET基類庫基類庫 Web服務(wù)服務(wù) ASP.NET應(yīng)用服務(wù)體系架構(gòu)為使用應(yīng)用服務(wù)體系架構(gòu)為使用ASP.NET建立建立 Web服務(wù)提供了一個高級的可編程的模型服務(wù)提供了一個高級的可編程的模型 使用這個模型,開發(fā)人員不需要理解使用這個模型,開發(fā)人員不需要理解HTTP、 SOAP或其他網(wǎng)絡(luò)服務(wù)規(guī)范或其他網(wǎng)絡(luò)服務(wù)規(guī)范 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) 面向服務(wù)的體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu) 過去過去40年里,軟件體系結(jié)構(gòu)用于處理日益增長的軟件年里,軟件體系結(jié)構(gòu)用于處理日益增長的軟件 復(fù)雜性,但是復(fù)雜性仍在繼續(xù)增加,傳統(tǒng)的體系結(jié)構(gòu)復(fù)雜性,但是
59、復(fù)雜性仍在繼續(xù)增加,傳統(tǒng)的體系結(jié)構(gòu) 好像已經(jīng)達到了它們處理此類問題的極限。好像已經(jīng)達到了它們處理此類問題的極限。 為減少異構(gòu)性、互操作性和不斷變化的需求所帶來的為減少異構(gòu)性、互操作性和不斷變化的需求所帶來的 問題,需要一種新的、不受技術(shù)約束的軟件體系結(jié)構(gòu),問題,需要一種新的、不受技術(shù)約束的軟件體系結(jié)構(gòu), 它應(yīng)該具有松散耦合、位置透明、協(xié)議獨立的特征。它應(yīng)該具有松散耦合、位置透明、協(xié)議獨立的特征。 面向服務(wù)的體系結(jié)構(gòu)(面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture, SOA)可解決上述問題)可解決上述問題 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系結(jié)構(gòu) SOA 繼面
60、向?qū)ο?、基于?gòu)件的軟件架構(gòu)方法之后被提出的繼面向?qū)ο?、基于?gòu)件的軟件架構(gòu)方法之后被提出的 一種新的體系結(jié)構(gòu)一種新的體系結(jié)構(gòu) 來源于早期的基于構(gòu)件的分布式計算方式,用以解決來源于早期的基于構(gòu)件的分布式計算方式,用以解決 復(fù)雜環(huán)境下的分布式應(yīng)用,即解決復(fù)雜環(huán)境下的分布式應(yīng)用,即解決“異構(gòu)集成異構(gòu)集成”和和 “系統(tǒng)演化系統(tǒng)演化”兩個問題兩個問題 所有功能都定義為獨立的服務(wù),這些服務(wù)帶有定義明所有功能都定義為獨立的服務(wù),這些服務(wù)帶有定義明 確的可調(diào)用接口,可以以定義好的順序調(diào)用這些服務(wù)確的可調(diào)用接口,可以以定義好的順序調(diào)用這些服務(wù) 來形成業(yè)務(wù)流程來形成業(yè)務(wù)流程 第第14章流行軟件體系結(jié)構(gòu)章流行軟件體系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京信息工程大學(xué)《天氣學(xué)原理與方法Ⅱ》2022-2023學(xué)年第一學(xué)期期末試卷
- 煉鐵廢水處理技術(shù)的新進展考核試卷
- 《東北三省經(jīng)濟增長省際間投入產(chǎn)出效應(yīng)測度研究》
- 小學(xué)課間操活動方案
- 日用化學(xué)產(chǎn)品的用戶滿意度調(diào)查報告和改進方案建議考核試卷
- 基于工程認(rèn)證理念的“環(huán)境工程微生物學(xué)”多元混合式教學(xué)改革及效果
- 《基于高斯過程回歸模型的北京市顆粒物濃度預(yù)測研究》
- 《沈陽市“穿越城市”自行車運動群體行為研究》
- 2024年農(nóng)藥制劑項目申請報告
- 2024年水下燈具項目立項申請報告模板
- 2024年九年級化學(xué)上冊 第6單元 碳和碳的氧化物教案 (新版)新人教版
- 2024詳解新版《公司法》課件
- 醫(yī)院法律、法規(guī)培訓(xùn)課件
- 2024年高考作文真題解讀(立意+提綱+范文+總評)
- 美沙酮門診管理新規(guī)制度
- 2024年河南省信陽市新縣中考一模數(shù)學(xué)試題 【含答案解析】
- 正常與心梗心電圖
- 中考語文復(fù)習(xí)專題7-口語交際
- MOOC 孫子兵法-湖南大學(xué) 中國大學(xué)慕課答案
- 八段錦比賽活動方案(一)
- 人力資源管理HR人力資源管理解決方案
評論
0/150
提交評論