成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

從懵逼到再入門——JavaEE完整體系架構(gòu)

ZweiZhao / 548人閱讀

摘要:軟件開發(fā)體系架構(gòu)兩層架構(gòu)傳統(tǒng)的客戶服務(wù)器系統(tǒng)僅只簡(jiǎn)單地基于兩層體系來構(gòu)建,即客戶端前臺(tái)和企業(yè)信息系統(tǒng)后臺(tái),沒有任何中間件,業(yè)務(wù)邏輯層與表示層或數(shù)據(jù)層混在一起。

理想的建筑師應(yīng)該既是文學(xué)家又是數(shù)字家,他還應(yīng)通曉歷史,熱衷于哲學(xué)研究,精通音樂,懂得醫(yī)藥知識(shí),具有法學(xué)造詣,深諳天文學(xué)及天文計(jì)算。
——Vitruvius(古羅馬建筑師) 約公元前25年

軟件架構(gòu)同樣需要方方面面的知識(shí)和積累。本文是我自己學(xué)習(xí)JavaEE的體系架構(gòu)的時(shí)候,根據(jù)各種資料學(xué)習(xí)涂涂畫畫整理所得,有不對(duì)之處求輕噴,也請(qǐng)指出便于改正。

JavaEE是一套使用Java進(jìn)行企業(yè)級(jí)Web應(yīng)用開發(fā)的大家一致遵循的工業(yè)標(biāo)準(zhǔn)。
JavaEE平臺(tái)提供了一個(gè)基于組件的方法來加快設(shè)計(jì)、開發(fā)、裝配及部署企業(yè)應(yīng)用程序。
相較于Microsoft的.NET,Sun公司的Java*E和一系列標(biāo)準(zhǔn)、技術(shù)及協(xié)議更接近或更滿足互聯(lián)網(wǎng)在智能化Web服務(wù)方面對(duì)開放性、分布性和平臺(tái)無關(guān)性的要求。

JavaEE的13種核心技術(shù)規(guī)范: 1、JDBC(Java Database)數(shù)據(jù)庫(kù)連接

JDBC是一組用于執(zhí)行SQL的Java API ,為訪問不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的途徑,幾乎所有的關(guān)系型數(shù)據(jù)庫(kù)廠商(DBMS)都提供了JDBC的服務(wù)或驅(qū)動(dòng)。JDBC對(duì)數(shù)據(jù)庫(kù)的訪問也具有平臺(tái)無關(guān)性。

2、JNDI(Java Naming and Directory Interfaces)Java 的命名和目錄接口

JNDI是命名目錄服務(wù)的抽象接口集合,為企業(yè)級(jí)應(yīng)用提供了統(tǒng)一的標(biāo)準(zhǔn)化連接,使Java能夠無縫地獲取任何可目錄化的企業(yè)信息。在JavaEE體系中,JNDI用來定位各種對(duì)象,包括EJB、數(shù)據(jù)庫(kù)驅(qū)動(dòng)、JDBC數(shù)據(jù)源及消息連接等。由于JNDI是獨(dú)立于目錄協(xié)議的,因此還可以用JNDI訪問各種特定的目錄服務(wù),如LDAP(輕量目錄訪問協(xié)議)、NDS(服務(wù)器目錄訪問服務(wù))。

3、EJB(Enterprise JavaBean)

EJB組件:JavaBean是在編程環(huán)境(IDE)中能夠被可視化處理的可重用組件,是實(shí)現(xiàn)分布式業(yè)務(wù)邏輯的 Java 組件。我們?cè)陂_發(fā)的時(shí)候可以利用這些組件,像搭積木一樣建立面向?qū)ο蟮姆植际綉?yīng)用。
EJB容器:是EJB組件的運(yùn)行環(huán)境,為部署EJB組件提供服務(wù),包括事務(wù)、安全、遠(yuǎn)程客戶端的網(wǎng)絡(luò)發(fā)布、資源管理等。
EJB服務(wù)器:管理EJB容器的高端進(jìn)程或應(yīng)用程序,并提供對(duì)系統(tǒng)服務(wù)的訪問。
調(diào)用EJB組件的應(yīng)該稱為EJB客戶端,客戶端可以運(yùn)行在Web容器中。

