企業(yè)應(yīng)用模型與JavaEE體系結(jié)構(gòu)_第1頁
企業(yè)應(yīng)用模型與JavaEE體系結(jié)構(gòu)_第2頁
企業(yè)應(yīng)用模型與JavaEE體系結(jié)構(gòu)_第3頁
企業(yè)應(yīng)用模型與JavaEE體系結(jié)構(gòu)_第4頁
企業(yè)應(yīng)用模型與JavaEE體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

企業(yè)應(yīng)用模型與JavaEE體系結(jié)構(gòu)應(yīng)用程序的開發(fā)模型傳統(tǒng)應(yīng)用程序模型三層分布式對象架構(gòu)企業(yè)級應(yīng)用問題及解決方案JavaEE架構(gòu)及核心技術(shù)1應(yīng)用程序的開發(fā)模型計算機(jī)應(yīng)用程序的一般特點

大多數(shù)應(yīng)用都由三部分組成:用戶界面部分:表示層應(yīng)用邏輯部分:業(yè)務(wù)邏輯層數(shù)據(jù)訪問部分:數(shù)據(jù)訪問層2應(yīng)用程序的開發(fā)模型應(yīng)用程序開發(fā)模型的變遷過程

單層兩層三層N層12312312312343傳統(tǒng)應(yīng)用程序模型(一)數(shù)據(jù)訪問、表示和業(yè)務(wù)邏輯在一個應(yīng)用中代碼復(fù)用、代碼可維護(hù)性、代碼的修改十分困難應(yīng)用不是分布式的,不具有可伸縮性主機(jī)系統(tǒng)或單層結(jié)構(gòu):主機(jī)/終端模式4傳統(tǒng)應(yīng)用程序模型(二)用戶界面和程序邏輯綁在一起,代碼難以重用服務(wù)器的數(shù)據(jù)庫必須同每一個活動的客戶保持連接,消耗大量的運算資源,隨著客戶數(shù)目的增加性能不斷下降,且存在死鎖及崩潰的可能數(shù)據(jù)模型“緊耦合”在每一客戶端,數(shù)據(jù)庫結(jié)構(gòu)改變將導(dǎo)致全體客戶端改變,不利于更新和維護(hù)原始數(shù)據(jù)通過網(wǎng)絡(luò)傳遞:加重網(wǎng)絡(luò)負(fù)擔(dān)客戶端應(yīng)用程序越來越大,對使用者的要求也越來越高客戶/服務(wù)器結(jié)構(gòu):“胖”客戶端胖客戶端:表示邏輯業(yè)務(wù)邏輯業(yè)務(wù)數(shù)據(jù)模型通訊FatclientFatclient5三層分布式對象架構(gòu)客戶端:業(yè)務(wù)數(shù)據(jù)模型與UI分開,更“瘦”業(yè)務(wù)邏輯在中間層,成為“對象服務(wù)”。中間層可以處理多客戶端,通過:連接池,多線程,對象一致性處理編程困難6關(guān)于分布式計算對象化的RPC(RemoteProcedureCall)對象之間的互操作性信息的傳遞在此方面的解決方案:CORBA(CommonObjectRequestBrokerArchitecture)RMI(RemoteMethodInvocation)DCOM(DistributedComponentObjectModel)7Web服務(wù)器與CGIWWW瀏覽方式所帶來的:“Browser-based”客戶端與“Internetworking”計算方式向服務(wù)器端的集中轉(zhuǎn)化互聯(lián)網(wǎng)CGIApplication8N層計算模式的引入從1層到N層,得到的改進(jìn):每一層可以被單獨改變,而無需其它層的改變降低了部署與維護(hù)的開銷資源(如連接)可以被緩沖和重復(fù)利用提高了靈活性、可伸縮性,并使性能提高成為可能瘦客戶端的引入使Internet接入方便,而計算被集中至服務(wù)器端仍然存在的問題:對企業(yè)級應(yīng)用開發(fā)人員的要求太高:熟悉分布式協(xié)議,進(jìn)行一致性事務(wù)處理,負(fù)載平衡,安全……9構(gòu)件(component)與中間層開發(fā)兩個轉(zhuǎn)變:計算模式上:網(wǎng)絡(luò)計算(NetworkComputing)生產(chǎn)模式上:基于構(gòu)件的開發(fā)(Component-basedDev)二者的結(jié)合:服務(wù)器端中間層構(gòu)件的開發(fā)10構(gòu)件的優(yōu)點與特點一個軟件構(gòu)件是一個組合的單位,它包括合同化聲明的接口及明確說明的上下文相關(guān)性。一個軟件構(gòu)件可以被獨立部署且服務(wù)于第三方所做的組合。

