




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1,企業(yè)應用模型與Java EE體系結(jié)構(gòu),應用程序的開發(fā)模型 傳統(tǒng)應用程序模型 三層分布式對象架構(gòu) 企業(yè)級應用問題及解決方案 Java EE架構(gòu)及核心技術(shù),2,應用程序的開發(fā)模型,計算機應用程序的一般特點 大多數(shù)應用都由三部分組成: 用戶界面部分:表示層 應用邏輯部分:業(yè)務邏輯層 數(shù)據(jù)訪問部分:數(shù)據(jù)訪問層,3,應用程序的開發(fā)模型,應用程序開發(fā)模型的變遷過程 單層 兩層 三層 N層,4,傳統(tǒng)應用程序模型(一),數(shù)據(jù)訪問、表示和業(yè)務邏輯在一個應用中 代碼復用、代碼可維護性、代碼的修改十分困難 應用不是分布式的,不具有可伸縮性,主機系統(tǒng)或單層結(jié)構(gòu):主機/終端模式,5,傳統(tǒng)應用程序模型(二),用戶界面
2、和程序邏輯綁在一起,代碼難以重用 服務器的數(shù)據(jù)庫必須同每一個活動的客戶保持連接,消耗大量的運算資源,隨著客戶數(shù)目的增加性能不斷下降,且存在死鎖及崩潰的可能 數(shù)據(jù)模型“緊耦合”在每一客戶端,數(shù)據(jù)庫結(jié)構(gòu)改變將導致全體客戶端改變,不利于更新和維護 原始數(shù)據(jù)通過網(wǎng)絡傳遞:加重網(wǎng)絡負擔 客戶端應用程序越來越大,對使用者的要求也越來越高,客戶/服務器結(jié)構(gòu):“胖”客戶端,6,三層分布式對象架構(gòu),客戶端:業(yè)務數(shù)據(jù)模型與UI分開,更“瘦” 業(yè)務邏輯在中間層,成為“對象服務”。 中間層可以處理多客戶端,通過:連接池,多線程,對象一致性處理 編程困難,7,關(guān)于分布式計算,對象化的RPC(Remote Procedu
3、re Call) 對象之間的互操作性 信息的傳遞 在此方面的解決方案: CORBA (Common Object Request Broker Architecture) RMI (Remote Method Invocation) DCOM (Distributed Component Object Model),8,Web服務器與CGI,WWW瀏覽方式所帶來的: “Browser-based” 客戶端與“Internetworking” 計算方式向服務器端的集中轉(zhuǎn)化,9,N層計算模式的引入,從1層到N層,得到的改進: 每一層可以被單獨改變,而無需其它層的改變 降低了部署與維護的開銷 資源(
4、如連接)可以被緩沖和重復利用 提高了靈活性、可伸縮性,并使性能提高成為可能 瘦客戶端的引入使Internet接入方便,而計算被集中至服務器端 仍然存在的問題: 對企業(yè)級應用開發(fā)人員的要求太高:熟悉分布式協(xié)議,進行一致性事務處理,負載平衡,安全,10,構(gòu)件(component)與中間層開發(fā),兩個轉(zhuǎn)變: 計算模式上:網(wǎng)絡計算(Network Computing) 生產(chǎn)模式上:基于構(gòu)件的開發(fā)(Component-based Dev) 二者的結(jié)合: 服務器端中間層構(gòu)件的開發(fā),11,構(gòu)件的優(yōu)點與特點,一個軟件構(gòu)件是一個組合的單位,它包括合同化聲明的接口及明確說明的上下文相關(guān)性。一個軟件構(gòu)件可以被獨立部署
5、且服務于第三方所做的組合。 構(gòu)件的特點: 構(gòu)件是編譯碼 構(gòu)件是一個獨立部署的單位 構(gòu)件是一個由第三方進行組合的單位 構(gòu)件沒有持久的狀態(tài) 構(gòu)件的優(yōu)點: 可插入 更好的設計 更好的復用 方便的更新 實現(xiàn)與接口分離,12,企業(yè)級應用開發(fā)問題,分布式 可移植 面向Web體系 可裝配 滿足企業(yè)計算要求 一致性 事務性 安全性 好的特性 可伸縮 可擴展 易維護,13,解決方案-應用服務器,應用服務器可以為服務器端構(gòu)件提供: 一致性,事務處理與負載平衡 從而簡化了編程工作 但在J2EE之前,這些API是應用服務器相關(guān)的!,14,解決方案Java EE,Java EE提供了一套完整的解決所有這些問題的框架方案
6、: 提供了分布式、可移植構(gòu)件的框架 為構(gòu)件與應用服務器提供標準API 簡化了服務器端中間層構(gòu)件的設計,15,解決方案Java EE,Java EE對開發(fā)者和用戶來說意味著: 更短的開發(fā)時間 可重用構(gòu)件 JSP EJB 更簡化的連接 XML,JDBC,RMI-IIOP,16,Java EE技術(shù)架構(gòu),J2EE架構(gòu):,17,容器和構(gòu)件,18,Java EE核心技術(shù),J2EE核心技術(shù):13種 EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC XML、JMS,19,Java EE核心技術(shù)-EJB,EJB (Enterprise JavaBeans) : EJ
7、B不是一個具體的產(chǎn)品,而是一個Java服務器端組件開發(fā)的規(guī)范,軟件廠商根據(jù)它來實現(xiàn)EJB服務器。 使用EJB,Java程序員可以將一些定義明確的程序塊組合到一起,從而方便、快捷地建構(gòu)分布式應用程序。 使用EJB可以使整個程序分塊明確,并且EJB可以使用其它EJB或JDBC等服務,從而增強了分布式應用程序的可擴展性和性能; EJB規(guī)范在簡化分布式應用程序開發(fā)復雜性方面做了大量的工作,所以EJB程序員不必太擔心事務處理、多線程、資源管理等方面的問題,可以專注于支持應用所需的商業(yè)邏輯,而不用擔心周圍框架的實現(xiàn)問題。 EJB的使用增強了整個系統(tǒng)程序的可靠性、可管理性和可移植性。,20,EJB容器是:
8、EJB的運行環(huán)境。它提供規(guī)范中定義的接口使EJB類訪問所需的服務。容器廠商也可以在容器或服務器中提供額外服務的接口。 它的責任包括:,Java EE核心技術(shù)-EJB,21,Java EE核心技術(shù)-EJB,EJB服務器是: 管理EJB容器的高端進程或應用程序,并提供對系統(tǒng)服務的訪問。EJB服務器也可以提供廠商自己的特性,如優(yōu)化的數(shù)據(jù)庫訪問接口,對其他服務(如CORBA服務)的訪問。一個EJB服務器必須提供支持對JNDI的名字服務和TS事務服務的可訪問。,22,Java EE核心技術(shù)-EJB,EJB組件的三種類型: (1) Entity Bean(實體Bean) :實體Bean代表數(shù)據(jù)對象,通常代
9、表的是數(shù)據(jù)表記錄集的一行,一個實體EJB可以同時與多個客戶進行交互。 (2) Session Bean(會話Bean) :會話EJB向客戶提供一定的服務,如:特定的商業(yè)邏輯、數(shù)據(jù)庫查詢等; (3) Message-Driven Bean(消息驅(qū)動Bean):以上兩種Bean以同步方式為EJB客戶提供服務。消息驅(qū)動Bean采用Java消息服務JMS,客戶程序可以將消息發(fā)送給消息隊列,消息驅(qū)動Bean檢索消息隊列,執(zhí)行其內(nèi)容。,23,Java EE核心技術(shù)-EJB,實體Bean業(yè)務數(shù)據(jù)模型 對業(yè)務概念的反映,也稱為領域類(domain class) 在持久存儲中業(yè)務實體的對象視圖 提供訪問和操作數(shù)
10、據(jù)的對象封裝 支持多用戶共享的數(shù)據(jù) 可以從數(shù)據(jù)庫中存儲的屬性重新實例化 EJB 服務器崩潰后仍可重構(gòu) 與數(shù)據(jù)庫中的數(shù)據(jù)有一樣長的生命,24,Java EE核心技術(shù)-EJB,實體Bean 的持久性自管理的持久性 優(yōu)點: 開發(fā)者有完全的控制 無需復雜的提供商支持 缺點: 編碼復雜 在改變時需要重新編碼和部署 影響可移植性,25,Java EE核心技術(shù)-EJB,實體Bean 的持久性容器管理的持久性 優(yōu)點: 提供商解決,可能會有更好的緩沖和性能 在部署描述符中進行改變即可 可移植性好 缺點: 對容器提供商的工具依賴性強 可能不易反映復雜的數(shù)據(jù)關(guān)系,26,Java EE核心技術(shù)-EJB,會話bean:
11、經(jīng)常用于涉及多個實體bean的業(yè)務處理和控制邏輯。,27,Java EE核心技術(shù)-EJB,會話bean: 相對生命較短(一般與客戶同步) 在EJB服務器崩潰時被刪除 不表示數(shù)據(jù)庫中的數(shù)據(jù),但可以訪問數(shù)據(jù) 作為一個客戶的代表執(zhí)行功能 可以加入事務,28,Java EE核心技術(shù)-EJB,何時使用會話bean: 使用會話bean 對針對于某一客戶的處理或控制對象建模; 對工作流、任務和管理活動等建模(如訂房、購物車等); 協(xié)調(diào)多個實體bean,控制實體bean之間的交互; 將業(yè)務應用邏輯從客戶端轉(zhuǎn)移到服務器端。,29,Java EE核心技術(shù)-EJB,會話bean與實體bean的比較,30,Java
12、EE核心技術(shù)-EJB,兩種類型的會話bean 無狀態(tài)(Stateless)bean 表達一個無狀態(tài)的服務(如列表,mail) 不存儲用戶相關(guān)信息,進行對請求的響應 暫態(tài)的 可用來構(gòu)造響應頻繁而簡單的訪問的bean池 有狀態(tài)(Stateful)bean 維護客戶狀態(tài),31,Java EE核心技術(shù)-EJB,實現(xiàn)EJB的三個關(guān)鍵構(gòu)件 EJBHome 接口(擴展javax.ejb.EJBHome接口):使用了factory設計模式,定義了創(chuàng)建、查找EJB的方法。 EJBObject接口(擴展javax.ejb.EJBObject接口):使用了proxy設計模式,定義了在bean中實現(xiàn)的業(yè)務邏輯方法。
13、Bean實現(xiàn)類(實現(xiàn)javax.ejb.EntityBean/SessionBean):實現(xiàn)業(yè)務邏輯。,32,Java EE核心技術(shù)-EJB,EJB的實現(xiàn)舉例 / business methods public interface Account extends EJBObject /return the account information corresponding to this account. public AccountModel getDetails() throws RemoteException; / updates the contact information for
14、the specified account public void changeContactInformation(ContactInformation info) throws RemoteException; ,33,Java EE核心技術(shù)-EJB,EJB的實現(xiàn)舉例,public interface AccountHome extends javax.ejb.EJBHome public Account create(String userId, String status, ContactInformation info) throws RemoteException,Duplicat
15、eKeyException,CreateException; public Account findByPrimaryKey (String userId) throws RemoteException, FinderException; ,34,Java EE核心技術(shù)-EJB,EJB的實現(xiàn)舉例 public class AccountEJB implements EntityBean / entity state private String userId; private String status; private ContactInformation info; / resources
16、 private EntityContext context; / implement account interface business methods public void changeContactInformation(ContactInformation info) = info; public AccountModel getDetails() return(new AccountModel(userId, status, info); ,35,Java EE核心技術(shù)-EJB,EJB的實現(xiàn)舉例,/ must match signatures of creat
17、e methods in Home interface public String ejbCreate (String userId, String status, ContactInformation info) throws DuplicateKeyException,CreateException / set the instance data this.userId = userId; this.status = status; = info; AccountDAO ADAO = new AccountDAO(userId, status,info); try AD
18、AO.create(); / insert data in database return (userId); / return primary key catch (java.sql.SQLException se) throw new CreateException (SQL Exception in create: + se); ,36,Java EE核心技術(shù)-EJB,EJB的實現(xiàn)舉例,37,Java EE核心技術(shù)-CORBA,CORBA體系結(jié)構(gòu):核心ORB,38,Java EE核心技術(shù)-CORBA,CORBA技術(shù): CORBA(Common Object Request Broker
19、Architecture)是分布式對象體系結(jié)構(gòu),它獨立于平臺,也獨立于語言。 在這個體系結(jié)構(gòu)中,對象可以被本機上的客戶或遠程客戶通過方法激活來存取??蛻簦▽ο蠡驊茫o須知道被調(diào)用對象(稱為服務對象)的運行環(huán)境,也無須知道實現(xiàn)這個對象的編程語言,客戶只要知道服務對象的邏輯地址和提供的接口。 這種互操作性的關(guān)鍵是IDL(Interface Definition Language、接口定義語言),IDL說明對象接口中的方法,這些方法可以被其他對象(或應用)激活。,39,Java EE核心技術(shù)-RMI,RMI技術(shù): RMI(Remote Method Invoke)是一種被EJB使用的更底層的協(xié)議,
20、正如其名字所表示的那樣,RMI協(xié)議調(diào)用遠程對象上方法,使用序列化方式在客戶端和服務器端的對象之間傳遞數(shù)據(jù)。,40,Java EE核心技術(shù)-RMI,RMI和CORBA相比: 兩者的關(guān)鍵差別在于語言環(huán)境,Java RMI是一個分布式對象計算的純Java解決方案(如,在Java RMI中,對象的接口用Java定義,而不是用IDL); 其次,CORBA沒有定義安全服務,而Java RMI繼承了Java的安全性; 再者,CORBA有不同的實現(xiàn),不同的獨立軟件開發(fā)商的不同實現(xiàn)均有獨特性,這使得在不同平臺上的匹配比較困難,而且不是所有CORBA產(chǎn)品開發(fā)商都支持所有平臺,而幾乎所有平臺都支持Java虛擬機,因
21、此Java RMI具有更高的可移植性。如果客戶對象和服務對象都基于Java虛擬機,那么Java RMI是分布對象計算的最好選擇。 最后,IIOP已經(jīng)提供了Java RMI和CORBA的互操作能力,而且兩者的發(fā)展有互相借鑒的趨勢。,41,Java EE核心技術(shù)-JSP,JSP技術(shù): JSP是服務器端的腳本語言,是以Java和Servlet為基礎開發(fā)而成的動態(tài)網(wǎng)頁生成技術(shù),它的底層實現(xiàn)是Java Servlet。 JSP(Java Server Pages)頁面由HTML代碼和嵌入其中的Java代碼所組成??蛻舳讼蚍掌靼l(fā)出請求以后,服務器對頁面中的Java代碼進行處理,然后將生成的HTML頁面返
22、回給客戶端的瀏覽器。,42,Java EE核心技術(shù)-JSP,JSP技術(shù): 特點:面向?qū)ο?,跨平臺,和Servlet一樣穩(wěn)定,可以使用Servlet提供的API,克服了Servlet的缺點。 應用:一般和JavaBeans結(jié)合使用,從而將界面表現(xiàn)和業(yè)務邏輯分離。,43,Java EE核心技術(shù)-JSP,JSP與ASP的相似之處: 都是運行于服務器端的腳本語言,兩者都是動態(tài)網(wǎng)頁生成技術(shù)。 這兩項技術(shù)都使用HTML來決定網(wǎng)頁的版面,都是在HTML 代碼中混合某種程序代碼,由語言引擎解釋執(zhí)行程序代碼。HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。,44,JSP與ASP的不同之處:
23、 JSP是由Sun推出的一項技術(shù),是基于JavaServlet以及整個java體系的Web開發(fā)技術(shù),利用這一技術(shù)可以建立先進、安全和跨平臺的動態(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 虛擬機執(zhí)行,這種編譯操作僅在對 JSP 頁面的第一次
24、請求時發(fā)生。,Java EE核心技術(shù)-JSP,45,Java EE核心技術(shù)-Servlet,Java Servlet技術(shù): Servlets(Server Applet):是一些運行于Web服務器端的Java小程序,用來擴展Web服務器的功能。 Servlet是一種擴展Web服務器功能的技術(shù),而且由于它是用Java編寫的,所以能夠訪問整個Java API庫,包括用于訪問企業(yè)數(shù)據(jù)庫的JDBC API。 Servlets用特定的Java解決方案替代了其它的Web服務器方編程模式(如:CGI,ISAPI等),因而繼承了Java的所有特性(跨平臺、多線程、OO)。 用來編寫Servlets的Servl
25、et API對于服務器環(huán)境和協(xié)議沒有任何特殊的要求,所以Servlets具有很強的可移植性,也不像利用CGI程序等其它方式那樣具有性能局限。 Servlets也同樣使用HTTP協(xié)議與客戶端進行通訊,所以有時也稱Sevlets為“HTTP Servlets”。,46,Java EE核心技術(shù)-Servlet,Java Servlet和JSP的比較: 相似: 兩者都是基于Java的技術(shù),所以都繼承了Java的所有特性(跨平臺、多線程、OO ),都可以使用Java強大的API。 兩者工作方式相似:JSP代碼先被JSP容器轉(zhuǎn)換為Servlet代碼再編譯為類。 兩者在J2EE體系結(jié)構(gòu)中的工作層次相同,都負
26、責與客戶端的連接。 不同: 編程方式不同。Servlets是一些運行于Web服務器端的Java小程序;而JSP是腳本,編寫起來更簡單容易。 應用目的不同。Servlet主要用于從客戶端接收請求信息,而JSP主要負責將服務器端信息傳送到客戶端。 使用JSP的真正意義在于:可以將界面設計和業(yè)務邏輯設計分離。,47,Java EE核心技術(shù)-JavaBean,JavaBean技術(shù): JavaBean是基于Java的組件模型,類似Microsoft的COM組件。 JavaBean通過Java虛擬機(Java Virtual Machine)執(zhí)行,運行JavaBean最小的需求是JDK1.1或者以上的版本
27、。 在Java平臺中,通過JavaBean可以無限擴充Java程序的功能,通過JavaBean的組合可以快速的生成新的應用程序。 對于程序員來說,最好的一點就是JavaBean可以實現(xiàn)代碼的重復利用,另外對于程序的易維護性等等也有很重大的意義。 JavaBean傳統(tǒng)的應用在于可視化的領域,如AWT下的應用。自從Jsp誕生后,JavaBean更多的應用在了非可視化領域,在服務器端應用方面表現(xiàn)出來了越來越強的生命力。,48,Java EE核心技術(shù)-JDBC,JDBC技術(shù): JDBC是一組API,定義了用來訪問數(shù)據(jù)源的標準Java類庫,使用這個類庫可以以一種標準的方法、方便地訪問數(shù)據(jù)庫資源。 JDBC對數(shù)據(jù)庫的訪問具有平臺無關(guān)性。 JDBC API為訪問不同的數(shù)據(jù)庫提供了一種統(tǒng)一的途徑,象ODBC一樣,JDBC對開發(fā)者屏蔽了一些細節(jié)問題。 JDBC的目標是使應用程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 提升養(yǎng)殖效益的管理策略試題及答案
- 幼兒園教研學期工作計劃的評估機制與質(zhì)量保障
- 特許金融分析師考試如何選擇適合的教材試題及答案
- 內(nèi)部審計在財務管理中的作用計劃
- 2025年國際金融理財師考試的記憶策略分享試題及答案
- 人教部編版初中語文七年級下冊 《10.阿長與山海經(jīng)》教案
- 小語種證書考試中的綜合判斷能力提升方法與實證分析試題及答案
- 資源優(yōu)化2025年國際金融理財師考試試題及答案
- 財務模型的構(gòu)建與分析試題及答案
- 銀行從業(yè)資格考試備考試題及答案
- 教科版四年級下冊科學全冊教案
- 園林史課件-第7講-中國園林的成熟期(元明清初)和成熟后期(清中、末)-私家園林
- 商業(yè)攝影課件
- 第十套廣播體操教案
- 南京傳媒學院新聞傳播學院招聘網(wǎng)絡與新媒體教師模擬備考預測(自我提高共1000題含答案解析)檢測試卷
- GB/T 629-1997化學試劑氫氧化鈉
- 焦化廠生產(chǎn)工序及工藝流程圖
- optimact540技術(shù)參考手冊
- 第一章電力系統(tǒng)仿真軟件介紹課件
- 產(chǎn)品QC工程圖 (質(zhì)量保證工程圖)Excel表格
- 電氣平行檢驗用表
評論
0/150
提交評論