- Java EE核心技術(shù)與應(yīng)用
- 郝玉龍 周旋
- 2021字
- 2018-12-27 13:28:03
1.2 為什么需要Java EE
1.2.1 企業(yè)級(jí)應(yīng)用特征
Java EE是為了滿足企業(yè)級(jí)應(yīng)用開發(fā)而推出的。大部分讀者可能都開發(fā)過(guò)應(yīng)用程序,例如老師布置的作業(yè)或一些小的工具軟件,但是這些應(yīng)用程序與企業(yè)級(jí)應(yīng)用程序有著本質(zhì)的區(qū)別。企業(yè)級(jí)應(yīng)用并不是特指為企業(yè)開發(fā)的應(yīng)用軟件,而是泛指那些為大型組織部門創(chuàng)建的、為大量用戶提供連續(xù)服務(wù)的應(yīng)用程序。如網(wǎng)上電子銀行就是一個(gè)典型的企業(yè)應(yīng)用。與常見(jiàn)的應(yīng)用程序相比,企業(yè)級(jí)應(yīng)用一般具有以下特點(diǎn)。
(1)多用戶。企業(yè)級(jí)應(yīng)用通常需要服務(wù)大量用戶群體,少則是一個(gè)單位或組織內(nèi)的幾十名員工,多則是數(shù)以億計(jì)的社會(huì)人群。
(2)分布式。企業(yè)級(jí)應(yīng)用程序通常不是運(yùn)行在某個(gè)單獨(dú)的PC上,而是通過(guò)局域網(wǎng)運(yùn)行在一個(gè)組織內(nèi)部,或通過(guò)Internet連接分布在世界各地的部門或用戶。
(3)連續(xù)性。企業(yè)級(jí)應(yīng)用通常需要24×7連續(xù)不停的運(yùn)轉(zhuǎn),即使是短暫的服務(wù)中斷也可能是無(wú)法接受的,例如鐵路調(diào)度系統(tǒng)、電子商務(wù)網(wǎng)站等。
(4)多變性。社會(huì)信息瞬息萬(wàn)變,企業(yè)組織必須不斷地改變業(yè)務(wù)規(guī)則來(lái)適應(yīng)社會(huì)信息的高速變化,相應(yīng)地,對(duì)應(yīng)用程序也不斷提出新的需求。企業(yè)級(jí)應(yīng)用程序必須具備能力來(lái)及時(shí)適應(yīng)需求的改變,同時(shí)又盡可能地減少資金的投入。
(5)可擴(kuò)展性。在網(wǎng)絡(luò)環(huán)境內(nèi),應(yīng)用的潛在用戶可能成百上千,企業(yè)級(jí)應(yīng)用除了要考慮能夠更加有效地利用企業(yè)不斷增長(zhǎng)的信息資源外,還要充分考慮用戶群體的膨脹給應(yīng)用帶來(lái)的性能上的擴(kuò)展需求。
(6)安全性。實(shí)現(xiàn)應(yīng)用系統(tǒng)的正常操作和運(yùn)轉(zhuǎn),對(duì)于企業(yè)的成功來(lái)說(shuō)至關(guān)重要。但僅僅做到這一點(diǎn)還不夠,還必須保證企業(yè)信息的安全和系統(tǒng)運(yùn)行的可靠性。
(7)集成化。企業(yè)應(yīng)用除了滿足自身的需求外,還經(jīng)常需要與其他信息系統(tǒng)進(jìn)行交互對(duì)接。例如一個(gè)電子商務(wù)網(wǎng)站通常需要與物流信息系統(tǒng)和電子支付系統(tǒng)進(jìn)行交互。
注:Java EE是專為解決企業(yè)級(jí)應(yīng)用開發(fā)提出的,牢記企業(yè)應(yīng)用的上述特性是深入理解和靈活運(yùn)用Java EE開發(fā)技術(shù)的前提和基礎(chǔ)。
1.2.2 企業(yè)級(jí)應(yīng)用架構(gòu)體系
應(yīng)用程序的體系結(jié)構(gòu)是指應(yīng)用程序內(nèi)部各組件間的組織方式。企業(yè)級(jí)應(yīng)用程序的體系結(jié)構(gòu)的設(shè)計(jì)經(jīng)歷了從兩層結(jié)構(gòu)到三層結(jié)構(gòu)、再到多層結(jié)構(gòu)的演變過(guò)程。
1.兩層體系結(jié)構(gòu)應(yīng)用程序
如圖1-1所示,兩層體系結(jié)構(gòu)應(yīng)用程序分為客戶層(Client)和服務(wù)器層(Server),因此又稱為C/S模式。在兩層體系結(jié)構(gòu)中,客戶層的客戶端程序負(fù)責(zé)實(shí)現(xiàn)人機(jī)交互、應(yīng)用邏輯、數(shù)據(jù)訪問(wèn)等職能;服務(wù)器層由數(shù)據(jù)庫(kù)服務(wù)器來(lái)實(shí)現(xiàn),唯一職能是提供數(shù)據(jù)服務(wù)。