構(gòu)件的特點:構(gòu)件是編譯碼構(gòu)件是一個獨立部署的單位構(gòu)件是一個由第三方進(jìn)行組合的單位構(gòu)件沒有持久的狀態(tài)構(gòu)件的優(yōu)點:可插入更好的設(shè)計更好的復(fù)用方便的更新實現(xiàn)與接口分離11企業(yè)級應(yīng)用開發(fā)問題分布式可移植面向Web體系可裝配滿足企業(yè)計算要求一致性事務(wù)性安全性好的特性可伸縮可擴(kuò)展易維護(hù)12解決方案--應(yīng)用服務(wù)器應(yīng)用服務(wù)器可以為服務(wù)器端構(gòu)件提供:一致性,事務(wù)處理與負(fù)載平衡從而簡化了編程工作但在J2EE之前,這些API是應(yīng)用服務(wù)器相關(guān)的!13解決方案—JavaEE

JavaEE提供了一套完整的解決所有這些問題的框架方案:提供了分布式、可移植構(gòu)件的框架為構(gòu)件與應(yīng)用服務(wù)器提供標(biāo)準(zhǔn)API簡化了服務(wù)器端中間層構(gòu)件的設(shè)計14解決方案—JavaEEJavaEE對開發(fā)者和用戶來說意味著:更短的開發(fā)時間可重用構(gòu)件JSPEJB更簡化的連接XML,JDBC,RMI-IIOP15JavaEE技術(shù)架構(gòu)J2EE架構(gòu):16容器和構(gòu)件17JavaEE核心技術(shù)J2EE核心技術(shù):13種

EJB、CORBA、RMI、JSP、

JavaServlet、JavaBean、JDBCXML、JMS……18JavaEE核心技術(shù)--EJBEJB(EnterpriseJavaBeans):EJB不是一個具體的產(chǎn)品,而是一個Java服務(wù)器端組件開發(fā)的規(guī)范,軟件廠商根據(jù)它來實現(xiàn)EJB服務(wù)器。使用EJB,Java程序員可以將一些定義明確的程序塊組合到一起,從而方便、快捷地建構(gòu)分布式應(yīng)用程序。使用EJB可以使整個程序分塊明確,并且EJB可以使用其它EJB或JDBC等服務(wù),從而增強(qiáng)了分布式應(yīng)用程序的可擴(kuò)展性和性能;EJB規(guī)范在簡化分布式應(yīng)用程序開發(fā)復(fù)雜性方面做了大量的工作,所以EJB程序員不必太擔(dān)心事務(wù)處理、多線程、資源管理等方面的問題,可以專注于支持應(yīng)用所需的商業(yè)邏輯,而不用擔(dān)心周圍框架的實現(xiàn)問題。EJB的使用增強(qiáng)了整個系統(tǒng)程序的可靠性、可管理性和可移植性。19EJB容器是:

EJB的運行環(huán)境。它提供規(guī)范中定義的接口使EJB類訪問所需的服務(wù)。容器廠商也可以在容器或服務(wù)器中提供額外服務(wù)的接口。它的責(zé)任包括:JavaEE核心技術(shù)--EJB20JavaEE核心技術(shù)--EJBEJB服務(wù)器是:

