版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
流行的軟件體系結(jié)構(gòu)概述隨著計(jì)算機(jī)硬件技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,網(wǎng)絡(luò)計(jì)算經(jīng)歷了從集中式計(jì)算到分布式計(jì)算的重大演變,新的分布式網(wǎng)絡(luò)計(jì)算要求軟件實(shí)現(xiàn)跨空間、跨時(shí)間、跨設(shè)備、跨用戶(hù)的共享,導(dǎo)致軟件在規(guī)模、復(fù)雜度、功能上的極大增長(zhǎng),迫使軟件向異構(gòu)協(xié)同工作、各層次上集成、可反復(fù)重用的工業(yè)化道路上前進(jìn)。新的軟件開(kāi)發(fā)模式必須支持分布式計(jì)算、瀏覽器/服務(wù)器結(jié)構(gòu)、模塊化和構(gòu)件化集成,可用不同的標(biāo)準(zhǔn)構(gòu)件組裝而成。概述提供一種手段,使應(yīng)用軟件可用預(yù)先編好的、功能明確的產(chǎn)品部件定制而成,并可用不同版本的部件實(shí)現(xiàn)應(yīng)用的擴(kuò)展和更新。利用模塊化方法,將復(fù)雜的難以維護(hù)的系統(tǒng)分解為互相獨(dú)立、協(xié)同工作的部件,并努力使這些部件可反復(fù)重用。突破時(shí)間、空間及不同硬件設(shè)備的限制,利用客戶(hù)和軟件之間統(tǒng)一的接口實(shí)現(xiàn)跨平臺(tái)的互操作。構(gòu)件技術(shù)為滿(mǎn)足上述要求,構(gòu)件技術(shù)應(yīng)運(yùn)而生構(gòu)件技術(shù)被認(rèn)為是未來(lái)幾年軟件發(fā)展的基礎(chǔ)。目標(biāo)是達(dá)到需求、體系結(jié)構(gòu)、設(shè)計(jì)、實(shí)現(xiàn)的重用,并使系統(tǒng)具有更好的適應(yīng)性、伸縮性和可維護(hù)性。借鑒汽車(chē)制造業(yè)和建筑業(yè)的思想,采用流水線生產(chǎn)方式的預(yù)制件裝配方式預(yù)制件要求并不苛刻,只要能重用就可以構(gòu)件技術(shù)通過(guò)使用購(gòu)買(mǎi)或定制構(gòu)件這一新的解決方案可以有效地提高產(chǎn)品的質(zhì)量,加快產(chǎn)品開(kāi)發(fā)速度,這種開(kāi)發(fā)技術(shù)稱(chēng)為“基于構(gòu)件的開(kāi)發(fā)技術(shù)”軟件復(fù)用軟件產(chǎn)品的復(fù)用軟件過(guò)程的復(fù)用:基于構(gòu)件的復(fù)用基于構(gòu)件的復(fù)用構(gòu)件的開(kāi)發(fā)構(gòu)件的管理基于構(gòu)件組裝的系統(tǒng)開(kāi)發(fā)
構(gòu)件必須遵循某一特定的構(gòu)建模型,并且針對(duì)某一特定的構(gòu)件平臺(tái)抽象面向?qū)ο蠹夹g(shù)已達(dá)到類(lèi)級(jí)重用(代碼重用),以類(lèi)為封裝的單位。重用粒度太小,不足以解決異構(gòu)互操作和效率更高的重用。構(gòu)件更推廣了對(duì)象封裝的內(nèi)涵,對(duì)一組類(lèi)的組合進(jìn)行封裝(也可以不包括類(lèi),比如包括傳統(tǒng)的過(guò)程),并代表完成一個(gè)或多個(gè)功能的特定服務(wù),也為用戶(hù)提供了多個(gè)接口。在不同層次上,構(gòu)件均可以將底層的多個(gè)邏輯組合成高層次上的粒度更大的新構(gòu)件,甚至直接封裝到一個(gè)系統(tǒng),使模塊的重用從代碼級(jí)、對(duì)象級(jí)、架構(gòu)級(jí)到系統(tǒng)級(jí)都可能實(shí)現(xiàn)。構(gòu)件的屬性是可獨(dú)立配置的單元構(gòu)件必須具有原子性,本身不可拆分;必須與其所部屬的環(huán)境以及其他構(gòu)件很好地分離必須很好地封裝自己的構(gòu)成部件可以作為第三方的組裝單元被復(fù)合使用不但具備良好的內(nèi)聚性,還必須具有清晰的規(guī)格說(shuō)明來(lái)描述其依賴(lài)條件和所提供的服務(wù)。這樣,第三方廠商能夠?qū)⒁粋€(gè)構(gòu)件與其他構(gòu)件組裝在一起。即構(gòu)件只通過(guò)定義良好的接口與外部環(huán)境交互。沒(méi)有外部可見(jiàn)的狀態(tài)不應(yīng)當(dāng)與自身備份有所區(qū)別,在任何環(huán)境中,最多僅有特定構(gòu)件的一個(gè)備份構(gòu)件技術(shù)分布式構(gòu)件技術(shù)CORBA規(guī)范Sun的Java平臺(tái)Microsoft的.NET平臺(tái)分布式構(gòu)件體系結(jié)構(gòu)J2EE.NET提供事物完整性、消息傳遞、目錄服務(wù)、安全、異常處理、遠(yuǎn)程訪問(wèn)等?;贑ORBA的分布式構(gòu)件技術(shù)OMG(對(duì)象管理學(xué)會(huì))是一個(gè)由業(yè)界760多個(gè)公司組成的工業(yè)協(xié)會(huì),目的是為了共同制定一個(gè)大家都遵循的分布式對(duì)象計(jì)算標(biāo)準(zhǔn),將對(duì)象和分布式系統(tǒng)技術(shù)集成為一個(gè)可相互操作的統(tǒng)一結(jié)構(gòu),既支持現(xiàn)有的平臺(tái)也將支持未來(lái)的平臺(tái)集成。OMA(對(duì)象管理體系),基礎(chǔ)是ORB(對(duì)象請(qǐng)求中介)標(biāo)準(zhǔn),不僅提供了CORBA基礎(chǔ)架構(gòu)說(shuō)明,還提供了一系列服務(wù),如安全、交易和消息傳遞等。針對(duì)ORB,OMG制定了CORBA規(guī)范。OMA對(duì)象管理體系結(jié)構(gòu)對(duì)象請(qǐng)求代理(ObjectRequestBroker)CORBA服務(wù)(CORBAService)應(yīng)用對(duì)象(ApplicationObject)水平CORBA設(shè)備(HorizontalCORBAFacility)垂直CORBA設(shè)備(VerticalCORBAFacility)CORBA服務(wù)提供適用于實(shí)現(xiàn)對(duì)象的一些基本功能,如對(duì)象的命名服務(wù)、對(duì)象交易服務(wù)(對(duì)象并行、對(duì)象存儲(chǔ)、對(duì)象產(chǎn)生和消亡、事件消息響應(yīng)以及事務(wù)交易的一致性保證)和持久狀態(tài)服務(wù)(PersistentStateService,PPS)等。是發(fā)布對(duì)象系統(tǒng)必不可少的公共服務(wù),是底層支持的必需服務(wù)。CORBA設(shè)備水平CORBA設(shè)備:在各種工業(yè)部門(mén)中針對(duì)所有類(lèi)型CORBA應(yīng)用的元素包括用戶(hù)接口和系統(tǒng)管理設(shè)備針對(duì)大多數(shù)類(lèi)型的應(yīng)用,不考慮設(shè)備被使用的領(lǐng)域垂直CORBA設(shè)備:只在特殊垂直市場(chǎng)和工業(yè)中針對(duì)某些應(yīng)用的功能,也稱(chēng)領(lǐng)域CORBA設(shè)備包括某些特殊領(lǐng)域的應(yīng)用,比如在會(huì)計(jì)業(yè)中的總賬和分期償付,制造業(yè)的自動(dòng)化店層控制設(shè)備。應(yīng)用對(duì)象位于OMA層次結(jié)構(gòu)的最頂層,可以是分布系統(tǒng)中的任何成分,如程序、進(jìn)程、類(lèi)實(shí)例。通常會(huì)根據(jù)獨(dú)立的應(yīng)用被定制,并不需要標(biāo)準(zhǔn)化,所以這一類(lèi)的對(duì)象并不受OMG標(biāo)準(zhǔn)的影響。必須符合OMA的標(biāo)準(zhǔn)接口。OMA中的對(duì)象作為服務(wù)者被動(dòng)態(tài)地引用,并且以唯一的標(biāo)識(shí)提供服務(wù)。對(duì)象間的交互通過(guò)ORB實(shí)現(xiàn)對(duì)象請(qǐng)求代理是OMA的核心部分當(dāng)應(yīng)用對(duì)象在分布對(duì)象系統(tǒng)中請(qǐng)求服務(wù)時(shí),就是以系統(tǒng)客戶(hù)的身份,通過(guò)ORB與系統(tǒng)中其他對(duì)象完成交互OMG進(jìn)一步給出了OMA對(duì)象管理體系結(jié)構(gòu)的ORB開(kāi)放標(biāo)準(zhǔn)CORBA體系結(jié)構(gòu)CORBA規(guī)范包括ORB、接口定義語(yǔ)言(IDL)、存根(Stub)、框架(Skeleton)、對(duì)象適配器、動(dòng)態(tài)調(diào)用接口CORBA體系結(jié)構(gòu)接口庫(kù)InterfaceRepository實(shí)現(xiàn)庫(kù)ImplementationRepository
對(duì)象請(qǐng)求中間件核心(ORBCore)
動(dòng)態(tài)調(diào)用客戶(hù)StubORB接口對(duì)象適配器靜態(tài)服務(wù)Skeleton動(dòng)態(tài)服務(wù)Skeleton客戶(hù)程序(Client)對(duì)象實(shí)現(xiàn)(Server)ORB的任務(wù)就是把客戶(hù)發(fā)出的請(qǐng)求傳送給目標(biāo)對(duì)象,并把目標(biāo)對(duì)象的執(zhí)行結(jié)果返回給請(qǐng)求客戶(hù)。它屏蔽了了對(duì)象位置、對(duì)象實(shí)現(xiàn)、對(duì)象執(zhí)行狀態(tài)、對(duì)象通信機(jī)制和數(shù)據(jù)表示。CORBA體系結(jié)構(gòu)IDL:客戶(hù)目標(biāo)對(duì)象發(fā)送請(qǐng)求必須知道目標(biāo)對(duì)象所具備的操作。IDL提供了對(duì)象定義的手段,使得請(qǐng)求對(duì)象了解服務(wù)對(duì)象。IDL是說(shuō)明性語(yǔ)言,只對(duì)對(duì)象接口定義,不提供任何實(shí)現(xiàn)細(xì)節(jié)的描述。IDL把編譯后的代碼映射到具體的編程語(yǔ)言,并且產(chǎn)生客戶(hù)Stub和服務(wù)Skeleton。
對(duì)象請(qǐng)求代理(ObjectRequestBroker)
客戶(hù)程序(Client)對(duì)象實(shí)現(xiàn)(Objectimplementation)請(qǐng)求(Request)IDLStubIDLStubCORBA體系結(jié)構(gòu)接口庫(kù)InterfaceRepository實(shí)現(xiàn)庫(kù)ImplementationRepository
對(duì)象請(qǐng)求中間件核心(ORBCore)
動(dòng)態(tài)調(diào)用客戶(hù)StubORB接口對(duì)象適配器靜態(tài)服務(wù)Skeleton動(dòng)態(tài)服務(wù)Skeleton客戶(hù)程序(Client)對(duì)象實(shí)現(xiàn)(Server)存根(Stub)是客戶(hù)端的代碼,客戶(hù)應(yīng)用程序通過(guò)存根向服務(wù)器應(yīng)用程序發(fā)送請(qǐng)求,CORBA體系結(jié)構(gòu)接口庫(kù)InterfaceRepository實(shí)現(xiàn)庫(kù)ImplementationRepository
對(duì)象請(qǐng)求中間件核心(ORBCore)
動(dòng)態(tài)調(diào)用客戶(hù)StubORB接口對(duì)象適配器靜態(tài)服務(wù)Skeleton動(dòng)態(tài)服務(wù)Skeleton客戶(hù)程序(Client)對(duì)象實(shí)現(xiàn)(Server)框架(Skeleton)是服務(wù)器端的代碼,提供對(duì)象適配器轉(zhuǎn)發(fā)的請(qǐng)求調(diào)度到對(duì)象實(shí)現(xiàn)上的適當(dāng)操作的代碼。CORBA體系結(jié)構(gòu)接口庫(kù)InterfaceRepository實(shí)現(xiàn)庫(kù)ImplementationRepository
對(duì)象請(qǐng)求中間件核心(ORBCore)
動(dòng)態(tài)調(diào)用客戶(hù)StubORB接口對(duì)象適配器靜態(tài)服務(wù)Skeleton動(dòng)態(tài)服務(wù)Skeleton客戶(hù)程序(Client)對(duì)象實(shí)現(xiàn)(Server)對(duì)象適配器(ObjectAdapter)是ORB核心的上層機(jī)制。它負(fù)責(zé)接受服務(wù)請(qǐng)求,完成實(shí)例化服務(wù)對(duì)象,向?qū)ο髠魉驼?qǐng)求,為服務(wù)指定對(duì)象引用和提供運(yùn)行環(huán)境。CORBA體系結(jié)構(gòu)接口庫(kù)InterfaceRepository實(shí)現(xiàn)庫(kù)ImplementationRepository
對(duì)象請(qǐng)求中間件核心(ORBCore)
動(dòng)態(tài)調(diào)用客戶(hù)StubORB接口對(duì)象適配器靜態(tài)服務(wù)Skeleton動(dòng)態(tài)服務(wù)Skeleton客戶(hù)程序(Client)對(duì)象實(shí)現(xiàn)(Server)通過(guò)對(duì)象適配器,ORB服務(wù)方給客戶(hù)應(yīng)用提供了一個(gè)假象(虛擬環(huán)境),即服務(wù)對(duì)象都是活動(dòng)著的,隨時(shí)等待客戶(hù)應(yīng)用發(fā)來(lái)請(qǐng)求。ORB通過(guò)適配器將目的對(duì)象分成組,每組通過(guò)特定的對(duì)象適配器來(lái)滿(mǎn)足特定的需求?;贘ava的分布式構(gòu)件技術(shù)1996年1月,Sun公司正式發(fā)布了Java1.01998年夏末又推出了Java2.01999年Sun公司推出三個(gè)版本的Java2平臺(tái):J2ME:是Java2PlatformMicroEdition的縮寫(xiě),即Java2平臺(tái)微型版,適用于開(kāi)發(fā)小型設(shè)備和智能卡上的應(yīng)用系統(tǒng),如手機(jī)和掌上電腦的操作系統(tǒng)等J2SE:是Java2PlatformStandardEdition的縮寫(xiě),即Java2平臺(tái)標(biāo)準(zhǔn)版,適用于創(chuàng)建普通臺(tái)式電腦上的應(yīng)用系統(tǒng),如PC機(jī)、小型工作站的應(yīng)用軟件等J2EE:是Java2PlatformEnterpriseEdition的縮寫(xiě),即Java2平臺(tái)企業(yè)版,適用于創(chuàng)建服務(wù)器端的大型應(yīng)用軟件和服務(wù)系統(tǒng)。J2EE平臺(tái)使用多層分布式應(yīng)用模型,根據(jù)功能劃分成各個(gè)構(gòu)件,這些構(gòu)件根據(jù)其在多層J2EE環(huán)境中所處的層被安裝在不同的機(jī)器上。下圖是三個(gè)J2EE應(yīng)用。J2EE應(yīng)用1J2EE應(yīng)用2J2EE應(yīng)用3客戶(hù)端應(yīng)用程序動(dòng)態(tài)HTML頁(yè)面動(dòng)態(tài)HTML頁(yè)面客戶(hù)層Web層業(yè)務(wù)層EIS層客戶(hù)端機(jī)器J2EE服務(wù)器機(jī)器數(shù)據(jù)庫(kù)服務(wù)器機(jī)器JSP頁(yè)面JSP頁(yè)面EJBEJB數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)J2EE平臺(tái)最基本的Java構(gòu)件是在J2ME中的JavaBean,它是按照特定格式編寫(xiě)的Java類(lèi)JavaBean包括實(shí)例變量(InstanceVariable)和get()、set()方法來(lái)訪問(wèn)實(shí)例變量的數(shù)據(jù)。這種格式大大簡(jiǎn)化了程序設(shè)計(jì)。J2EE的構(gòu)件在JavaBeans基礎(chǔ)上進(jìn)行了拓展。J2EE構(gòu)件客戶(hù)端構(gòu)件:Java應(yīng)用程序和AppletWeb構(gòu)件:JavaServerPages(JSP)和JavaServlet業(yè)務(wù)邏輯構(gòu)件:EnterpriseJavaBeans(EJB)這些構(gòu)件在開(kāi)發(fā)完成后,部署到相應(yīng)的容器中。客戶(hù)端構(gòu)件Java應(yīng)用程序是運(yùn)行在應(yīng)用客戶(hù)容器內(nèi)部的單個(gè)程序,應(yīng)用客戶(hù)容器提供了支持消息、遠(yuǎn)程調(diào)用、數(shù)據(jù)庫(kù)連接和查詢(xún)服務(wù)的API,容器所需的API主要有:J2SE、JME、JNDI、RMI-IIOP和JDBC,這些容器由應(yīng)用服務(wù)器供貨商提供。Applet運(yùn)行在Applet容器中,這種容器是支持Java技術(shù)的基本瀏覽器。作為一個(gè)Java構(gòu)件模型,目標(biāo)是創(chuàng)建可下載的輕量級(jí)構(gòu)件,來(lái)豐富客戶(hù)端網(wǎng)頁(yè)的視覺(jué)效果。Applet需要J2SEAPI的支持。Web構(gòu)件JSP和Servlet是運(yùn)行在Web容器中基于Web的構(gòu)件。Web容器由Web服務(wù)器所支持。是JSP和Servlet在運(yùn)行時(shí)的執(zhí)行環(huán)境,容器所需的API主要有:J2SE、JMS、JNDI、JTA、JavaMail、JAF、RMI-IIOP和JDBC。JSP和Servlet提供了動(dòng)態(tài)內(nèi)容顯示、處理以及與顯示相關(guān)的格式的機(jī)制。JSP技術(shù)為Web客戶(hù)端產(chǎn)生動(dòng)態(tài)內(nèi)容提供了一種可擴(kuò)展的方式。目的在于生成能夠處理動(dòng)態(tài)內(nèi)容的Web頁(yè)面,這些頁(yè)面處理的數(shù)據(jù)會(huì)發(fā)生變化,因此業(yè)務(wù)處理邏輯也會(huì)相應(yīng)發(fā)生變化。一個(gè)JSP頁(yè)面是一個(gè)基于文本的文檔,它的寫(xiě)法很像網(wǎng)頁(yè),用來(lái)描述怎樣處理Request和產(chǎn)生Response.通常由JSP標(biāo)記、HTML標(biāo)記和嵌入其中的Java代碼組成。服務(wù)器在頁(yè)面被客戶(hù)端請(qǐng)求后對(duì)這些Java代碼進(jìn)行處理,然后生成HTML頁(yè)面返回給客戶(hù)端瀏覽器。JSP技術(shù)隨著JSP技術(shù)的發(fā)展,JSP頁(yè)面中嵌入的Java代碼已經(jīng)越來(lái)越少了,取代這些代碼的是一些用戶(hù)自定義的標(biāo)記和JSP的標(biāo)準(zhǔn)標(biāo)記(JSTL,JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù))。擴(kuò)展標(biāo)記的使用令JSP頁(yè)面變得越來(lái)越清晰,結(jié)構(gòu)越來(lái)越完整。Servlet是運(yùn)行在服務(wù)器上的小程序,可被看作是服務(wù)器端的Applet,實(shí)際上一個(gè)Servlet就是擴(kuò)展Web服務(wù)器功能的一個(gè)Java類(lèi)。是作為CGI(CommonGatewayInterface,通用網(wǎng)關(guān)接口)的替代物發(fā)展起來(lái)的,具有可移植性、靈活性以及易編寫(xiě)等優(yōu)點(diǎn)。接受客戶(hù)端發(fā)來(lái)的請(qǐng)求并對(duì)它們進(jìn)行處理,然后生成響應(yīng),并將它們發(fā)送給客戶(hù)端。Servlet技術(shù)是JSP的基礎(chǔ),JSP頁(yè)面在運(yùn)行前都必須轉(zhuǎn)化及編譯成Servlet形式。是Web構(gòu)件,所以必須要運(yùn)行在Web服務(wù)器上。業(yè)務(wù)邏輯構(gòu)件EJB構(gòu)件是J2EE的核心,是實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用中業(yè)務(wù)邏輯的Java構(gòu)件。EJB構(gòu)件駐留在EJB容器中。EJB容器為EJB構(gòu)件提供了一組標(biāo)準(zhǔn)的系統(tǒng)服務(wù),其中包括事務(wù)管理、持久性、安全性和并發(fā)控制等。通過(guò)EJB容器以及使用XML對(duì)構(gòu)件的部署進(jìn)行說(shuō)明,構(gòu)件開(kāi)發(fā)者便可以從實(shí)現(xiàn)上述系統(tǒng)服務(wù)中解脫出來(lái)。EJB容器降低了EJB構(gòu)件開(kāi)發(fā)的復(fù)雜程度,提高了構(gòu)件開(kāi)發(fā)的效率,保證了構(gòu)件的可移植性。EJB規(guī)范定義了EJB構(gòu)件與EJB容器之間的交互機(jī)制。業(yè)務(wù)邏輯構(gòu)件EJB是運(yùn)行在獨(dú)立服務(wù)器上的構(gòu)件,客戶(hù)端通過(guò)網(wǎng)絡(luò)對(duì)EJB對(duì)象進(jìn)行調(diào)用。通過(guò)RMI技術(shù),J2EE將EJB構(gòu)件創(chuàng)建為遠(yuǎn)程對(duì)象,客戶(hù)端通過(guò)網(wǎng)絡(luò)調(diào)用EJB對(duì)象??蛻?hù)端進(jìn)行調(diào)用時(shí),不是采用RMI注冊(cè)表提供的命名服務(wù)進(jìn)行查找,而是使用JNDI技術(shù)查找EJB對(duì)象。JNDI屏蔽掉了RMI命名服務(wù)的實(shí)現(xiàn)細(xì)節(jié),使客戶(hù)端程序更具通用性。EJB構(gòu)件實(shí)體Bean(EntityBean)提供了對(duì)持久數(shù)據(jù)(如數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù))進(jìn)行操作的接口對(duì)應(yīng)持久數(shù)據(jù)的對(duì)象視圖通過(guò)與某個(gè)持久數(shù)據(jù)相關(guān)聯(lián)的實(shí)體bean,客戶(hù)可對(duì)該數(shù)據(jù)進(jìn)行查詢(xún)、更新等操作。通過(guò)兩種機(jī)制來(lái)持久保存對(duì)象:容器管理持久性(CMP)Bean管理持久性(BMP)EJB構(gòu)件會(huì)話(huà)bean(SessionBean)是一種對(duì)連接EJB容器的客戶(hù)程序的擴(kuò)展,主要用于實(shí)現(xiàn)業(yè)務(wù)處理邏輯,以及提供對(duì)業(yè)務(wù)層訪問(wèn)的接口。分為兩種:有狀態(tài)會(huì)話(huà)bean:提供保存會(huì)話(huà)狀態(tài)信息的功能,每個(gè)會(huì)話(huà)bean實(shí)例都與一個(gè)特定的客戶(hù)相關(guān)聯(lián);無(wú)狀態(tài)會(huì)話(huà)bean:不保存客戶(hù)的會(huì)話(huà)狀態(tài)信息,每次服務(wù),同一個(gè)客戶(hù)不一定對(duì)應(yīng)同一個(gè)會(huì)話(huà)bean實(shí)例。EJB構(gòu)件消息驅(qū)動(dòng)bean(Message-drivenBean)是JMS(JavaMessageService,Java消息服務(wù))與EJB集成的結(jié)果。沒(méi)有向客戶(hù)端公開(kāi)接口,消息驅(qū)動(dòng)EJB構(gòu)件不能由客戶(hù)直接獲得其引用而進(jìn)行調(diào)用,客戶(hù)只能通過(guò)消息系統(tǒng)進(jìn)行間接的調(diào)用。為客戶(hù)和EJB構(gòu)件之間提供了一種異步的通信能力EJB構(gòu)件大多數(shù)EJB構(gòu)件(不包括消息驅(qū)動(dòng)bean)由以下遠(yuǎn)程接口、本地接口和Bean類(lèi)組成:遠(yuǎn)程接口(remoteinterface)聲明了相應(yīng)Bean類(lèi)公開(kāi)的所有業(yè)務(wù)方法必須遵循EJB規(guī)范必須由javax.ejb.EJBObject派生本地接口(homeinterface)聲明了與EJB構(gòu)件生命周期有關(guān)的方法客戶(hù)可以使用本地接口中提供的方法創(chuàng)建、查找和刪除EJB構(gòu)件方法的實(shí)現(xiàn)由EJB容器負(fù)責(zé),EJB開(kāi)發(fā)人員只需要提供方法的原型必須由javax.ejb.EJBHome派生EJB構(gòu)件大多數(shù)EJB構(gòu)件(不包括消息驅(qū)動(dòng)bean)由以下遠(yuǎn)程接口、本地接口和Bean類(lèi)組成:Bean類(lèi)實(shí)現(xiàn)EJB構(gòu)件的業(yè)務(wù)邏輯方法用戶(hù)通過(guò)遠(yuǎn)程接口調(diào)用這些方法所有Bean類(lèi)都必須實(shí)現(xiàn)的最基本的接口是javax.ejb.EnterpriseBean一般不直接實(shí)現(xiàn)javax.ejb.EnterpriseBean接口,而是實(shí)現(xiàn)相應(yīng)的Bean類(lèi)型的接口消息驅(qū)動(dòng)EJB構(gòu)件沒(méi)有本地接口和遠(yuǎn)程接口EJB構(gòu)件EJB構(gòu)件運(yùn)行在EJB容器中,EJB容器為EJB構(gòu)件提供事務(wù)管理、持久性、安全性和并發(fā)控制等系統(tǒng)服務(wù)。當(dāng)EJB構(gòu)件被裝入到容器中時(shí),需要向容器說(shuō)明EJB構(gòu)件將如何部署到容器中去,以及希望容器提供哪些服務(wù)。通過(guò)一個(gè)XML格式的部署描述文件說(shuō)明。部署描述文件EJB基本信息:指明EJB的名稱(chēng)、遠(yuǎn)程接口、本地接口及Bean類(lèi)EJB管理要求:指明EJB容器應(yīng)該如何管理BeanEJB持久性要求:指明實(shí)體Bean是由自己管理持久性,還是由容器管理持久性EJB事務(wù)處理要求:指明容器的安全策略J2EE構(gòu)件包括Java應(yīng)用程序、Applet、JSP、Servlet、EJB可以打包成模塊(module)并以JavaArchive(JAR)文件的形式發(fā)布一個(gè)模塊通常包含了相關(guān)的構(gòu)件、相關(guān)文件和用來(lái)描述怎樣部署構(gòu)件的部署描述文件(XML文件)。通過(guò)模塊可以用一些相同構(gòu)件來(lái)組裝不同的J2EE應(yīng)用,實(shí)現(xiàn)了構(gòu)件技術(shù)的目標(biāo)——重用基于.NET平臺(tái)的分布式構(gòu)件技術(shù)微軟沒(méi)有提出一整套標(biāo)準(zhǔn),逐漸引入構(gòu)件技術(shù),可獲益于以前的成功技術(shù),如VisualBasic控件、對(duì)象鏈接和嵌入(OLE)、OLE數(shù)據(jù)庫(kù)連接(ODBC)、ActiveX、微軟事務(wù)服務(wù)器技術(shù)(MTS)、ActiveServerPage(ASP)。COM(ComponentObjectModel,組建對(duì)象模型)是從Windows3.1中最初為支持復(fù)合文檔而使用OLE技術(shù)發(fā)展而來(lái)的,經(jīng)歷了OLE2/COM、ActiveX、DCOM和COM+等幾個(gè)階段。COM為代碼的重用提供了一種模塊化、面向?qū)ο蟮姆绞蕉x了定位和識(shí)別其他組件功能的標(biāo)準(zhǔn)方式,組件可用各種語(yǔ)言編寫(xiě)和使用是微軟平臺(tái)上所有構(gòu)件的基石但是。。。COM組件不容易編寫(xiě)提供的功能取決于編寫(xiě)所用的語(yǔ)言很難部署COM服務(wù)器組件的開(kāi)發(fā)人員必須確保組件的新版本與舊版本兼容,但有時(shí)新舊版本不兼容,被稱(chēng)為“DLLHell”.NET框架
NET框架和NET組件可以避開(kāi)COM設(shè)計(jì)的復(fù)雜性,使程序員更容易得到組件化的體系結(jié)構(gòu)是用于構(gòu)建和運(yùn)行下一代Internet應(yīng)用程序和XMLWeb服務(wù)的平臺(tái)提供了一個(gè)高效并標(biāo)準(zhǔn)的環(huán)境,用于將現(xiàn)有資源與下一代應(yīng)用程序和服務(wù)進(jìn)行集成,以便靈活地解決企業(yè)級(jí)應(yīng)用程序部署和操作的難題。.NET框架的體系結(jié)構(gòu)
通用語(yǔ)言運(yùn)行時(shí)(CommonLanguageRuntime)類(lèi)庫(kù)(ClassLibrary)數(shù)據(jù)和XML(ADO.NET)Web服務(wù)用戶(hù)界面ASP.NETVBC++C#Perl…VisualStudio.NET.NET框架
主要包括公共語(yǔ)言運(yùn)行時(shí)(CLR)和.NET基類(lèi)庫(kù)(FCL)在開(kāi)發(fā)技術(shù)方面,提供了全新的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)ADO.NET、Web應(yīng)用開(kāi)發(fā)技術(shù)ASP.NET和Windows編程技術(shù)WindowsForms在開(kāi)發(fā)語(yǔ)言方面,提供了對(duì)VB、C++、C#等多種語(yǔ)言的支持VisualStudio.NET為.NET框架集成了大多數(shù)工具公共語(yǔ)言運(yùn)行時(shí)位于操作系統(tǒng)之上,.NET框架的最低一層,是框架的基礎(chǔ)為宿主托管應(yīng)用程序提供虛擬環(huán)境提供更多的功能和特性統(tǒng)一和簡(jiǎn)化的編程模型,使用戶(hù)不必迷惑于Win32API和COM,避免了DLL版本和更新問(wèn)題,簡(jiǎn)化了應(yīng)用程序的發(fā)布和升級(jí)多種語(yǔ)言之間的交互自動(dòng)的內(nèi)存和資源管理公共語(yǔ)言運(yùn)行時(shí)基于CLR的代碼稱(chēng)為托管代碼(ManagedCode)當(dāng)運(yùn)行托管代碼時(shí),通過(guò)針對(duì)公共語(yǔ)言運(yùn)行時(shí)的編譯器生成微軟中間語(yǔ)言(MicrosoftIntermediateLanguage,MSIL),同時(shí)生成所需的元數(shù)據(jù),在代碼運(yùn)行時(shí)再使用即時(shí)編譯器(JustinTimeCompiler)生成相應(yīng)的機(jī)器代碼來(lái)執(zhí)行大部分情況下,代碼只在第一次被調(diào)用時(shí)被即時(shí)編譯,其后便被緩存在內(nèi)存中以便下次執(zhí)行時(shí)沒(méi)有延遲。未調(diào)用的代碼決不會(huì)被即時(shí)編譯。即時(shí)編譯會(huì)影響系統(tǒng)性能,但是即時(shí)編譯器能優(yōu)化所產(chǎn)生的本機(jī)代碼,以適應(yīng)它所運(yùn)行的主機(jī)處理器,因此即時(shí)編譯器運(yùn)行效率優(yōu)于普通代碼。托管環(huán)境中運(yùn)行代碼的好處即時(shí)編譯器將通用中間語(yǔ)言指令轉(zhuǎn)換為本機(jī)代碼,扮演了代碼驗(yàn)證的角色,可以確保代碼是類(lèi)型安全的,避免了不同組件之間可能存在的類(lèi)型不匹配的問(wèn)題托管代碼占用的資源可以被回收。CLR包含一個(gè)復(fù)雜的垃圾回收器,垃圾回收器自動(dòng)跟蹤代碼創(chuàng)建的對(duì)象的應(yīng)用,當(dāng)別的進(jìn)程需要使用對(duì)象占用的內(nèi)存時(shí),它可銷(xiāo)毀這些對(duì)象。CLR負(fù)責(zé)處理對(duì)象的內(nèi)存布局、管理對(duì)象的應(yīng)用、自動(dòng)垃圾收集,從根本上解決了內(nèi)存泄露和無(wú)效內(nèi)存應(yīng)用的問(wèn)題,大大減輕了開(kāi)發(fā)人員的負(fù)擔(dān),提高程序的健壯性。.NET基類(lèi)庫(kù)
系統(tǒng)框架服務(wù)一套在標(biāo)準(zhǔn)語(yǔ)言庫(kù)中使用的基本類(lèi)庫(kù),如集合、輸入/輸出、字符串及數(shù)據(jù)類(lèi)。提供了訪問(wèn)操作系統(tǒng)和其他服務(wù)的類(lèi),如網(wǎng)絡(luò)、線程、全球化和加密的類(lèi)包括數(shù)據(jù)訪問(wèn)類(lèi)庫(kù)及開(kāi)發(fā)工具,如調(diào)試和剖析服務(wù)使用的類(lèi)ADO.NET組件為基于網(wǎng)絡(luò)的可擴(kuò)展應(yīng)用程序和服務(wù)提供了數(shù)據(jù)訪問(wèn)服務(wù).NET基類(lèi)庫(kù)
XML數(shù)據(jù)組件提供了對(duì)XML數(shù)據(jù)的操作支持支持ADO.NET數(shù)據(jù)與XML數(shù)據(jù)之間的轉(zhuǎn)換Windows表單組件提供了強(qiáng)大的Windows應(yīng)用程序模型和豐富的Windows用戶(hù)接口,包括傳統(tǒng)的ActiveX控件和WindowsXP界面,如透明的、分層的、浮動(dòng)的窗口等.NET基類(lèi)庫(kù)
ASP.NET應(yīng)用服務(wù)用于處理基于HTTP的請(qǐng)求,采用編譯方式大大提高了它的性能使用基于構(gòu)件的Microsoft.NET框架配置模板支持應(yīng)用程序的實(shí)時(shí)更新,提供高速緩存服務(wù)ASP.NETWeb表單支持傳統(tǒng)的將HTML內(nèi)容和腳本代碼混合的ASP方式提供了一種將應(yīng)用程序代碼和用戶(hù)接口內(nèi)容分離的、更加結(jié)構(gòu)化的方法(CodeBehind方法).NET基類(lèi)庫(kù)
Web服務(wù)ASP.NET應(yīng)用服務(wù)體系架構(gòu)為使用ASP.NET建立Web服務(wù)提供了一個(gè)高級(jí)的可編程的模型使用這個(gè)模型,開(kāi)發(fā)人員不需要理解HTTP、SOAP或其他網(wǎng)絡(luò)服務(wù)規(guī)范面向服務(wù)的體系結(jié)構(gòu)
過(guò)去40年里,軟件體系結(jié)構(gòu)用于處理日益增長(zhǎng)的軟件復(fù)雜性,但是復(fù)雜性仍在繼續(xù)增加,傳統(tǒng)的體系結(jié)構(gòu)好像已經(jīng)達(dá)到了它們處理此類(lèi)問(wèn)題的極限。為減少異構(gòu)性、互操作性和不斷變化的需求所帶來(lái)的問(wèn)題,需要一種新的、不受技術(shù)約束的軟件體系結(jié)構(gòu),它應(yīng)該具有松散耦合、位置透明、協(xié)議獨(dú)立的特征。面向服務(wù)的體系結(jié)構(gòu)(Service-OrientedArchitecture,SOA)可解決上述問(wèn)題SOA
繼面向?qū)ο?、基于?gòu)件的軟件架構(gòu)方法之后被提出的一種新的體系結(jié)構(gòu)來(lái)源于早期的基于構(gòu)件的分布式計(jì)算方式,用以解決復(fù)雜環(huán)境下的分布式應(yīng)用,即解決“異構(gòu)集成”和“系統(tǒng)演化”兩個(gè)問(wèn)題所有功能都定義為獨(dú)立的服務(wù),這些服務(wù)帶有定義明確的可調(diào)用接口,可以以定義好的順序調(diào)用這些服務(wù)來(lái)形成業(yè)務(wù)流程服務(wù)、對(duì)象和構(gòu)件之間的關(guān)系
服務(wù)層構(gòu)件層面向服務(wù)的設(shè)計(jì)面向構(gòu)件的設(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)類(lèi)層基于SOA的系統(tǒng)可使用構(gòu)件組裝服務(wù),也可使用面向?qū)ο蟮脑O(shè)計(jì)來(lái)構(gòu)建單個(gè)服務(wù)SOA
服務(wù)是封裝成用于業(yè)務(wù)流程的可重用構(gòu)件的應(yīng)用程序功能服務(wù)是細(xì)粒度的,也可以是粗粒度的,取決于業(yè)務(wù)流程每個(gè)服務(wù)都有良好的接口,通過(guò)該接口就可以發(fā)現(xiàn)、發(fā)布和調(diào)用服務(wù)。企業(yè)可以選擇將自己的服務(wù)向外發(fā)布到業(yè)務(wù)合作伙伴,也可以選擇在組織內(nèi)部發(fā)布服務(wù)。服務(wù)還可以由其他服務(wù)組合而成SOA中的角色
服務(wù)消費(fèi)者(ServiceConsumer):是一個(gè)應(yīng)用程序、一個(gè)軟件模塊或需要一個(gè)服務(wù)的另一個(gè)服務(wù)。它發(fā)起對(duì)注冊(cè)中心的服務(wù)的查詢(xún),通過(guò)傳輸綁定服務(wù),并且執(zhí)行服務(wù)功能。服務(wù)消費(fèi)者根據(jù)接口契約來(lái)執(zhí)行服務(wù)。服務(wù)提供者(ServiceProvider):是一個(gè)可通過(guò)網(wǎng)絡(luò)尋址的實(shí)體,它接受和執(zhí)行來(lái)自消費(fèi)者的請(qǐng)求。它將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊(cè)中心,以便服務(wù)消費(fèi)者可以發(fā)現(xiàn)和訪問(wèn)該服務(wù)。SOA中的角色
服務(wù)注冊(cè)中心(ServiceRegistry):是服務(wù)發(fā)現(xiàn)的支持者,包含一個(gè)可用服務(wù)的存儲(chǔ)庫(kù),并允許感興趣的服務(wù)消費(fèi)者查找服務(wù)提供者接口。SOA中各個(gè)角色的協(xié)作
服務(wù)注冊(cè)服務(wù)消費(fèi)者服務(wù)提供者發(fā)現(xiàn)發(fā)布綁定與調(diào)用服務(wù)描述服務(wù)服務(wù)描述SOA中的操作
發(fā)布:為了使服務(wù)可訪問(wèn),需要發(fā)布服務(wù)描述以使服務(wù)消費(fèi)者可以發(fā)現(xiàn)和調(diào)用它發(fā)現(xiàn):服務(wù)請(qǐng)求者定位服務(wù),方法是查詢(xún)服務(wù)注冊(cè)中心來(lái)找到滿(mǎn)足其標(biāo)準(zhǔn)的服務(wù)綁定和調(diào)用:在檢索完服務(wù)描述之后,服務(wù)消費(fèi)者繼續(xù)根據(jù)服務(wù)描述中的信息來(lái)調(diào)用服務(wù)SOA中的構(gòu)件
服務(wù):可以通過(guò)已發(fā)布接口使用服務(wù),并且允許服務(wù)消費(fèi)者調(diào)用服務(wù)服務(wù)描述:服務(wù)描述指定服務(wù)消費(fèi)者與服務(wù)提供者交互的方式。它指定來(lái)自服務(wù)的請(qǐng)求和響應(yīng)的格式。服務(wù)描述可以指定一組前提條件、后置條件和/或服務(wù)質(zhì)量(QoS)級(jí)別SOA的特征
動(dòng)態(tài)服務(wù)發(fā)現(xiàn)服務(wù)接口契約服務(wù)是自包含和模塊化的服務(wù)支持互操作性服務(wù)是松散耦合的服務(wù)是位置透明的服務(wù)是由組件組成的組合模塊基于Web服務(wù)的SOA實(shí)現(xiàn)Web服務(wù)建立在開(kāi)放標(biāo)準(zhǔn)和獨(dú)立于平臺(tái)的協(xié)議的基礎(chǔ)之上,是包括XML、SOAP、WSDL和UDDI在內(nèi)的技術(shù)集合。Web服務(wù)通過(guò)HTTP使用SOAP(SimpleObjectAccessProtocol
),以便在服務(wù)提供者和消費(fèi)者之間進(jìn)行通信。通過(guò)WSDL(WebServiceDefinitionLanguage)定義的接口公布服務(wù),WSDL的語(yǔ)義用XML定義。UDDI是一種語(yǔ)言無(wú)關(guān)的協(xié)議,用于和注冊(cè)中心進(jìn)行交互以及查找服務(wù)。Web服務(wù)核心技術(shù)XML:由W3C(WorldWideWebConsortium,萬(wàn)維網(wǎng)聯(lián)盟)發(fā)布的XML(eXtensibleMarkupLanguage,可擴(kuò)展標(biāo)記語(yǔ)言)是Web服務(wù)規(guī)范的基石。使用標(biāo)記來(lái)界定內(nèi)容,具有良好的擴(kuò)展性和平臺(tái)無(wú)關(guān)性,已成為業(yè)界數(shù)據(jù)交換的標(biāo)準(zhǔn)語(yǔ)言,也是W
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版?;钒徇\(yùn)裝卸安全協(xié)議書(shū)3篇
- 2025年智能倉(cāng)儲(chǔ)物流信息系統(tǒng)開(kāi)發(fā)與實(shí)施合同3篇
- 課題申報(bào)書(shū):大學(xué)生社交網(wǎng)絡(luò)使用對(duì)抑郁的作用機(jī)制及干預(yù)策略研究
- 課題申報(bào)書(shū):垂直型環(huán)境監(jiān)管對(duì)我國(guó)環(huán)境偏向型技術(shù)進(jìn)步的影響與協(xié)同保障機(jī)制研究
- 課題申報(bào)書(shū):城市群協(xié)同創(chuàng)新賦能新質(zhì)生產(chǎn)力形成的機(jī)制與路徑研究
- 2024年玻璃幕墻設(shè)計(jì)與安裝合同
- 2024年綜合醫(yī)療服務(wù)合作合同標(biāo)準(zhǔn)版版B版
- 2025年度產(chǎn)業(yè)園區(qū)廠房租賃及維護(hù)保養(yǎng)合同3篇
- 2024年研究所保安清潔綜合協(xié)議3篇
- 2024年第三方教育機(jī)構(gòu)擔(dān)保合同范本3篇
- 道教與中醫(yī)學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫(kù)2023年
- 四年級(jí)語(yǔ)文試卷選擇題100道
- 升壓站設(shè)備安裝調(diào)試工程施工質(zhì)量驗(yàn)收及評(píng)定范圍劃分表
- 工程質(zhì)量安全手冊(cè)課件
- 2023北京東城區(qū)初二上期末考數(shù)學(xué)試卷及答案
- 科幻小說(shuō)賞讀知到章節(jié)答案智慧樹(shù)2023年杭州師范大學(xué)
- 新編大學(xué)生安全教育知到章節(jié)答案智慧樹(shù)2023年山東師范大學(xué)
- 心肺復(fù)蘇實(shí)驗(yàn)指導(dǎo)書(shū)
- 2021-2022學(xué)年重慶市兩江新區(qū)部編版六年級(jí)上冊(cè)期末素質(zhì)測(cè)查語(yǔ)文試卷(原卷版)
- 英語(yǔ)四級(jí)詞匯表帶音標(biāo)(免費(fèi)下載)
- 考試標(biāo)準(zhǔn)作文紙
評(píng)論
0/150
提交評(píng)論