4、RMI(Remote Method Invoke)遠(yuǎn)程方法調(diào)用

RMI協(xié)議能夠讓在某個(gè)Java虛擬機(jī)上的對(duì)象,像調(diào)用本地對(duì)象一樣調(diào)用另一個(gè)Java虛擬機(jī)中的對(duì)象上的方法。它使用了序列化方式在客戶端和服務(wù)器端傳送數(shù)據(jù)。RMI是一種被EJB使用的更底層的協(xié)議。(stub/skeleton層提供了客戶程序和服務(wù)程序彼此交互的接口)

5、Java IDL(Interface Description Language)/CORBA(Common Object Broker Architecture)Java 接口定義語(yǔ)言/公用對(duì)象請(qǐng)求代理程序體系結(jié)構(gòu)

IDL是用來描述軟件組件接口的一種計(jì)算機(jī)語(yǔ)言。IDL通過一種中立的方式來描述接口,使得在不同平臺(tái)上運(yùn)行的對(duì)象和用不同語(yǔ)言編寫的程序可以相互通信交流。

6、JSP(Java Server Pages)

JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端所請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。
JSP可以使用Servlet提供的API,一般和JavaBean結(jié)合使用,從而將界面表現(xiàn)和業(yè)務(wù)邏輯分離。

7、Servlet

Servlet是一種小型的Java程序,它擴(kuò)展了Web服務(wù)器的功能。作為一種服務(wù)器端的應(yīng)用,當(dāng)被請(qǐng)求時(shí)開始執(zhí)行。Servlet提供的功能大多與JSP類似,不過實(shí)現(xiàn)的方式不同。JSP通常是大多數(shù)HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成并且生成HTML。

8、XML(Extensible Markup Language)可擴(kuò)展白標(biāo)記語(yǔ)言

XML是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言。它被用來在不同的商務(wù)過程中共享數(shù)據(jù)。XML的發(fā)展和Java是相互獨(dú)立的,但是它和Java有著相同的目標(biāo),即平臺(tái)獨(dú)立性。通過Java和XML的組合,可以得到一個(gè)完美的具有平臺(tái)獨(dú)立性的解決方案。

9、JMS(Java Message Service)Java 消息服務(wù)

JMS是Java的消息服務(wù),JMS的客戶端之間可以通過JMS服務(wù)進(jìn)行異步的消息傳輸。JMS用于和面向消息的中間件相互通信的應(yīng)用程序接口(API)。它既支持點(diǎn)對(duì)點(diǎn)的域,有支持發(fā)布/訂閱(publish/subscribe)類型的域,并且提供對(duì)下列類型的支持:經(jīng)認(rèn)可的消息傳遞,事務(wù)型消息的傳遞,一致性消息和具有持久性的訂閱者支持。
JMS消息系統(tǒng)帶來的好處:1、提供消息靈活性;2、松散耦合;3、異步性。

10、JTA(Java Transaction API)Java 事務(wù) API

在JavaEE應(yīng)用中,事務(wù)是一個(gè)不可或缺的組件模型,它保證了用戶操作ACID(即原子、一致、隔離、持久)屬性。對(duì)于那些跨數(shù)據(jù)源(例如多個(gè)數(shù)據(jù)庫(kù),或者數(shù)據(jù)庫(kù)與JMS)的大型應(yīng)用,則必須使用全局事務(wù)JTA。應(yīng)用系統(tǒng)可以由JTA定義的標(biāo)準(zhǔn)API訪問各種事務(wù)監(jiān)控,JTA為JavaEE平臺(tái)提供了分布式事務(wù)服務(wù),它隔離了事務(wù)與底層的資源,實(shí)現(xiàn)了透明的事務(wù)管理方式。