管理EJB容器的高端進(jìn)程或應(yīng)用程序,并提供對系統(tǒng)服務(wù)的訪問。EJB服務(wù)器也可以提供廠商自己的特性,如優(yōu)化的數(shù)據(jù)庫訪問接口,對其他服務(wù)(如CORBA服務(wù))的訪問。一個EJB服務(wù)器必須提供支持對JNDI的名字服務(wù)和TS事務(wù)服務(wù)的可訪問。21JavaEE核心技術(shù)--EJBEJB組件的三種類型:(1)EntityBean(實體Bean):實體Bean代表數(shù)據(jù)對象,通常代表的是數(shù)據(jù)表記錄集的一行,一個實體EJB可以同時與多個客戶進(jìn)行交互。(2)SessionBean(會話Bean):會話EJB向客戶提供一定的服務(wù),如:特定的商業(yè)邏輯、數(shù)據(jù)庫查詢等;(3)Message-DrivenBean(消息驅(qū)動Bean):以上兩種Bean以同步方式為EJB客戶提供服務(wù)。消息驅(qū)動Bean采用Java消息服務(wù)JMS,客戶程序可以將消息發(fā)送給消息隊列,消息驅(qū)動Bean檢索消息隊列,執(zhí)行其內(nèi)容。22JavaEE核心技術(shù)--EJB實體Bean——業(yè)務(wù)數(shù)據(jù)模型對業(yè)務(wù)概念的反映,也稱為領(lǐng)域類(domainclass)在持久存儲中業(yè)務(wù)實體的對象視圖提供訪問和操作數(shù)據(jù)的對象封裝支持多用戶共享的數(shù)據(jù)可以從數(shù)據(jù)庫中存儲的屬性重新實例化EJB服務(wù)器崩潰后仍可重構(gòu)與數(shù)據(jù)庫中的數(shù)據(jù)有一樣長的生命23JavaEE核心技術(shù)--EJB實體Bean的持久性——自管理的持久性優(yōu)點:開發(fā)者有完全的控制無需復(fù)雜的提供商支持缺點:編碼復(fù)雜在改變時需要重新編碼和部署影響可移植性24JavaEE核心技術(shù)--EJB實體Bean的持久性——容器管理的持久性優(yōu)點:提供商解決,可能會有更好的緩沖和性能在部署描述符中進(jìn)行改變即可可移植性好缺點:對容器提供商的工具依賴性強(qiáng)可能不易反映復(fù)雜的數(shù)據(jù)關(guān)系25JavaEE核心技術(shù)--EJB會話bean:經(jīng)常用于涉及多個實體bean的業(yè)務(wù)處理和控制邏輯。26JavaEE核心技術(shù)--EJB會話bean:相對生命較短(一般與客戶同步)在EJB服務(wù)器崩潰時被刪除不表示數(shù)據(jù)庫中的數(shù)據(jù),但可以訪問數(shù)據(jù)作為一個客戶的代表執(zhí)行功能可以加入事務(wù)27JavaEE核心技術(shù)--EJB何時使用會話bean:使用會話bean對針對于某一客戶的處理或控制對象建模;對工作流、任務(wù)和管理活動等建模(如訂房、購物車等);協(xié)調(diào)多個實體bean,控制實體bean之間的交互;將業(yè)務(wù)應(yīng)用邏輯從客戶端轉(zhuǎn)移到服務(wù)器端。28JavaEE核心技術(shù)--EJB會話bean與實體bean的比較29JavaEE核心技術(shù)--EJB兩種類型的會話bean無狀態(tài)(Stateless)bean表達(dá)一個無狀態(tài)的服務(wù)(如列表,mail)不存儲用戶相關(guān)信息,進(jìn)行對請求的響應(yīng)暫態(tài)的可用來構(gòu)造響應(yīng)頻繁而簡單的訪問的bean池有狀態(tài)(Stateful)bean維護(hù)客戶狀態(tài)30JavaEE核心技術(shù)--EJB實現(xiàn)EJB的三個關(guān)鍵構(gòu)件EJBHome

接口(擴(kuò)展javax.ejb.EJBHome接口):使用了factory設(shè)計模式,定義了創(chuàng)建、查找EJB的方法。EJBObject接口(擴(kuò)展javax.ejb.EJBObject接口):使用了proxy設(shè)計模式,定義了在bean中實現(xiàn)的業(yè)務(wù)邏輯方法。Bean實現(xiàn)類(實現(xiàn)javax.ejb.EntityBean/SessionBean):實現(xiàn)業(yè)務(wù)邏輯。31JavaEE核心技術(shù)--EJBEJB的實現(xiàn)舉例//businessmethodspublicinterface

AccountextendsEJBObject

{//returntheaccountinformationcorrespondingtothisaccount.publicAccountModel

getDetails()throwsRemoteException;//updatesthecontactinformationforthespecifiedaccountpublicvoid

changeContactInformation(ContactInformationinfo)throwsRemoteException;}32JavaEE核心技術(shù)--EJBEJB的實現(xiàn)舉例publicinterface

AccountHome

extends

javax.ejb.EJBHome

{

publicAccount

create(String

userId,

Stringstatus,ContactInformationinfo)

throwsRemoteException,DuplicateKeyException,CreateException;

publicAccount

findByPrimaryKey

(StringuserId)

throwsRemoteException,FinderException;}33JavaEE核心技術(shù)--EJBEJB的實現(xiàn)舉例publicclass

AccountEJB

implements

EntityBean