圖1-1 兩層體系結(jié)構(gòu)應(yīng)用程序
這種體系結(jié)構(gòu)應(yīng)用程序有以下缺點(diǎn)。
(1)安全性低。客戶端程序與數(shù)據(jù)庫(kù)服務(wù)器直接連接,非法用戶容易通過(guò)客戶端程序侵入數(shù)據(jù)庫(kù),造成數(shù)據(jù)損失。
(2)部署困難。集中在客戶端的應(yīng)用邏輯導(dǎo)致客戶端程序肥大,而且隨著業(yè)務(wù)規(guī)則的不斷變化,需要不斷更新客戶端程序,大大增加了程序部署工作量。
(3)耗費(fèi)系統(tǒng)資源。每個(gè)客戶端程序都要直接連到數(shù)據(jù)庫(kù)服務(wù)器,使服務(wù)器為每個(gè)客戶端建立連接而消耗大量寶貴的服務(wù)器資源,導(dǎo)致系統(tǒng)性能下降。
2.三層體系結(jié)構(gòu)應(yīng)用程序
為了解決兩層體系結(jié)構(gòu)應(yīng)用程序帶來(lái)的問(wèn)題,軟件開發(fā)領(lǐng)域又提出三層體系結(jié)構(gòu)應(yīng)用程序,在兩層體系結(jié)構(gòu)應(yīng)用程序的客戶層與服務(wù)器層之間又添加了一個(gè)第三層——應(yīng)用服務(wù)器層。這樣應(yīng)用程序共分為客戶層、應(yīng)用服務(wù)器層和數(shù)據(jù)服務(wù)器層三個(gè)層次,如圖1-2所示。與兩層體系結(jié)構(gòu)應(yīng)用程序相比,三層體系結(jié)構(gòu)應(yīng)用程序的客戶層功能大大減弱,只用來(lái)實(shí)現(xiàn)人機(jī)交互,原來(lái)由客戶端實(shí)現(xiàn)的應(yīng)用邏輯、數(shù)據(jù)訪問(wèn)職能都遷移到應(yīng)用服務(wù)器層上來(lái)實(shí)現(xiàn),因此客戶層通常被稱做“瘦客戶層”。數(shù)據(jù)服務(wù)層仍舊僅提供數(shù)據(jù)信息服務(wù)。由于客戶層應(yīng)用程序通常是由一個(gè)通用的瀏覽器(Browser)程序來(lái)實(shí)現(xiàn)的,因此這種體系結(jié)構(gòu)又被稱做B/S模式或“瘦客戶機(jī)”模式。應(yīng)用服務(wù)器層是位于客戶層與數(shù)據(jù)服務(wù)器層中間的一層,因此應(yīng)用服務(wù)器被稱做“中間件服務(wù)器”或“中間件”,應(yīng)用服務(wù)器層又被稱做“中間件服務(wù)器層”。

圖1-2 三層體系結(jié)構(gòu)應(yīng)用程序
與兩層體系結(jié)構(gòu)的應(yīng)用程序相比,三層體系結(jié)構(gòu)的應(yīng)用程序具有以下優(yōu)點(diǎn)。
(1)安全性高。中間件服務(wù)器層隔離了客戶端程序?qū)?shù)據(jù)服務(wù)器的直接訪問(wèn),保護(hù)了數(shù)據(jù)信息的安全。
(2)易維護(hù)。由于業(yè)務(wù)邏輯在中間件服務(wù)器上,當(dāng)業(yè)務(wù)規(guī)則變化后,客戶端程序基本不做改動(dòng),只需要升級(jí)應(yīng)用服務(wù)器層的程序即可。
(3)快速響應(yīng)。通過(guò)中間件服務(wù)器層的負(fù)載均衡以及緩存數(shù)據(jù)能力,可以大大提高對(duì)客戶端的響應(yīng)速度。
(4)系統(tǒng)擴(kuò)展靈活。基于三層分布體系的應(yīng)用系統(tǒng),可以通過(guò)在應(yīng)用服務(wù)器部署新的程序組件來(lái)擴(kuò)展系統(tǒng)規(guī)模;當(dāng)系統(tǒng)性能降低時(shí),可以在中間件服務(wù)器層部署更多的應(yīng)用服務(wù)器來(lái)提升系統(tǒng)性能,縮短客戶端的響應(yīng)。
3.多層體系結(jié)構(gòu)應(yīng)用程序
可以將中間件服務(wù)器層按照程序應(yīng)用邏輯進(jìn)一步劃分為若干個(gè)子層,這樣就形成了多層體系結(jié)構(gòu)的應(yīng)用程序。多層體系結(jié)構(gòu)應(yīng)用程序與三層體系結(jié)構(gòu)類似,這里不再贅述。在有些文獻(xiàn)中也將三層以及三層以上體系結(jié)構(gòu)應(yīng)用程序統(tǒng)稱為多層體系結(jié)構(gòu)應(yīng)用程序。
為了滿足開發(fā)多層體系結(jié)構(gòu)的企業(yè)級(jí)應(yīng)用的需求,Sun公司在早期的J2SE基礎(chǔ)上,針對(duì)企業(yè)級(jí)應(yīng)用的各種需求提出了Java EE。
- Boost.Asio C++ Network Programming(Second Edition)
- Expert C++
- Oracle WebLogic Server 12c:First Look
- 軟件項(xiàng)目管理(第2版)
- 造個(gè)小程序:與微信一起干件正經(jīng)事兒
- Mastering phpMyAdmin 3.4 for Effective MySQL Management
- 精通搜索分析
- Access 2010數(shù)據(jù)庫(kù)基礎(chǔ)與應(yīng)用項(xiàng)目式教程(第3版)
- Scientific Computing with Scala
- 零基礎(chǔ)Java學(xué)習(xí)筆記
- Learning Node.js for .NET Developers
- HTML5+CSS3+JavaScript 從入門到項(xiàng)目實(shí)踐(超值版)
- Python自然語(yǔ)言理解:自然語(yǔ)言理解系統(tǒng)開發(fā)與應(yīng)用實(shí)戰(zhàn)
- AI自動(dòng)化測(cè)試:技術(shù)原理、平臺(tái)搭建與工程實(shí)踐
- Cinder:Begin Creative Coding