11、JTS(Java Transaction Service)Java 事務(wù)服務(wù)

JTS是一個(gè)組件事務(wù)監(jiān)視器。JTS是CORBA OTS事務(wù)監(jiān)控的基本實(shí)現(xiàn)。JTS規(guī)定了事務(wù)管理器的實(shí)現(xiàn)方式。JTS事務(wù)管理器為應(yīng)用服務(wù)器、資源管理器、獨(dú)立的應(yīng)用以及通信資源管理器提供了事務(wù)服務(wù)。

12、JavaMail

JavaMail是用于存取郵件服務(wù)器的API,它提供了一套郵件服務(wù)器的抽象類。不僅支持SMTP服務(wù)器,也支持IMAP服務(wù)器和POP服務(wù)器。

13、JAF(JavaBean Activation Framework)

JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉(zhuǎn)換成Java對(duì)象,或者轉(zhuǎn)換自Java對(duì)象。大多數(shù)應(yīng)用都可以不需要直接使用JAF。

JavaEE軟件開發(fā)體系架構(gòu) 兩層架構(gòu)

傳統(tǒng)的客戶服務(wù)器系統(tǒng)僅只簡(jiǎn)單地基于兩層體系來構(gòu)建,即客戶端(前臺(tái))和企業(yè)信息系統(tǒng)(后臺(tái)),沒有任何中間件,業(yè)務(wù)邏輯層與表示層或數(shù)據(jù)層混在一起。這種兩層架構(gòu)無論從開發(fā)、部署、擴(kuò)展、維護(hù)來說,綜其只有一個(gè)特點(diǎn)——成本高。

三層架構(gòu)

三層架構(gòu)自上而下將系統(tǒng)分為表示層、邏輯層、持久層。
表示層由處理用戶交互的客戶端組件及其容器所組成;
業(yè)務(wù)邏輯層由解決業(yè)務(wù)問題的組件組成;
數(shù)據(jù)層由一個(gè)或多個(gè)數(shù)據(jù)庫(kù)組成,并可包含存儲(chǔ)過程。
這種三層架構(gòu),在處理客戶端的請(qǐng)求時(shí),使客戶端不用進(jìn)行復(fù)雜的數(shù)據(jù)庫(kù)處理;透明地為客戶端執(zhí)行許多工作,如查詢數(shù)據(jù)庫(kù)、執(zhí)行業(yè)務(wù)規(guī)則和連接現(xiàn)有的應(yīng)用程序;并且能夠幫助開發(fā)人員創(chuàng)建適用于企業(yè)的大型分布式應(yīng)用程序。

MVC

在MVC模式中,應(yīng)用程序被劃分為模型層(Model)、視圖層(View)、控制層(Controller)三部分。MVC模型就是把一個(gè)應(yīng)用程序的開發(fā)按照業(yè)務(wù)邏輯、數(shù)據(jù)、視圖進(jìn)行分離分層并組織代碼。MVC要求把應(yīng)用的模型按一定的層次規(guī)則抽取出來,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。模型層負(fù)責(zé)封裝應(yīng)用的狀態(tài),并實(shí)現(xiàn)功能,視圖層負(fù)責(zé)將內(nèi)容呈現(xiàn)給用戶,控制層負(fù)責(zé)控制視圖層發(fā)送的請(qǐng)求以及程序的流程。
Servlet+JSP+JavaBean(MVC)這種模式比較適合開發(fā)復(fù)雜的web應(yīng)用,在這種模式下,Servlet負(fù)責(zé)處理用戶請(qǐng)求,JSP負(fù)責(zé)數(shù)據(jù)顯示,JavaBean負(fù)責(zé)封裝數(shù)據(jù)。

基于JavaEE架構(gòu)模式下的MVC