{//entitystateprivateString

userId;privateString

status;privateContactInformation

info;//resourcesprivateEntityContextcontext;//implementaccountinterfacebusinessmethodspublicvoid

changeContactInformation(ContactInformation

info){=info;}publicAccountModel

getDetails(){return(new

AccountModel(userId,status,info));}34JavaEE核心技術(shù)--EJBEJB的實現(xiàn)舉例//mustmatchsignaturesofcreatemethodsinHomeinterfacepublicStringejbCreate(StringuserId,Stringstatus,ContactInformationinfo)

throwsDuplicateKeyException,CreateException{ //settheinstancedata

this.userId=userId;

this.status=status;

=info;

AccountDAOADAO=newAccountDAO(userId,status,info); try{

ADAO.create();

//insertdataindatabase

return(userId);

//returnprimarykey

}catch(java.sql.SQLExceptionse){ thrownewCreateException("SQLExceptionincreate:"+se); }}35JavaEE核心技術(shù)--EJBEJB的實現(xiàn)舉例36JavaEE核心技術(shù)--CORBACORBA體系結(jié)構(gòu):核心-ORB37JavaEE核心技術(shù)--CORBACORBA技術(shù):CORBA(CommonObjectRequestBrokerArchitecture)是分布式對象體系結(jié)構(gòu),它獨立于平臺,也獨立于語言。在這個體系結(jié)構(gòu)中,對象可以被本機(jī)上的客戶或遠(yuǎn)程客戶通過方法激活來存取。客戶(對象或應(yīng)用)無須知道被調(diào)用對象(稱為服務(wù)對象)的運行環(huán)境,也無須知道實現(xiàn)這個對象的編程語言,客戶只要知道服務(wù)對象的邏輯地址和提供的接口。這種互操作性的關(guān)鍵是IDL(InterfaceDefinitionLanguage、接口定義語言),IDL說明對象接口中的方法,這些方法可以被其他對象(或應(yīng)用)激活。38JavaEE核心技術(shù)--RMIRMI技術(shù):RMI(RemoteMethodInvoke)是一種被EJB使用的更底層的協(xié)議,正如其名字所表示的那樣,RMI協(xié)議調(diào)用遠(yuǎn)程對象上方法,使用序列化方式在客戶端和服務(wù)器端的對象之間傳遞數(shù)據(jù)。39JavaEE核心技術(shù)--RMIRMI和CORBA相比:兩者的關(guān)鍵差別在于語言環(huán)境,JavaRMI是一個分布式對象計算的純Java解決方案(如,在JavaRMI中,對象的接口用Java定義,而不是用IDL);其次,CORBA沒有定義安全服務(wù),而JavaRMI繼承了Java的安全性;再者,CORBA有不同的實現(xiàn),不同的獨立軟件開發(fā)商的不同實現(xiàn)均有獨特性,這使得在不同平臺上的匹配比較困難,而且不是所有CORBA產(chǎn)品開發(fā)商都支持所有平臺,而幾乎所有平臺都支持Java虛擬機(jī),因此JavaRMI具有更高的可移植性。如果客戶對象和服務(wù)對象都基于Java虛擬機(jī),那么JavaRMI是分布對象計算的最好選擇。最后,IIOP已經(jīng)提供了JavaRMI和CORBA的互操作能力,而且兩者的發(fā)展有互相借鑒的趨勢。40JavaEE核心技術(shù)--JSPJSP技術(shù):JSP是服務(wù)器端的腳本語言,是以Java和Servlet為基礎(chǔ)開發(fā)而成的動態(tài)網(wǎng)頁生成技術(shù),它的底層實現(xiàn)是JavaServlet。JSP(JavaServerPages)頁面由HTML代碼和嵌入其中的Java代碼所組成??蛻舳讼蚍?wù)器發(fā)出請求以后,服務(wù)器對頁面中的Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。41JavaEE核心技術(shù)--JSPJSP技術(shù):特點:面向?qū)ο螅缙脚_,和Servlet一樣穩(wěn)定,可以使用Servlet提供的API,克服了Servlet的缺點。應(yīng)用:一般和JavaBeans結(jié)合使用,從而將界面表現(xiàn)和業(yè)務(wù)邏輯分離。42JavaEE核心技術(shù)--JSPJSP與ASP的相似之處:都是運行于服務(wù)器端的腳本語言,兩者都是動態(tài)網(wǎng)頁生成技術(shù)。這兩項技術(shù)都使用HTML來決定網(wǎng)頁的版面,都是在HTML代碼中混合某種程序代碼,由語言引擎解釋執(zhí)行程序代碼。HTML代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。43JSP與ASP的不同之處:JSP是由Sun推出的一項技術(shù),是基于JavaServlet以及整個java體系的Web開發(fā)技術(shù),利用這一技術(shù)可以建立先進(jìn)、安全和跨平臺的動態(tài)網(wǎng)站。ASP是MS公司推出的技術(shù),只能在MS的平臺上運行,無法實現(xiàn)跨平臺,也無安全性保障。ASP下的編程語言是VBScript之類的腳本語言,而JSP使用的是Java。ASP與JSP還有一個更為本質(zhì)的區(qū)別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執(zhí)行;在JSP下,代碼被編譯成Servlet

