




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、流行的軟件體系結(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é)同工作異構(gòu)協(xié)同工作、各層次上集成各層次上集成、可可反復(fù)重用反復(fù)重用的工業(yè)化道路上前進。的工業(yè)化道路上前進。新的軟件開發(fā)模式必須支持
2、新的軟件開發(fā)模式必須支持分布式計算分布式計算、瀏覽瀏覽器器/服務(wù)器結(jié)構(gòu)服務(wù)器結(jié)構(gòu)、模塊化模塊化和和構(gòu)件化集成構(gòu)件化集成,可用不,可用不同的標(biāo)準(zhǔn)構(gòu)件同的標(biāo)準(zhǔn)構(gòu)件組裝組裝而成。而成。概述概述提供一種手段,使應(yīng)用軟件可用預(yù)先編好的、提供一種手段,使應(yīng)用軟件可用預(yù)先編好的、功能明確的產(chǎn)品部件定制而成,并可用不同版功能明確的產(chǎn)品部件定制而成,并可用不同版本的部件實現(xiàn)應(yīng)用的擴展和更新。本的部件實現(xiàn)應(yīng)用的擴展和更新。 利用模塊化方法,將復(fù)雜的難以維護的系統(tǒng)分利用模塊化方法,將復(fù)雜的難以維護的系統(tǒng)分解為互相獨立、協(xié)同工作的部件,并努力使這解為互相獨立、協(xié)同工作的部件,并努力使這些部件可反復(fù)重用。些部件可反復(fù)重
3、用。突破時間、空間及不同硬件設(shè)備的限制,利用突破時間、空間及不同硬件設(shè)備的限制,利用客戶和軟件之間統(tǒng)一的接口實現(xiàn)跨平臺的互操客戶和軟件之間統(tǒng)一的接口實現(xiàn)跨平臺的互操作。作。構(gòu)件技術(shù)構(gòu)件技術(shù)為滿足上述要求,構(gòu)件技術(shù)應(yīng)運而生為滿足上述要求,構(gòu)件技術(shù)應(yīng)運而生構(gòu)件技術(shù)被認為是未來幾年軟件發(fā)展的基構(gòu)件技術(shù)被認為是未來幾年軟件發(fā)展的基礎(chǔ)。礎(chǔ)。目標(biāo)是達到需求、體系結(jié)構(gòu)、設(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ù)制件
4、裝配方式水線生產(chǎn)方式的預(yù)制件裝配方式預(yù)制件要求并不苛刻,只要能重用就可以預(yù)制件要求并不苛刻,只要能重用就可以構(gòu)件技術(shù)構(gòu)件技術(shù)通過使用購買或定制構(gòu)件這一新的解決方通過使用購買或定制構(gòu)件這一新的解決方案可以有效地提高產(chǎn)品的質(zhì)量,加快產(chǎn)品案可以有效地提高產(chǎn)品的質(zhì)量,加快產(chǎn)品開發(fā)速度,這種開發(fā)技術(shù)稱為開發(fā)速度,這種開發(fā)技術(shù)稱為“基于構(gòu)件基于構(gòu)件的開發(fā)技術(shù)的開發(fā)技術(shù)”軟件復(fù)用軟件復(fù)用軟件產(chǎn)品的復(fù)用軟件產(chǎn)品的復(fù)用軟件過程的復(fù)用:基于構(gòu)件的復(fù)用軟件過程的復(fù)用:基于構(gòu)件的復(fù)用基于構(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)件必須遵循某一特定的
5、構(gòu)建模型,并且針構(gòu)件必須遵循某一特定的構(gòu)建模型,并且針對某一特定的構(gòu)件平臺對某一特定的構(gòu)件平臺抽象抽象面向?qū)ο蠹夹g(shù)已達到類級重用(代碼重用),面向?qū)ο蠹夹g(shù)已達到類級重用(代碼重用),以類為封裝的單位。以類為封裝的單位。重用粒度太小,不足以解決異構(gòu)互操作和效率更高重用粒度太小,不足以解決異構(gòu)互操作和效率更高的重用。的重用。構(gòu)件更推廣了對象封裝的內(nèi)涵,對一組類的組構(gòu)件更推廣了對象封裝的內(nèi)涵,對一組類的組合進行封裝(也可以不包括類,比如包括傳統(tǒng)合進行封裝(也可以不包括類,比如包括傳統(tǒng)的過程),并代表完成一個或多個功能的特定的過程),并代表完成一個或多個功能的特定服務(wù),也為用戶提供了多個接口。服務(wù),也
6、為用戶提供了多個接口。在不同層次上,構(gòu)件均可以將底層的多個邏輯組合在不同層次上,構(gòu)件均可以將底層的多個邏輯組合成高層次上的粒度更大的新構(gòu)件,甚至直接封裝到成高層次上的粒度更大的新構(gòu)件,甚至直接封裝到一個系統(tǒng),使模塊的重用從代碼級、對象級、架構(gòu)一個系統(tǒng),使模塊的重用從代碼級、對象級、架構(gòu)級到系統(tǒng)級都可能實現(xiàn)。級到系統(tǒng)級都可能實現(xiàn)。構(gòu)件的屬性構(gòu)件的屬性是可獨立配置的單元是可獨立配置的單元構(gòu)件必須具有原子性,本身不可拆分;構(gòu)件必須具有原子性,本身不可拆分;必須與其所部屬的環(huán)境以及其他構(gòu)件很好地分離必須與其所部屬的環(huán)境以及其他構(gòu)件很好地分離必須很好地封裝自己的構(gòu)成部件必須很好地封裝自己的構(gòu)成部件可以作
7、為第三方的組裝單元被復(fù)合使用可以作為第三方的組裝單元被復(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)件的一個備份構(gòu)件技術(shù)構(gòu)件技術(shù)分布式構(gòu)件
8、技術(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ù)、安全、異常處理、遠程訪問等。異常處理、遠程訪問等?;诨贑ORBA的分布式構(gòu)件技術(shù)的分布式構(gòu)件技術(shù)OMG(對象管理學(xué)會)是一個由業(yè)界(對象管理學(xué)會)是一個由業(yè)界760多個公司多個公司組成的工業(yè)協(xié)會,目的是為了共同制定一個大家都組成的工業(yè)協(xié)會,目的是為了共同制定一個大家都遵循的分布式對象計算標(biāo)準(zhǔn),將對象和分布式系統(tǒng)遵循的分布式對象計算標(biāo)準(zhǔn),將對象和分布式系統(tǒng)技術(shù)集成為
9、一個可相互操作的統(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ī)范。OMA對象管理體系結(jié)構(gòu)對象管理體系結(jié)構(gòu)對象請求代理對象請求代理(Object Request BrokerObject Request Broker
10、)CORBACORBA服務(wù)服務(wù)(CORBA ServiceCORBA Service)應(yīng)用對象應(yīng)用對象( (Application Object) )水平水平CORBACORBA設(shè)備設(shè)備( (Horizontal CORBA Facility) )垂直垂直CORBACORBA設(shè)備設(shè)備( (Vertical CORBA Facility) )CORBA服務(wù)服務(wù)提供適用于實現(xiàn)對象的一些基本功能,如對提供適用于實現(xiàn)對象的一些基本功能,如對象的命名服務(wù)、對象交易服務(wù)(對象并行、象的命名服務(wù)、對象交易服務(wù)(對象并行、對象存儲、對象產(chǎn)生和消亡、事件消息響應(yīng)對象存儲、對象產(chǎn)生和消亡、事件消息響應(yīng)以及事務(wù)交易
11、的一致性保證)和持久狀態(tài)服以及事務(wù)交易的一致性保證)和持久狀態(tài)服務(wù)(務(wù)(Persistent State Service, PPS)等。)等。是發(fā)布對象系統(tǒng)必不可少的公共服務(wù),是底是發(fā)布對象系統(tǒng)必不可少的公共服務(wù),是底層支持的必需服務(wù)。層支持的必需服務(wù)。CORBA設(shè)備設(shè)備水平水平CORBA設(shè)備:在各種工業(yè)部門中針對所設(shè)備:在各種工業(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è)備:只在特殊垂直市場和工
12、業(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è)備。應(yīng)用對象應(yīng)用對象位于位于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的
13、標(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)對象請求代理對象請求代理是是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)CORBA體系結(jié)構(gòu)體系結(jié)構(gòu)CORBA規(guī)范包括規(guī)范包括ORB、接口定義語言、接口定
14、義語言(IDL)、存根存根(Stub)、框架、框架(Skeleton)、對象適配器、對象適配器、動態(tài)調(diào)用接口動態(tài)調(diào)用接口CORBA體系結(jié)構(gòu)體系結(jié)構(gòu)接口庫接口庫Interface Repository實現(xiàn)庫實現(xiàn)庫ImplementationRepository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài)調(diào)用調(diào)用客戶客戶StubStubORBORB接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù)Skeleton動態(tài)服務(wù)動態(tài)服務(wù)Skeleton客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) )ORBORB的任務(wù)就是把客戶發(fā)出的請
15、求傳送給目標(biāo)對象,的任務(wù)就是把客戶發(fā)出的請求傳送給目標(biāo)對象,并把目標(biāo)對象的執(zhí)行結(jié)果返回給請求客戶。它屏蔽并把目標(biāo)對象的執(zhí)行結(jié)果返回給請求客戶。它屏蔽了了對象位置、對象實現(xiàn)、對象執(zhí)行狀態(tài)、對象通了了對象位置、對象實現(xiàn)、對象執(zhí)行狀態(tài)、對象通信機制和數(shù)據(jù)表示。信機制和數(shù)據(jù)表示。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)細節(jié)是說明性語言,只
16、對對象接口定義,不提供任何實現(xiàn)細節(jié)的描述。的描述。IDLIDL把編譯后的代碼映射到具體的編程語言,并且產(chǎn)把編譯后的代碼映射到具體的編程語言,并且產(chǎn)生客戶生客戶StubStub和服務(wù)和服務(wù)SkeletonSkeleton。 對象請求代理(對象請求代理(Object Request BrokerObject Request Broker) 客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Object implementation) )請求請求(Request)(Request)IDLIDLStubStubIDLIDLStubStubCORBA體系結(jié)構(gòu)體系結(jié)構(gòu)接口庫接口庫Interfa
17、ce Repository實現(xiàn)庫實現(xiàn)庫ImplementationRepository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài)調(diào)用調(diào)用客戶客戶StubStubORBORB接口接口 對象適配器對象適配器 靜態(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)用程序通過存根向服務(wù)器應(yīng)用程序發(fā)送請求,服務(wù)器應(yīng)用程序發(fā)送請求,CORBA體系結(jié)構(gòu)體系結(jié)構(gòu)接口庫接口庫Interfa
18、ce Repository實現(xiàn)庫實現(xiàn)庫ImplementationRepository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài)調(diào)用調(diào)用客戶客戶StubStubORBORB接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù)Skeleton動態(tài)服務(wù)動態(tài)服務(wù)Skeleton客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) )框架(框架(SkeletonSkeleton)是服務(wù)器端的代碼,提供對象適配器轉(zhuǎn)發(fā))是服務(wù)器端的代碼,提供對象適配器轉(zhuǎn)發(fā)的請求調(diào)度到對象實現(xiàn)上的適當(dāng)操作的代碼。的請求調(diào)度到對象實現(xiàn)上的適當(dāng)操作的代碼。CORB
19、A體系結(jié)構(gòu)體系結(jié)構(gòu)接口庫接口庫Interface Repository實現(xiàn)庫實現(xiàn)庫ImplementationRepository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài)調(diào)用調(diào)用客戶客戶StubStubORBORB接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù)Skeleton動態(tài)服務(wù)動態(tài)服務(wù)Skeleton客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) )對象適配器(對象適配器(Object AdapterObject Adapter)是)是ORBORB核心的上層機制。它負責(zé)核心的上層機制。它負責(zé)接受服務(wù)請求,完成實
20、例化服務(wù)對象,向?qū)ο髠魉驼埱?,為服接受服?wù)請求,完成實例化服務(wù)對象,向?qū)ο髠魉驼埱?,為服?wù)指定對象引用和提供運行環(huán)境。務(wù)指定對象引用和提供運行環(huán)境。CORBA體系結(jié)構(gòu)體系結(jié)構(gòu)接口庫接口庫Interface Repository實現(xiàn)庫實現(xiàn)庫ImplementationRepository 對象請求中間件核心(對象請求中間件核心(ORB CoreORB Core) 動態(tài)動態(tài)調(diào)用調(diào)用客戶客戶StubStubORBORB接口接口 對象適配器對象適配器 靜態(tài)服務(wù)靜態(tài)服務(wù)Skeleton動態(tài)服務(wù)動態(tài)服務(wù)Skeleton客戶程序客戶程序( (Client) )對象實現(xiàn)對象實現(xiàn)( (Server) )通過對象
21、適配器,通過對象適配器,ORBORB服務(wù)方給客戶應(yīng)用提供了一個假象(虛擬服務(wù)方給客戶應(yīng)用提供了一個假象(虛擬環(huán)境),即服務(wù)對象都是活動著的,隨時等待客戶應(yīng)用發(fā)來請環(huán)境),即服務(wù)對象都是活動著的,隨時等待客戶應(yīng)用發(fā)來請求。求。ORBORB通過適配器將目的對象分成組,每組通過特定的對象適通過適配器將目的對象分成組,每組通過特定的對象適配器來滿足特定的需求。配器來滿足特定的需求。基于基于Java的分布式構(gòu)件技術(shù)的分布式構(gòu)件技術(shù)1996年年1月,月,Sun公司正式發(fā)布了公司正式發(fā)布了Java1.01998年夏末又推出了年夏末又推出了Java2.01999年年Sun公司推出三個版本的公司推出三個版本的J
22、ava2平臺:平臺:J2ME:是:是Java 2 Platform Micro Edition的縮寫,即的縮寫,即Java2平臺微型版,適用于開發(fā)小型設(shè)備和智能卡上的平臺微型版,適用于開發(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 E
23、nterprise Edition的縮寫,的縮寫,即即Java2平臺企業(yè)版,適用于創(chuàng)建服務(wù)器端的大型應(yīng)用平臺企業(yè)版,適用于創(chuàng)建服務(wù)器端的大型應(yīng)用軟件和服務(wù)系統(tǒng)。軟件和服務(wù)系統(tǒng)。J2EE平臺平臺使用使用多層分布式應(yīng)用模型多層分布式應(yīng)用模型,根據(jù)功能劃分成各個構(gòu),根據(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頁面頁面動
24、態(tài)動態(tài)HTMLHTML頁面頁面客戶層客戶層WebWeb層層業(yè)務(wù)層業(yè)務(wù)層EISEIS層層客戶端機器客戶端機器J2EEJ2EE服務(wù)器服務(wù)器機器機器數(shù)據(jù)庫服務(wù)器數(shù)據(jù)庫服務(wù)器機器機器JSPJSP頁面頁面JSPJSP頁面頁面EJBEJBEJBEJB數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫數(shù)據(jù)庫J2EE平臺平臺最基本的最基本的Java構(gòu)件是在構(gòu)件是在J2ME中的中的JavaBean,它,它是按照特定格式編寫的是按照特定格式編寫的Java類類JavaBean包括包括實例變量實例變量(Instance Variable)和)和get()、set()方法來訪問實例變量的數(shù)據(jù)。方法來訪問實例變量的數(shù)據(jù)。這種格式大大簡化了程
25、序設(shè)計。這種格式大大簡化了程序設(shè)計。J2EE的構(gòu)件在的構(gòu)件在JavaBeans基礎(chǔ)上進行了拓展。基礎(chǔ)上進行了拓展。J2EE構(gòu)件構(gòu)件客戶端構(gòu)件客戶端構(gòu)件:Java應(yīng)用程序和應(yīng)用程序和AppletWeb構(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)的容器中??蛻舳藰?gòu)件客戶端構(gòu)件Java應(yīng)用程序是運行在應(yīng)用客戶容器內(nèi)部的單個應(yīng)用程序是運行在應(yīng)用客戶容器內(nèi)部的單個程序,應(yīng)用客戶容器提供了支持消息、遠程調(diào)用
26、、程序,應(yīng)用客戶容器提供了支持消息、遠程調(diào)用、數(shù)據(jù)庫連接和查詢服務(wù)的數(shù)據(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)建可下載的輕量級構(gòu)件,來豐富客戶端網(wǎng)頁的視覺效果。頁的視覺效果。Applet需要需要J2SE API的支持。的支持。
27、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)容顯示、處理以及與顯示相關(guān)的格式的機制。顯示、處理以及與顯示相關(guān)的格式的機制。JSP技術(shù)技術(shù) 為為Web客戶端產(chǎn)生動態(tài)內(nèi)容提供了一種可擴展的方客戶端產(chǎn)生動態(tài)內(nèi)容提供了一種可擴展的方式。目的在
28、于生成能夠處理動態(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)生Response.通常由通常由JSP標(biāo)記、標(biāo)記、HTML標(biāo)記和嵌入其中的標(biāo)記和嵌入其中的Java代代碼組成。服務(wù)器在頁面被客戶端請求后對這些碼組成。服務(wù)器在頁面被客戶端請求后對這些Java代碼進行處理,然后生成代碼進行處理,然后生成HT
29、ML頁面返回給客頁面返回給客戶端瀏覽器。戶端瀏覽器。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)準(zhǔn)標(biāo)標(biāo)準(zhǔn)標(biāo)簽庫)。擴展標(biāo)記的使用令簽庫)。擴展標(biāo)記的使用令JSP頁面變得越來越清頁面變得越來越清晰,結(jié)構(gòu)越來越完整。晰,結(jié)構(gòu)越來越完整。Servlet 是運行在服務(wù)器上的小程序,可被看作是服務(wù)器端是運行在服務(wù)器上的小程序,可被看作是服務(wù)器端的的Applet,實際上一個,實際上一個Servle
30、t就是擴展就是擴展Web服務(wù)服務(wù)器功能的一個器功能的一個Java類。類。是作為是作為CGI(Common Gateway Interface,通用網(wǎng)通用網(wǎng)關(guān)接口)的替代物發(fā)展起來的關(guān)接口)的替代物發(fā)展起來的,具有可移植性、靈具有可移植性、靈活性以及易編寫等優(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)件,所以必須要運
31、行在構(gòu)件,所以必須要運行在Web服務(wù)器上。服務(wù)器上。業(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)件。構(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ù)中解脫出來。
32、EJB容器降低了容器降低了EJB構(gòu)件開發(fā)的復(fù)雜程度,提高了構(gòu)件開發(fā)的復(fù)雜程度,提高了構(gòu)件開發(fā)的效率,保證了構(gòu)件的可移植性。構(gòu)件開發(fā)的效率,保證了構(gòu)件的可移植性。EJB規(guī)范定義了規(guī)范定義了EJB構(gòu)件與構(gòu)件與EJB容器之間的交互機容器之間的交互機制。制。業(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)建為遠程對象,構(gòu)件創(chuàng)建為遠程對象,客戶端通過網(wǎng)絡(luò)調(diào)用客戶端通過網(wǎng)絡(luò)調(diào)用EJB對象。客戶端進行調(diào)用時,對象。客戶端進行調(diào)用時,不是采用不是采用RMI注
33、冊表提供的命名服務(wù)進行查找,而注冊表提供的命名服務(wù)進行查找,而是使用是使用JNDI技術(shù)查找技術(shù)查找EJB對象。對象。JNDI屏蔽掉了屏蔽掉了RMI命名服務(wù)的實現(xiàn)細節(jié),使客戶端程序更具通用命名服務(wù)的實現(xiàn)細節(jié),使客戶端程序更具通用性。性。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ù)進行查詢、更新等操作。通過兩種機制
34、來持久保存對象:通過兩種機制來持久保存對象:容器管理持久性(容器管理持久性(CMP)Bean管理持久性(管理持久性(BMP)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)會話bean:不保存客戶的會
35、話狀態(tài)信:不保存客戶的會話狀態(tài)信息,每次服務(wù),同一個客戶不一定對應(yīng)同一息,每次服務(wù),同一個客戶不一定對應(yīng)同一個會話個會話bean實例。實例。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)用,客戶只能通過消息系統(tǒng)進行間接的調(diào)用。過消息系統(tǒng)進行間接的調(diào)用。為客戶和為客戶和EJB構(gòu)件之間提供了一種異步的
36、通信能構(gòu)件之間提供了一種異步的通信能力力EJB構(gòu)件構(gòu)件大多數(shù)大多數(shù)EJB構(gòu)件(不包括消息驅(qū)動構(gòu)件(不包括消息驅(qū)動bean)由以下)由以下遠程接口、本地接口和遠程接口、本地接口和Bean類組成:類組成:遠程接口遠程接口(remote interface)聲明了相應(yīng)聲明了相應(yīng)Bean類公開的所有業(yè)務(wù)方法類公開的所有業(yè)務(wù)方法必須遵循必須遵循EJB規(guī)范規(guī)范必須由必須由javax.ejb.EJBObject派生派生本地接口本地接口(home interface)聲明了與聲明了與EJB構(gòu)件生命周期有關(guān)的方法構(gòu)件生命周期有關(guān)的方法客戶可以使用本地接口中提供的方法創(chuàng)建、查找和刪客戶可以使用本地接口中提供的方法
37、創(chuàng)建、查找和刪除除EJB構(gòu)件構(gòu)件方法的實現(xiàn)由方法的實現(xiàn)由EJB容器負責(zé),容器負責(zé),EJB開發(fā)人員只需要提開發(fā)人員只需要提供方法的原型供方法的原型必須由必須由javax.ejb.EJBHome派生派生EJB構(gòu)件構(gòu)件大多數(shù)大多數(shù)EJB構(gòu)件(不包括消息驅(qū)動構(gòu)件(不包括消息驅(qū)動bean)由以下)由以下遠程接口、本地接口和遠程接口、本地接口和Bean類組成:類組成:Bean類類實現(xiàn)實現(xiàn)EJB構(gòu)件的業(yè)務(wù)邏輯方法構(gòu)件的業(yè)務(wù)邏輯方法用戶通過遠程接口調(diào)用這些方法用戶通過遠程接口調(diào)用這些方法所有所有Bean類都必須實現(xiàn)的最基本的接口是類都必須實現(xiàn)的最基本的接口是javax.ejb.EnterpriseBean一般
38、不直接實現(xiàn)一般不直接實現(xiàn)javax.ejb.EnterpriseBean接口,而接口,而是實現(xiàn)相應(yīng)的是實現(xiàn)相應(yīng)的Bean類型的接口類型的接口消息驅(qū)動消息驅(qū)動EJB構(gòu)件沒有本地接口和遠程接口構(gòu)件沒有本地接口和遠程接口EJB構(gòu)件構(gòu)件EJB構(gòu)件運行在構(gòu)件運行在EJB容器中,容器中,EJB容器為容器為EJB構(gòu)件提供構(gòu)件提供事務(wù)管理事務(wù)管理、持久性持久性、安全性安全性和和并發(fā)控制并發(fā)控制等系統(tǒng)服務(wù)。等系統(tǒng)服務(wù)。當(dāng)當(dāng)EJB構(gòu)件被裝入到容器中時,需要向容器構(gòu)件被裝入到容器中時,需要向容器說明說明EJB構(gòu)件將如何部署到容器中去,以及構(gòu)件將如何部署到容器中去,以及希望容器提供哪些服務(wù)。希望容器提供哪些服務(wù)。通過
39、一個通過一個XML格式的部署描述文件說明。格式的部署描述文件說明。部署描述文件部署描述文件 EJB基本信息基本信息:指明:指明EJB的名稱、遠程接口、的名稱、遠程接口、本地接口及本地接口及Bean類類EJB管理要求管理要求:指明:指明EJB容器應(yīng)該如何管理容器應(yīng)該如何管理BeanEJB持久性要求持久性要求:指明實體:指明實體Bean是由自己管是由自己管理持久性,還是由容器管理持久性理持久性,還是由容器管理持久性EJB事務(wù)處理要求事務(wù)處理要求:指明容器的安全策略:指明容器的安全策略J2EE構(gòu)件構(gòu)件 包括包括Java應(yīng)用程序、應(yīng)用程序、Applet、JSP、Servlet、EJB可以打包成模塊(可
40、以打包成模塊(module)并以)并以Java Archive(JAR)文件的形式發(fā)布)文件的形式發(fā)布一個模塊通常包含了相關(guān)的構(gòu)件、相關(guān)文件一個模塊通常包含了相關(guān)的構(gòu)件、相關(guān)文件和用來描述怎樣部署構(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)重用重用基于基于.NET平臺的分布式構(gòu)件技術(shù)平臺的分布式構(gòu)件技術(shù) 微軟沒有提出一整套標(biāo)準(zhǔn),逐漸引入構(gòu)件技術(shù),可獲微軟沒有提出一整套標(biāo)準(zhǔn),逐漸引入構(gòu)件技術(shù),可獲益于以前的成功技術(shù),如益于以前的
41、成功技術(shù),如Visual Basic控件、對象鏈控件、對象鏈接和嵌入(接和嵌入(OLE)、)、OLE數(shù)據(jù)庫連接(數(shù)據(jù)庫連接(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+等幾個階段。等幾個階段。COM 為代碼的重用提供了一種為代碼的重用提
42、供了一種模塊化、面向?qū)ο蟮姆绞侥K化、面向?qū)ο蟮姆绞蕉x了定義了定位和識別其他組件功能的標(biāo)準(zhǔn)方式定位和識別其他組件功能的標(biāo)準(zhǔn)方式,組件可,組件可用各種語言編寫和使用用各種語言編寫和使用是微軟平臺上所有構(gòu)件的是微軟平臺上所有構(gòu)件的基石基石但是。但是。COM組件組件不容易編寫不容易編寫提供的功能提供的功能取決于編寫所用的語言取決于編寫所用的語言很難部署很難部署COM服務(wù)器組件的開發(fā)人員必須服務(wù)器組件的開發(fā)人員必須確保組件的新版本確保組件的新版本與舊版本兼容與舊版本兼容,但有時新舊版本不兼容,被稱為,但有時新舊版本不兼容,被稱為“DLL Hell”.NET框架框架 NET框架和框架和NET組件可以避
43、開組件可以避開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)用程序部署和操作的難題?;畹亟鉀Q企業(yè)級應(yīng)用程序部署和操作的難題。.NET框架的體系結(jié)構(gòu)框架的體系結(jié)構(gòu) 通用語言運行時(通用語言運行時(Common Language RuntimeCommon
44、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 .NET框架框架 主要包括公共語言運行時(主要包括公共語言運行時(CLR)和)和.NET基類基類庫(庫(FCL)在開發(fā)技術(shù)方面,提供了全新的數(shù)據(jù)庫訪問技在開發(fā)技術(shù)方面,提供了全新的數(shù)據(jù)庫訪問技術(shù)術(shù)ADO.NET、Web應(yīng)用開發(fā)技術(shù)應(yīng)用開發(fā)技術(shù)
45、ASP.NET和和Windows編程技術(shù)編程技術(shù)Windows Forms在開發(fā)語言方面,提供了對在開發(fā)語言方面,提供了對VB、C+、C#等等多種語言的支持多種語言的支持Visual Studio.NET為為.NET框架集成了大多數(shù)框架集成了大多數(shù)工具工具公共語言運行時公共語言運行時 位于操作系統(tǒng)之上,位于操作系統(tǒng)之上,.NET框架的最低一層,是框架的最低一層,是框架的基礎(chǔ)框架的基礎(chǔ)為宿主托管應(yīng)用程序提供虛擬環(huán)境為宿主托管應(yīng)用程序提供虛擬環(huán)境提供更多的功能和特性提供更多的功能和特性統(tǒng)一和簡化的編程模型,使用戶不必迷惑于統(tǒng)一和簡化的編程模型,使用戶不必迷惑于Win32 API和和COM,避免了,
46、避免了DLL版本和更新問題,簡化了版本和更新問題,簡化了應(yīng)用程序的發(fā)布和升級應(yīng)用程序的發(fā)布和升級多種語言之間的交互多種語言之間的交互自動的內(nèi)存和資源管理自動的內(nèi)存和資源管理公共語言運行時公共語言運行時基于基于CLR的代碼稱為的代碼稱為托管代碼托管代碼(Managed Code)當(dāng)運行托管代碼時,通過針對公共語言運行時的編譯當(dāng)運行托管代碼時,通過針對公共語言運行時的編譯器生成器生成微軟中間語言微軟中間語言(Microsoft Intermediate Language, MSIL),同時生成所需的),同時生成所需的元數(shù)據(jù)元數(shù)據(jù),在代,在代碼運行時再使用即時編譯器(碼運行時再使用即時編譯器(Jus
47、t in Time Compiler)生成相應(yīng)的)生成相應(yīng)的機器代碼機器代碼來執(zhí)行來執(zhí)行大部分情況下,代碼只在第一次被調(diào)用時被即時編譯,大部分情況下,代碼只在第一次被調(diào)用時被即時編譯,其后便被緩存在內(nèi)存中以便下次執(zhí)行時沒有延遲。未其后便被緩存在內(nèi)存中以便下次執(zhí)行時沒有延遲。未調(diào)用的代碼決不會被即時編譯。調(diào)用的代碼決不會被即時編譯。即時編譯會影響系統(tǒng)性能,但是即時編譯器能優(yōu)化所即時編譯會影響系統(tǒng)性能,但是即時編譯器能優(yōu)化所產(chǎn)生的本機代碼,以適應(yīng)它所運行的主機處理器,因產(chǎn)生的本機代碼,以適應(yīng)它所運行的主機處理器,因此即時編譯器運行效率優(yōu)于普通代碼。此即時編譯器運行效率優(yōu)于普通代碼。托管環(huán)境中運行代
48、碼的好處托管環(huán)境中運行代碼的好處 即時編譯器將通用中間語言指令轉(zhuǎn)換為本機代碼,扮即時編譯器將通用中間語言指令轉(zhuǎn)換為本機代碼,扮演了代碼驗證的角色,可以確保代碼是類型安全的,演了代碼驗證的角色,可以確保代碼是類型安全的,避免了不同組件之間可能存在的類型不匹配的問題避免了不同組件之間可能存在的類型不匹配的問題托管代碼占用的資源可以被回收。托管代碼占用的資源可以被回收。CLR包含一個復(fù)雜包含一個復(fù)雜的垃圾回收器,垃圾回收器自動跟蹤代碼創(chuàng)建的對象的垃圾回收器,垃圾回收器自動跟蹤代碼創(chuàng)建的對象的應(yīng)用,當(dāng)別的進程需要使用對象占用的內(nèi)存時,它的應(yīng)用,當(dāng)別的進程需要使用對象占用的內(nèi)存時,它可銷毀這些對象??射N
49、毀這些對象。CLR負責(zé)處理對象的內(nèi)存布局、管理對象的應(yīng)用、自負責(zé)處理對象的內(nèi)存布局、管理對象的應(yīng)用、自動垃圾收集,從根本上解決了內(nèi)存泄露和無效內(nèi)存應(yīng)動垃圾收集,從根本上解決了內(nèi)存泄露和無效內(nèi)存應(yīng)用的問題,大大減輕了開發(fā)人員的負擔(dān),提高程序的用的問題,大大減輕了開發(fā)人員的負擔(dān),提高程序的健壯性。健壯性。.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ò)、線程、全球化和加密的類程、全
50、球化和加密的類包括數(shù)據(jù)訪問類庫及開發(fā)工具,如調(diào)試和剖析服務(wù)包括數(shù)據(jù)訪問類庫及開發(fā)工具,如調(diào)試和剖析服務(wù)使用的類使用的類ADO.NET組件組件為基于網(wǎng)絡(luò)的可擴展應(yīng)用程序和服務(wù)提供了為基于網(wǎng)絡(luò)的可擴展應(yīng)用程序和服務(wù)提供了數(shù)據(jù)訪數(shù)據(jù)訪問服務(wù)問服務(wù).NET基類庫基類庫 XML數(shù)據(jù)組件數(shù)據(jù)組件提供了對提供了對XML數(shù)據(jù)的操作支持數(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控件和控件和Windo
51、ws XP界面,如透明的、分層的、浮動的窗界面,如透明的、分層的、浮動的窗口等口等.NET基類庫基類庫 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)容
52、分離的、更加結(jié)構(gòu)化的方法(更加結(jié)構(gòu)化的方法(Code Behind方法)方法).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ī)范面向服務(wù)的體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu) 過去過去40年里,軟件體系結(jié)構(gòu)用于處理日益增長的軟件年里,軟件體系結(jié)構(gòu)用于處理日益增長的軟件復(fù)雜性,但是復(fù)雜性仍在繼續(xù)增加,傳統(tǒng)的體系結(jié)構(gòu)復(fù)雜性,但是復(fù)雜性仍在繼續(xù)增加,傳統(tǒng)的體系
53、結(jié)構(gòu)好像已經(jīng)達到了它們處理此類問題的極限。好像已經(jīng)達到了它們處理此類問題的極限。為減少異構(gòu)性、互操作性和不斷變化的需求所帶來的為減少異構(gòu)性、互操作性和不斷變化的需求所帶來的問題,需要一種新的、不受技術(shù)約束的軟件體系結(jié)構(gòu),問題,需要一種新的、不受技術(shù)約束的軟件體系結(jié)構(gòu),它應(yīng)該具有它應(yīng)該具有松散耦合松散耦合、位置透明位置透明、協(xié)議獨立協(xié)議獨立的特征。的特征。面向服務(wù)的體系結(jié)構(gòu)(面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture, SOA)可解決上述問題)可解決上述問題SOA 繼面向?qū)ο?、基于?gòu)件的軟件架構(gòu)方法之后被提出的繼面向?qū)ο蟆⒒跇?gòu)件的軟件架構(gòu)方法之后被提出的一種
54、新的體系結(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ù)流程服務(wù)、對象和構(gòu)件之間的關(guān)系服務(wù)、對象和構(gòu)件之間的關(guān)系 服務(wù)層服務(wù)層構(gòu)件層構(gòu)件層面向服務(wù)面向服務(wù)的設(shè)計的設(shè)計面向構(gòu)件面向構(gòu)件的設(shè)計的設(shè)計面向?qū)ο竺嫦驅(qū)?/p>
55、象的設(shè)計的設(shè)計類層類層基于基于SOASOA的的系統(tǒng)可使用系統(tǒng)可使用構(gòu)件組裝服構(gòu)件組裝服務(wù),也可使務(wù),也可使用面向?qū)ο笥妹嫦驅(qū)ο蟮脑O(shè)計來構(gòu)的設(shè)計來構(gòu)建單個服務(wù)建單個服務(wù)SOA 服務(wù)是封裝成用于業(yè)務(wù)流程的可重用構(gòu)件的應(yīng)用程序服務(wù)是封裝成用于業(yè)務(wù)流程的可重用構(gòu)件的應(yīng)用程序功能功能服務(wù)是細粒度的,也可以是粗粒度的,取決于業(yè)務(wù)流服務(wù)是細粒度的,也可以是粗粒度的,取決于業(yè)務(wù)流程程每個服務(wù)都有良好的接口,通過該接口就可以發(fā)現(xiàn)、每個服務(wù)都有良好的接口,通過該接口就可以發(fā)現(xiàn)、發(fā)布和調(diào)用服務(wù)。發(fā)布和調(diào)用服務(wù)。企業(yè)可以選擇將自己的服務(wù)向外發(fā)布到業(yè)務(wù)合作伙伴,企業(yè)可以選擇將自己的服務(wù)向外發(fā)布到業(yè)務(wù)合作伙伴,也可以選擇
56、在組織內(nèi)部發(fā)布服務(wù)。也可以選擇在組織內(nèi)部發(fā)布服務(wù)。服務(wù)還可以由其他服務(wù)組合而成服務(wù)還可以由其他服務(wù)組合而成SOA中的角色中的角色 服務(wù)消費者服務(wù)消費者(Service Consumer):是一個應(yīng)用程):是一個應(yīng)用程序、一個軟件模塊或需要一個服務(wù)的另一個服務(wù)。它序、一個軟件模塊或需要一個服務(wù)的另一個服務(wù)。它發(fā)起對注冊中心的服務(wù)的查詢,通過傳輸綁定服務(wù),發(fā)起對注冊中心的服務(wù)的查詢,通過傳輸綁定服務(wù),并且執(zhí)行服務(wù)功能。服務(wù)消費者根據(jù)接口契約來執(zhí)行并且執(zhí)行服務(wù)功能。服務(wù)消費者根據(jù)接口契約來執(zhí)行服務(wù)。服務(wù)。服務(wù)提供者服務(wù)提供者(Service Provider):是一個可通過網(wǎng)):是一個可通過網(wǎng)絡(luò)尋址
57、的實體,它接受和執(zhí)行來自消費者的請求。它絡(luò)尋址的實體,它接受和執(zhí)行來自消費者的請求。它將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊中心,以便將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊中心,以便服務(wù)消費者可以發(fā)現(xiàn)和訪問該服務(wù)。服務(wù)消費者可以發(fā)現(xiàn)和訪問該服務(wù)。SOA中的角色中的角色 服務(wù)注冊中心服務(wù)注冊中心(Service Registry):是服務(wù)發(fā)現(xiàn)的):是服務(wù)發(fā)現(xiàn)的支持者,包含一個可用服務(wù)的存儲庫,并允許感興趣支持者,包含一個可用服務(wù)的存儲庫,并允許感興趣的服務(wù)消費者查找服務(wù)提供者接口。的服務(wù)消費者查找服務(wù)提供者接口。SOA中各個角色的協(xié)作中各個角色的協(xié)作 服務(wù)注服務(wù)注冊冊服務(wù)消費服務(wù)消費者者服務(wù)提供服務(wù)
58、提供者者發(fā)現(xiàn)發(fā)現(xiàn)發(fā)布發(fā)布綁定與調(diào)用綁定與調(diào)用服務(wù)描述服務(wù)描述服務(wù)服務(wù)服務(wù)描述服務(wù)描述SOA中的操作中的操作 發(fā)布:為了使服務(wù)可訪問,需要發(fā)布服務(wù)描述以使服發(fā)布:為了使服務(wù)可訪問,需要發(fā)布服務(wù)描述以使服務(wù)消費者可以發(fā)現(xiàn)和調(diào)用它務(wù)消費者可以發(fā)現(xiàn)和調(diào)用它發(fā)現(xiàn):服務(wù)請求者定位服務(wù),方法是查詢服務(wù)注冊中發(fā)現(xiàn):服務(wù)請求者定位服務(wù),方法是查詢服務(wù)注冊中心來找到滿足其標(biāo)準(zhǔn)的服務(wù)心來找到滿足其標(biāo)準(zhǔn)的服務(wù)綁定和調(diào)用:在檢索完服務(wù)描述之后,服務(wù)消費者繼綁定和調(diào)用:在檢索完服務(wù)描述之后,服務(wù)消費者繼續(xù)根據(jù)服務(wù)描述中的信息來調(diào)用服務(wù)續(xù)根據(jù)服務(wù)描述中的信息來調(diào)用服務(wù)SOA中的構(gòu)件中的構(gòu)件 服務(wù):可以通過已發(fā)布接口使用服務(wù)
59、,并且允許服務(wù)服務(wù):可以通過已發(fā)布接口使用服務(wù),并且允許服務(wù)消費者調(diào)用服務(wù)消費者調(diào)用服務(wù)服務(wù)描述:服務(wù)描述指定服務(wù)消費者與服務(wù)提供者交服務(wù)描述:服務(wù)描述指定服務(wù)消費者與服務(wù)提供者交互的方式。它指定來自服務(wù)的請求和響應(yīng)的格式。服互的方式。它指定來自服務(wù)的請求和響應(yīng)的格式。服務(wù)描述可以指定一組前提條件、后置條件和務(wù)描述可以指定一組前提條件、后置條件和/或服務(wù)或服務(wù)質(zhì)量(質(zhì)量(QoS)級別)級別SOA的特征的特征 動態(tài)服務(wù)發(fā)現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)服務(wù)接口契約服務(wù)接口契約服務(wù)是自包含和模塊化的服務(wù)是自包含和模塊化的服務(wù)支持互操作性服務(wù)支持互操作性服務(wù)是松散耦合的服務(wù)是松散耦合的服務(wù)是位置透明的服務(wù)是位置透明的
60、服務(wù)是由組件組成的組合模塊服務(wù)是由組件組成的組合模塊基于基于Web服務(wù)的服務(wù)的SOA實現(xiàn)實現(xiàn)Web服務(wù)建立在開放標(biāo)準(zhǔn)和獨立于平臺的協(xié)議的基礎(chǔ)服務(wù)建立在開放標(biāo)準(zhǔn)和獨立于平臺的協(xié)議的基礎(chǔ)之上,是包括之上,是包括XML、SOAP、WSDL和和UDDI在內(nèi)的在內(nèi)的技術(shù)集合。技術(shù)集合。Web服務(wù)通過服務(wù)通過HTTP使用使用SOAP(Simple Object Access Protocol ),以便在服務(wù)提供者和消費者之,以便在服務(wù)提供者和消費者之間進行通信。間進行通信。通過通過WSDL(Web Service Definition Language)定義的接口公布服務(wù),定義的接口公布服務(wù),WSDL的語
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 發(fā)放福利轉(zhuǎn)讓協(xié)議書
- 公司獨資成立協(xié)議書
- 員工獎勵股份協(xié)議書
- 合伙股東勸退協(xié)議書
- 地攤小車租借協(xié)議書
- 單位福利購房協(xié)議書
- 員工股份激勵協(xié)議書
- 合作運營中心協(xié)議書
- 啟用車主保險協(xié)議書
- 土地股權(quán)股東協(xié)議書
- 新能源設(shè)計專業(yè)考試題庫匯總(附答案)
- 東南大學(xué)醫(yī)學(xué)三基考試外科選擇題及答案
- GB/T 7777-2003容積式壓縮機機械振動測量與評價
- GB 5585.1-1985電工用銅、鋁及其合金母線第1部分:一般規(guī)定
- 等級保護定級指南(第十二期)講解課件
- 接觸網(wǎng)設(shè)備檢測課件
- 銅綠假單胞菌下呼吸道感染專家共識課件
- 故都的秋公開一等獎?wù)n件
- 土石壩填筑的施工方法
- 【高中化學(xué)會考】山西省普通高中畢業(yè)會考化學(xué)試題樣題
- 2023高考地理高三一輪復(fù)習(xí)教學(xué)計劃和備考策略
評論
0/150
提交評論