在這種架構(gòu)模式下,模型層(Model)定義了數(shù)據(jù)模型和業(yè)務(wù)邏輯。為了將數(shù)據(jù)訪問與業(yè)務(wù)邏輯分離,降低代碼之間的耦合,提高業(yè)務(wù)精度,模型層又具體劃分為了DAO層和業(yè)務(wù)層,DAO即Data Access Object,其主要職能是將訪問數(shù)據(jù)庫(kù)的代碼封裝起來,讓這些代碼不會(huì)在其它層出現(xiàn)或者暴露出來給其它層;業(yè)務(wù)層是整個(gè)系統(tǒng)最核心也是最具有價(jià)值的一層,該層封裝應(yīng)用程序的業(yè)務(wù)邏輯,處理數(shù)據(jù),關(guān)注客戶需求,在業(yè)務(wù)處理過程中會(huì)訪問原始數(shù)據(jù)或產(chǎn)生新數(shù)據(jù),DAO層提供的DAO類能很好地幫助業(yè)務(wù)層完成數(shù)據(jù)處理,業(yè)務(wù)層本身側(cè)重于對(duì)客戶需求的理解和業(yè)務(wù)規(guī)則的適應(yīng),總體說來,DAO層不處理業(yè)務(wù)邏輯,只為業(yè)務(wù)層提供輔助,完成獲取原始數(shù)據(jù)或持久層數(shù)據(jù)等操作。

JSP:JSP被用來產(chǎn)生Web的動(dòng)態(tài)內(nèi)容。這層把應(yīng)用數(shù)據(jù)以網(wǎng)頁(yè)的形式呈現(xiàn)給瀏覽器,然后數(shù)據(jù)按照在JSP中開發(fā)的預(yù)定的方式表示出來,這層也可以稱之為布局層。

Servlet:JSP建立在Servlet之上,Servlet是J2EE的重要組成部分。Servlet負(fù)責(zé)處理用戶請(qǐng)求,Java Web項(xiàng)目的所有配置都寫在了web.xml配置文件里,當(dāng)項(xiàng)目運(yùn)行的時(shí)候,web.xml會(huì)將http請(qǐng)求映射給對(duì)應(yīng)的Servlet類。

JavaBean:由一些具有私有屬性的Java類組成,對(duì)外提供get和set方法。JavaBean負(fù)責(zé)數(shù)據(jù),負(fù)責(zé)處理視圖層和業(yè)務(wù)邏輯之間的通信。

Service:業(yè)務(wù)處理類,對(duì)數(shù)據(jù)進(jìn)行一些預(yù)處理。

DAO:數(shù)據(jù)訪問層,JDBC調(diào)用存儲(chǔ)過程,從數(shù)據(jù)庫(kù)(DataBase)那里獲取到數(shù)據(jù),再封裝到Model實(shí)體類中去。

需要文中的資料可以私我。


轉(zhuǎn)載請(qǐng)注明出處!
同時(shí)發(fā)布在GitHub-從懵逼到再入門——JavaEE完整體系架構(gòu)、簡(jiǎn)書-從懵逼到再入門——JavaEE完整體系架構(gòu)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66115.html

相關(guān)文章

  • 后端必備——數(shù)據(jù)通信知識(shí)(RPC、消息隊(duì)列)一站式總結(jié)

    摘要:具體可以參考消息隊(duì)列之具體可以參考實(shí)戰(zhàn)之快速入門十分鐘入門阿里中間件團(tuán)隊(duì)博客是一個(gè)分布式的可分區(qū)的可復(fù)制的基于發(fā)布訂閱的消息系統(tǒng)主要用于大數(shù)據(jù)領(lǐng)域當(dāng)然在分布式系統(tǒng)中也有應(yīng)用。目前市面上流行的消息隊(duì)列就是阿里借鑒的原理用開發(fā)而得。 我自己總結(jié)的Java學(xué)習(xí)的系統(tǒng)知識(shí)點(diǎn)以及面試問題,目前已經(jīng)開源,會(huì)一直完善下去,歡迎建議和指導(dǎo)歡迎Star: https://github.com/Snail...

    Kahn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<