并由Java虛擬機(jī)執(zhí)行,這種編譯操作僅在對JSP頁面的第一次請求時發(fā)生。JavaEE核心技術(shù)--JSP44JavaEE核心技術(shù)--ServletJavaServlet技術(shù):Servlets(=Server+Applet):是一些運行于Web服務(wù)器端的Java小程序,用來擴(kuò)展Web服務(wù)器的功能。Servlet是一種擴(kuò)展Web服務(wù)器功能的技術(shù),而且由于它是用Java編寫的,所以能夠訪問整個JavaAPI庫,包括用于訪問企業(yè)數(shù)據(jù)庫的JDBCAPI。Servlets用特定的Java解決方案替代了其它的Web服務(wù)器方編程模式(如:CGI,ISAPI等),因而繼承了Java的所有特性(跨平臺、多線程、OO)。用來編寫Servlets的ServletAPI對于服務(wù)器環(huán)境和協(xié)議沒有任何特殊的要求,所以Servlets具有很強(qiáng)的可移植性,也不像利用CGI程序等其它方式那樣具有性能局限。Servlets也同樣使用HTTP協(xié)議與客戶端進(jìn)行通訊,所以有時也稱Sevlets為“HTTPServlets”。45JavaEE核心技術(shù)--ServletJavaServlet和JSP的比較:相似:兩者都是基于Java的技術(shù),所以都繼承了Java的所有特性(跨平臺、多線程、OO),都可以使用Java強(qiáng)大的API。兩者工作方式相似:JSP代碼先被JSP容器轉(zhuǎn)換為Servlet代碼再編譯為類。兩者在J2EE體系結(jié)構(gòu)中的工作層次相同,都負(fù)責(zé)與客戶端的連接。不同:編程方式不同。Servlets是一些運行于Web服務(wù)器端的Java小程序;而JSP是腳本,編寫起來更簡單容易。應(yīng)用目的不同。Servlet主要用于從客戶端接收請求信息,而JSP主要負(fù)責(zé)將服務(wù)器端信息傳送到客戶端。使用JSP的真正意義在于:可以將界面設(shè)計和業(yè)務(wù)邏輯設(shè)計分離。46JavaEE核心技術(shù)--JavaBeanJavaBean技術(shù):JavaBean是基于Java的組件模型,類似Microsoft的COM組件。JavaBean通過Java虛擬機(jī)(JavaVirtualMachine)執(zhí)行,運行JavaBean最小的需求是JDK1.1或者以上的版本。在Java平臺中,通過JavaBean可以無限擴(kuò)充Java程序的功能,通過JavaBean的組合可以快速的生成新的應(yīng)用程序。對于程序員來說,最好的一點就是JavaBean可以實現(xiàn)代碼的重復(fù)利用,另外對于程序的易維護(hù)性等等也有很重大的意義。JavaBean傳統(tǒng)的應(yīng)用在于可視化的領(lǐng)域,如AWT下的應(yīng)用。自從Jsp誕生后,JavaBean更多的應(yīng)用在了非可視化領(lǐng)域,在服務(wù)器端應(yīng)用方面表現(xiàn)出來了越來越強(qiáng)的生命力。47JavaEE核心技術(shù)--JDBCJDBC技術(shù):JDBC是一組API,定義了用來訪問數(shù)據(jù)源的標(biāo)準(zhǔn)Java類庫,使用這個類庫可以以一種標(biāo)準(zhǔn)的方法、方便地訪問數(shù)據(jù)庫資源。JDBC對數(shù)據(jù)庫的訪問具有平臺無關(guān)性。

JDBCAPI為訪問不同的數(shù)據(jù)庫提供了一種統(tǒng)一的途徑,象ODBC一樣,JDBC對開發(fā)者屏蔽了一些細(xì)節(jié)問題。JDBC的目標(biāo)是使應(yīng)用程序開發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動程序的數(shù)據(jù)庫系統(tǒng),這樣就使得程序員無需對特定的

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論