1. 程式人生 > >javaEE體系結構【轉載】

javaEE體系結構【轉載】

轉載自: http://blog.csdn.net/chjskarl/article/details/72629014?locationNum=3&fps=1

 

JavaEE是一套使用Java進行企業級Web應用開發的大家一致遵循的工業標準。

JavaEE平臺提供了一個基於元件的方法來加快設計、開發、裝配及部署企業應用程式。

相較於Microsoft的.NET,Sun公司的Java*E和一系列標準、技術及協議更接近或更滿足網際網路在智慧化Web服務方面對開放性、分佈性和平臺無關性的要求。

  

JavaEE的13種核心技術規範:

 

  1、JDBC(Java Database)資料庫連線

  JDBC是一組用於執行SQL的Java API ,為訪問不同的資料庫提供了一種統一的途徑,幾乎所有的關係型資料庫廠商(DBMS)都提供了JDBC的服務或驅動。JDBC對資料庫的訪問也具有平臺無關性。

JDBC處理模型

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

  JNDI是命名目錄服務的抽象介面集合,為企業級應用提供了統一的標準化連線,使Java能夠無縫地獲取任何可目錄化的企業資訊。在JavaEE體系中,JNDI用來定位各種物件,包括EJB、資料庫驅動、JDBC資料來源及訊息連線等。由於JNDI是獨立於目錄協議的,因此還可以用JNDI訪問各種特定的目錄服務,如LDAP(輕量目錄訪問協議)、NDS(伺服器目錄訪問服務)。

JNDI資料來源  

  3、EJB(Enterprise JavaBean)

  EJB元件:JavaBean是在程式設計環境(IDE)中能夠被視覺化處理的可重用元件,是實現分散式業務邏輯的 Java 元件。我們在開發的時候可以利用這些元件,像搭積木一樣建立面向物件的分散式應用。

  EJB容器:是EJB元件的執行環境,為部署EJB元件提供服務,包括事務、安全、遠端客戶端的網路釋出、資源管理等。

  EJB伺服器:管理EJB容器的高階程序或應用程式,並提供對系統服務的訪問。

  呼叫EJB元件的應該稱為EJB客戶端,客戶端可以執行在Web容器中。

EJB

  4、RMI(Remote Method Invoke)遠端方法呼叫

  RMI協議能夠讓在某個Java虛擬機器上的物件,像呼叫本地物件一樣呼叫另一個Java虛擬機器中的物件上的方法。它使用了序列化方式在客戶端和伺服器端傳送資料。RMI是一種被EJB使用的更底層的協議。(stub/skeleton層提供了客戶程式和服務程式彼此互動的介面)

RMI遠端呼叫 

  5、Java IDL(Interface Description Language)/CORBA(Common Object Broker Architecture)Java 介面定義語言/公用物件請求代理程式體系結構

  IDL是用來描述軟體元件介面的一種計算機語言。IDL通過一種中立的方式來描述介面,使得在不同平臺上執行的物件和用不同語言編寫的程式可以相互通訊交流。

  6、JSP(Java Server Pages)

  JSP頁面由HTML程式碼和嵌入其中的Java程式碼所組成。伺服器在頁面被客戶端所請求以後對這些Java程式碼進行處理,然後將生成的HTML頁面返回給客戶端的瀏覽器。

  JSP可以使用Servlet提供的API,一般和JavaBean結合使用,從而將介面表現和業務邏輯分離。

JSP

  7、Servlet

  Servlet是一種小型的Java程式,它擴充套件了Web伺服器的功能。作為一種伺服器端的應用,當被請求時開始執行。Servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML程式碼中嵌入少量的Java程式碼,而servlets全部由Java寫成並且生成HTML。

  8、XML(Extensible Markup Language)可擴充套件標記語言

  XML是一種用於標記電子檔案使其具有結構性的標記語言。它被用來在不同的商務過程中共享資料。XML的發展和Java是相互獨立的,但是它和Java有著相同的目標,即平臺獨立性。通過Java和XML的組合,可以得到一個完美的具有平臺獨立性的解決方案。

  9、JMS(Java Message Service)Java 訊息服務

  JMS是Java的訊息服務,JMS的客戶端之間可以通過JMS服務進行非同步的訊息傳輸。JMS用於和麵向訊息的中介軟體相互通訊的應用程式介面(API)。它既支援點對點的域,有支援釋出/訂閱(publish/subscribe)型別的域,並且提供對下列型別的支援:經認可的訊息傳遞,事務型訊息的傳遞,一致性訊息和具有永續性的訂閱者支援。

  JMS訊息系統帶來的好處:1、提供訊息靈活性;2、鬆散耦合;3、非同步性。

JMS點對點 

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

  在JavaEE應用中,事務是一個不可或缺的元件模型,它保證了使用者操作ACID(即原子、一致、隔離、持久)屬性。對於那些跨資料來源(例如多個數據庫,或者資料庫與JMS)的大型應用,則必須使用全域性事務JTA。應用系統可以由JTA定義的標準API訪問各種事務監控,JTA為JavaEE平臺提供了分散式事務服務,它隔離了事務與底層的資源,實現了透明的事務管理方式。

JTA 

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

  JTS是一個元件事務監視器。JTS是CORBA OTS事務監控的基本實現。JTS規定了事務管理器的實現方式。JTS事務管理器為應用伺服器、資源管理器、獨立的應用以及通訊資源管理器提供了事務服務。

  12、JavaMail

  JavaMail是用於存取郵件伺服器的API,它提供了一套郵件伺服器的抽象類。不僅支援SMTP伺服器,也支援IMAP伺服器和POP伺服器。

  13、JAF(JavaBean Activation Framework)

  JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的位元組流可以被轉換成Java物件,或者轉換自Java物件。大多數應用都可以不需要直接使用JAF。

  

JavaEE軟體開發體系架構

 

  兩層架構

  傳統的客戶伺服器系統僅只簡單地基於兩層體系來構建,即客戶端(前臺)和企業資訊系統(後臺),沒有任何中介軟體,業務邏輯層與表示層或資料層混在一起。這種兩層架構無論從開發、部署、擴充套件、維護來說,綜其只有一個特點——成本高。

  三層架構

  三層架構自上而下將系統分為表示層、邏輯層、持久層。

  表示層由處理使用者互動的客戶端元件及其容器所組成;

  業務邏輯層由解決業務問題的元件組成;

  資料層由一個或多個數據庫組成,並可包含儲存過程。

  這種三層架構,在處理客戶端的請求時,使客戶端不用進行復雜的資料庫處理;透明地為客戶端執行許多工作,如查詢資料庫、執行業務規則和連線現有的應用程式;並且能夠幫助開發人員建立適用於企業的大型分散式應用程式。

三層架構

  MVC

  在MVC模式中,應用程式被劃分為模型層(Model)、檢視層(View)、控制層(Controller)三部分。MVC模型就是把一個應用程式的開發按照業務邏輯、資料、檢視進行分離分層並組織程式碼。MVC要求把應用的模型按一定的層次規則抽取出來,將業務邏輯聚集到一個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。模型層負責封裝應用的狀態,並實現功能,檢視層負責將內容呈現給使用者,控制層負責控制檢視層傳送的請求以及程式的流程。

  Servlet+JSP+JavaBean(MVC)這種模式比較適合開發複雜的web應用,在這種模式下,Servlet負責處理使用者請求,JSP負責資料顯示,JavaBean負責封裝資料。

MVC

  基於JavaEE架構模式下的MVC

  在這種架構模式下,模型層(Model)定義了資料模型和業務邏輯。為了將資料訪問與業務邏輯分離,降低程式碼之間的耦合,提高業務精度,模型層又具體劃分為了DAO層和業務層,DAO即Data Access Object,其主要職能是將訪問資料庫的程式碼封裝起來,讓這些程式碼不會在其它層出現或者暴露出來給其它層;業務層是整個系統最核心也是最具有價值的一層,該層封裝應用程式的業務邏輯,處理資料,關注客戶需求,在業務處理過程中會訪問原始資料或產生新資料,DAO層提供的DAO類能很好地幫助業務層完成資料處理,業務層本身側重於對客戶需求的理解和業務規則的適應,總體說來,DAO層不處理業務邏輯,只為業務層提供輔助,完成獲取原始資料或持久層資料等操作。

基於JavaEE架構模式下的MVC

  JSP:JSP被用來產生Web的動態內容。這層把應用資料以網頁的形式呈現給瀏覽器,然後資料按照在JSP中開發的預定的方式表示出來,這層也可以稱之為佈局層。

  Servlet:JSP建立在Servlet之上,Servlet是J2EE的重要組成部分。Servlet負責處理使用者請求,Java Web專案的所有配置都寫在了web.xml配置檔案裡,當專案執行的時候,web.xml會將http請求對映給對應的Servlet類。

  JavaBean:由一些具有私有屬性的Java類組成,對外提供get和set方法。JavaBean負責資料,負責處理檢視層和業務邏輯之間的通訊。

  Service:業務處理類,對資料進行一些預處理。

  DAO:資料訪問層,JDBC呼叫儲存過程,從資料庫(DataBase)那裡獲取到資料,再封裝到Model實體類中去。