




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、主要內(nèi)容主要內(nèi)容第第2節(jié)節(jié) J2EE 概述概述第第3節(jié)節(jié) .NET 概述概述第第4節(jié)節(jié) J2EE 與與 .NET 比較比較第第1節(jié)節(jié) 軟件開發(fā)模式概述軟件開發(fā)模式概述第一節(jié)第一節(jié) 軟件開發(fā)模式概述軟件開發(fā)模式概述軟件開發(fā)模式概述軟件開發(fā)模式概述一、網(wǎng)絡(luò)計(jì)算模式一、網(wǎng)絡(luò)計(jì)算模式二、軟件開發(fā)模式二、軟件開發(fā)模式三、三、Web架構(gòu)架構(gòu)MVC一、網(wǎng)絡(luò)計(jì)算模式一、網(wǎng)絡(luò)計(jì)算模式n網(wǎng)絡(luò)模型(network model)是指網(wǎng)絡(luò)上計(jì)算機(jī)處理信息的方式,又被稱為網(wǎng)絡(luò)計(jì)算模式。在不同計(jì)算模式的網(wǎng)絡(luò)上,其數(shù)據(jù)或者信息的處理方式是不同的。一、網(wǎng)絡(luò)計(jì)算模式n以大型機(jī)為中心的計(jì)算模式-分時(shí)共享模式(time-sharin
2、g)特點(diǎn):許多用戶共享CPU資源和數(shù)據(jù)存儲(chǔ)功能,終端只用于命令的輸入和結(jié)果的顯示n以服務(wù)器為中心的計(jì)算模式-資源共享(resource-sharing)模式特點(diǎn):共享共同的應(yīng)用,如文件服務(wù)器,打印服務(wù)器n客戶/服務(wù)器(Client/Server)模式特點(diǎn):系統(tǒng)使用了客戶和服務(wù)器雙方智能、資源和計(jì)算能力來(lái)執(zhí)行一個(gè)特定的任務(wù)。提出服務(wù)請(qǐng)求的一方稱為“客戶機(jī)”,而提供服務(wù)的一方則稱為“服務(wù)器”。應(yīng)用軟件安裝在:前端(即客戶部分)/后端(服務(wù)器部分)n瀏覽器/服務(wù)器( Browser/Server)模式特點(diǎn): B/S結(jié)構(gòu)的客戶端采用了人們普遍使用的瀏覽器,它是一個(gè)簡(jiǎn)單的、低廉的、以Web技術(shù)為基礎(chǔ)的“
3、瘦”C/S系統(tǒng)。應(yīng)用軟件安裝在:后端(服務(wù)器部分)n對(duì)等(Peer to Peer,P2P)模式特點(diǎn):用戶和資源處于對(duì)等狀態(tài),分布式計(jì)算客戶/服務(wù)器模式(Client/Server)客戶服務(wù)器請(qǐng)求命令服務(wù)結(jié)果網(wǎng)絡(luò)接口操作系統(tǒng)(TCP/IP)服務(wù)應(yīng)用核心服務(wù)驅(qū)動(dòng)網(wǎng)絡(luò)接口操作系統(tǒng)(TCP/IP)客戶應(yīng)用用戶界面applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalrequestreply客戶客戶/服務(wù)器模式服務(wù)器模式ServerClientClientClientClientC
4、lientClient單點(diǎn)失效單點(diǎn)失效性能瓶頸性能瓶頸(計(jì)算、存儲(chǔ)資源受限,(計(jì)算、存儲(chǔ)資源受限,網(wǎng)絡(luò)擁塞等)網(wǎng)絡(luò)擁塞等)瀏覽器/服務(wù)器(B/S)模式(3層)Web ServerBrowserBrowserBrowserData Server瀏覽器/服務(wù)器(B/S)模式(N層)Web ServerBrowserBrowserBrowserData ServerApplication Server中間件中間件瀏覽器/服務(wù)器(B/S)模式nB/S模式以Web服務(wù)器為系統(tǒng)的中心,客戶機(jī)端通過(guò)其瀏覽器向Web服務(wù)器提出查詢請(qǐng)求(HTTP協(xié)議方式),Web服務(wù)器根據(jù)需要向數(shù)據(jù)庫(kù)服務(wù)器發(fā)出數(shù)據(jù)請(qǐng)求。數(shù)據(jù)庫(kù)
5、則根據(jù)查詢或查詢的條件返回相應(yīng)的數(shù)據(jù)結(jié)果給Web服務(wù)器,最后Web服務(wù)器再將結(jié)果翻譯成為HTML或各類腳本語(yǔ)言的格式,并傳送給客戶機(jī)上的瀏覽器,用戶通過(guò)瀏覽器即可瀏覽自己所需的結(jié)果。n使用B/S結(jié)構(gòu)的瀏覽器訪問(wèn)數(shù)據(jù)庫(kù)的三層方式,與C/S結(jié)構(gòu)的二層結(jié)構(gòu)相比,具有成本低,易于更新和改動(dòng),用戶可以自行安裝瀏覽器軟件,并使用通用的瀏覽器進(jìn)行訪問(wèn),與網(wǎng)絡(luò)平臺(tái)完全無(wú)關(guān),客戶端軟件廉價(jià),安全保密控制靈活等顯著的優(yōu)點(diǎn)。對(duì)等模式(Peer to Peer,P2P)PeerPeerPeerPeerPeerPeer將服務(wù)器的功能分將服務(wù)器的功能分散到客戶端,充分散到客戶端,充分利用客戶端的計(jì)算、利用客戶端的計(jì)算、存
6、儲(chǔ)、帶寬等資源存儲(chǔ)、帶寬等資源無(wú)中心服務(wù)器無(wú)中心服務(wù)器Peer既是客戶端,既是客戶端,又是服務(wù)器又是服務(wù)器P2P的定義的定義nP2P通信模式中各方都具有相同的能力通信模式中各方都具有相同的能力,其中任何一方都可以發(fā)起一個(gè)通信會(huì),其中任何一方都可以發(fā)起一個(gè)通信會(huì)話。在話。在P2P通信過(guò)程中,每個(gè)通信節(jié)點(diǎn)通信過(guò)程中,每個(gè)通信節(jié)點(diǎn)同時(shí)具有服務(wù)器和客戶端的功能。同時(shí)具有服務(wù)器和客戶端的功能。nP2P網(wǎng)絡(luò)中的節(jié)點(diǎn)間采用網(wǎng)絡(luò)中的節(jié)點(diǎn)間采用P2P通信模式,通信模式,它是構(gòu)筑在現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)設(shè)施上的一個(gè)它是構(gòu)筑在現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)設(shè)施上的一個(gè)重疊網(wǎng)絡(luò)(重疊網(wǎng)絡(luò)(Overlay Network)Internet邏輯的P
7、2P網(wǎng)絡(luò)(overlay)P2P連接資源的方式n基于目錄服務(wù)器使用中心目錄服務(wù)器用于資源發(fā)布和定位如SETIhome、Napster、Groove等n完全分布式無(wú)任何中心服務(wù)器,資源的定位使用泛洪如Gnutellan層次結(jié)構(gòu)將節(jié)點(diǎn)分為一般節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn),一般節(jié)點(diǎn)通過(guò)超級(jí)節(jié)點(diǎn)來(lái)發(fā)布和定位資源,超級(jí)節(jié)點(diǎn)之間采用泛洪方式來(lái)定位資源如KazaA、Skypen結(jié)構(gòu)化P2P將資源和其存儲(chǔ)位置關(guān)聯(lián)起來(lái)如Chord、CAN、Tapestry、Pastry等目標(biāo):實(shí)現(xiàn)資源共享目標(biāo):實(shí)現(xiàn)資源共享過(guò)程:發(fā)布過(guò)程:發(fā)布定位定位使用或者下載使用或者下載基于目錄服務(wù)器:基于目錄服務(wù)器:NapsterI have xyz.
8、mp3!PublishInsert(xyz.mp3,).目錄服務(wù)器目錄服務(wù)器基于目錄服務(wù)器:基于目錄服務(wù)器:NapsterWhere is xyz.mp3?QueryReplyFetchSearch(xyz.mp3)目錄服務(wù)器目錄服務(wù)器完全分布式:完全分布式:GnutellaI have xyz.mp3I have xyz.mp3Where is xyz.mp3?QueryReplyFetch簡(jiǎn)單,無(wú)單點(diǎn)瓶頸簡(jiǎn)單,無(wú)單點(diǎn)瓶頸泛洪加重網(wǎng)絡(luò)負(fù)擔(dān)泛洪加重網(wǎng)絡(luò)負(fù)擔(dān)不保證查找結(jié)果不保證查找結(jié)果層次層次P2P網(wǎng)絡(luò):網(wǎng)絡(luò):K
9、azaAI have xyz.mp3!PublishInsert(xyz.mp3,).SupperNode層次層次P2P網(wǎng)絡(luò):網(wǎng)絡(luò):KazaAWhere is xyz.mp3?QueryRepliesSupperNodeSearch(xyz.mp3)FetchP2P網(wǎng)絡(luò)的特征網(wǎng)絡(luò)的特征nP2P網(wǎng)絡(luò)是一個(gè)應(yīng)用層網(wǎng)絡(luò),一般由網(wǎng)網(wǎng)絡(luò)是一個(gè)應(yīng)用層網(wǎng)絡(luò),一般由網(wǎng)絡(luò)邊緣節(jié)點(diǎn)構(gòu)成,充分利用資源絡(luò)邊緣節(jié)點(diǎn)構(gòu)成,充分利用資源n網(wǎng)絡(luò)的擴(kuò)展性好網(wǎng)絡(luò)的擴(kuò)展性好n資源分布在各個(gè)節(jié)點(diǎn)中,而不是集中在資源分布在各個(gè)節(jié)點(diǎn)中,而不是集中在一個(gè)服務(wù)器上進(jìn)行管理,不存在單點(diǎn)瓶
10、一個(gè)服務(wù)器上進(jìn)行管理,不存在單點(diǎn)瓶頸問(wèn)題頸問(wèn)題n節(jié)點(diǎn)之間可直接建立連接,交互共享資節(jié)點(diǎn)之間可直接建立連接,交互共享資源源需要解決的問(wèn)題:動(dòng)態(tài)性、安全性、可管理性需要解決的問(wèn)題:動(dòng)態(tài)性、安全性、可管理性二、應(yīng)用軟件開發(fā)模型二、應(yīng)用軟件開發(fā)模型1、計(jì)算機(jī)應(yīng)用軟件的一般特點(diǎn)、計(jì)算機(jī)應(yīng)用軟件的一般特點(diǎn) : 大多數(shù)應(yīng)用,從PC機(jī)上的簡(jiǎn)單報(bào)表程序到大型機(jī)上的復(fù)雜計(jì)算,都由三部分組成:u用戶界面部分:表示層u應(yīng)用邏輯部分:業(yè)務(wù)邏輯層u數(shù)據(jù)訪問(wèn)部分:數(shù)據(jù)訪問(wèn)層 2、應(yīng)用軟件開發(fā)模型的變遷過(guò)程、應(yīng)用軟件開發(fā)模型的變遷過(guò)程: 單層單層 兩層兩層 三層三層 N層層 1 2 31 2312312 3 4三、三、 We
11、b架構(gòu)架構(gòu)MVC模式模式 nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMVC動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例MVC基本概念:模型-視圖-控制器(1)nMVC(Model-View-Controller)將一個(gè)交互式應(yīng)用程序分成3個(gè)組件模型:包含核心功能和數(shù)據(jù) (核心業(yè)務(wù)邏輯)視圖:向用戶顯示信息控制器:處理用戶輸入n變更-傳播機(jī)制保證了模型和用戶界面之間的一致性MVC基本概念:模型-視圖-控制器(2)n目的將人機(jī)交互從核心功能中分離出來(lái)(M) 模型對(duì)用戶來(lái)說(shuō)是透明的,用戶只需要觀察視圖(V)用戶與模型的交互通過(guò)控制器提供的安
12、全方法來(lái)實(shí)現(xiàn)(C)MVC應(yīng)用領(lǐng)域n具有靈活人-機(jī)界面的交互式應(yīng)用程序可以靈活選擇不同的信息顯示方式可以靈活選擇用戶的輸入方式n針對(duì)不同的用戶角色,提供不同的用戶界面不同用戶具有不同權(quán)限,操作的方式也有所不同三、三、 Web架構(gòu)架構(gòu)MVC模式模式nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMVC動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例模型(Model)n封裝了內(nèi)核功能和數(shù)據(jù)業(yè)務(wù)邏輯(軟件的核心)數(shù)據(jù)以及訪問(wèn)它們的函數(shù)(視圖組件使用)執(zhí)行特定應(yīng)用程序處理的過(guò)程(控制器代表用戶調(diào)用)n模型對(duì)于用戶來(lái)說(shuō)是不可見的(M與V獨(dú)立)n模型獨(dú)立于特
13、定輸出表示或者輸入方式(M與C獨(dú)立)n用戶只能通過(guò)控制器操作模型(C是M與V之間的橋梁)變更-傳播機(jī)制(1)n一個(gè)模型可對(duì)應(yīng)多個(gè)視圖如果用戶通過(guò)一個(gè)視圖的控制器改變了模型中的數(shù)據(jù),那么依賴于該數(shù)據(jù)的其他視圖也應(yīng)該反映出這樣的變化一旦模型的數(shù)據(jù)發(fā)生了變化,模型需要通知所有相關(guān)的視圖做出相應(yīng)的變化n維護(hù)數(shù)據(jù)的一致性變更-傳播機(jī)制(2)n工作原理:模型維護(hù)了一個(gè)表所有視圖還有一些控制器在這個(gè)表中登記了對(duì)變更通知的需求模型狀態(tài)的改變將觸發(fā)變更-傳播機(jī)制,每個(gè)在表中登記的視圖和控制器都會(huì)收到變更通知n這樣的方式可以通過(guò)觀察者(Observer)設(shè)計(jì)模式完成視圖(View)n向用戶顯示信息不同的視圖使用不
14、同的方法呈現(xiàn)信息每個(gè)視圖組件都有一個(gè)更新函數(shù),這個(gè)函數(shù)被模型變更通知激活這個(gè)函數(shù)被激活(此時(shí)模型已經(jīng)改變)后,將使得視圖重新和模型一致在初始化階段,視圖向模型登記請(qǐng)求變更通知(表)n從模型獲得數(shù)據(jù)通過(guò)狀態(tài)查詢函數(shù)實(shí)現(xiàn)例如:定時(shí)刷新控制器(Controller)n每個(gè)視圖有一個(gè)相關(guān)的控制器組件(一一對(duì)應(yīng))n控制器組件接受事件,并翻譯成輸入事件如何發(fā)送到控制器由用戶界面平臺(tái)決定事件被翻譯成為對(duì)模型或者視圖的請(qǐng)求如果控制器的行為依賴于模型的狀態(tài),那么控制器也需要向模型登記請(qǐng)求變更通知例如:用戶點(diǎn)擊按鈕,按鈕的事件響應(yīng)函數(shù)將采取相應(yīng)的措施處理用戶要求n用戶僅僅通過(guò)控制器與系統(tǒng)交互MVC組件類型的關(guān)系和
15、功能注意n視圖與控制器是一一對(duì)應(yīng)的關(guān)系n模型與視圖是一對(duì)多的關(guān)系n變更-傳播機(jī)制保持模型與視圖、控制器之間狀態(tài)的一致性三、三、 Web架構(gòu)架構(gòu)MVC模式模式nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMVC動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例動(dòng)態(tài)特征(1):MVC系統(tǒng)的初始化過(guò)程Main programModelViewControllermodelviewmodel,viewcontrollerstart動(dòng)態(tài)特征(2):MVC系統(tǒng)的初始化過(guò)程n創(chuàng)建模型實(shí)例,并初始化其數(shù)據(jù)n創(chuàng)建視圖對(duì)象,并用對(duì)模型的引用作為初始化參數(shù)之一n視圖
16、通過(guò)調(diào)用附屬過(guò)程支持變更-傳遞機(jī)制n視圖創(chuàng)建控制器,此時(shí)將模型和視圖的引用作為參數(shù)傳遞給控制器初始化過(guò)程n控制器通過(guò)調(diào)用附屬過(guò)程來(lái)支持變更-傳遞機(jī)制n初始化完成,應(yīng)用程序開始處理事件動(dòng)態(tài)特征(3):輸入導(dǎo)致模型變化,并觸發(fā)變更-傳遞機(jī)制notifyhandleEventControllerViewModelserviceupdateupdategetDatagetDatadisplay動(dòng)態(tài)特征(4):輸入導(dǎo)致模型變化,并觸發(fā)變更-傳遞機(jī)制n控制器接受到事件,解釋事件并且啟動(dòng)模型的服務(wù)過(guò)程(handleEvent、 service)n模型執(zhí)行相應(yīng)的過(guò)程,并導(dǎo)致內(nèi)部狀態(tài)的變化(notify)n模型
17、調(diào)用其更新過(guò)程,向所有登記請(qǐng)求了變更-傳播機(jī)制的視圖和控制器發(fā)出通知(update)n每個(gè)視圖從模型中讀取新數(shù)據(jù)并且重新顯示(getData)n每個(gè)控制器修改自己的行為,比如禁用某個(gè)功能n最初的控制器恢復(fù)控制并從事件處理過(guò)程返回三、三、 Web架構(gòu)架構(gòu)MVC模式模式nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMVC動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例MVC實(shí)現(xiàn)(1)n設(shè)計(jì)并實(shí)現(xiàn)模型組件封裝內(nèi)核所需要的數(shù)據(jù)和功能確定模型的哪一部分應(yīng)該通過(guò)控制器向用戶顯示,提供訪問(wèn)待顯示數(shù)據(jù)的功能實(shí)現(xiàn)核心業(yè)務(wù)邏輯MVC實(shí)現(xiàn)(2)n實(shí)現(xiàn)變更-傳播機(jī)制
18、采用觀察者(Observer)設(shè)計(jì)模式每個(gè)視圖和需要觀察模型變更的控制器都在模型中注冊(cè)自己的觀察者(表)模型中可以隨意添加和刪除觀察者實(shí)現(xiàn)通知各觀察者并改變其狀態(tài)的方法MVC實(shí)現(xiàn)(3)n設(shè)計(jì)并實(shí)現(xiàn)視圖設(shè)計(jì)視圖的外觀,并實(shí)現(xiàn)畫圖過(guò)程來(lái)將視圖顯示在屏幕上(需要使用用戶界面平臺(tái)的功能)實(shí)現(xiàn)更新過(guò)程來(lái)反映模型的變化可以簡(jiǎn)單地調(diào)用畫圖功能,但是不適應(yīng)模型頻繁變化的情況向更新過(guò)程提供一些參數(shù)來(lái)確定是否重畫,以及重畫范圍可以通過(guò)累積變化的方式減少重畫的頻率n還需要實(shí)現(xiàn)視圖的初始化過(guò)程支持變更-傳遞機(jī)制初始化控制器MVC實(shí)現(xiàn)(4)n設(shè)計(jì)并實(shí)現(xiàn)控制器對(duì)于每個(gè)視圖,指定回應(yīng)用戶動(dòng)作的系統(tǒng)行為控制器用一個(gè)專用的過(guò)程
19、來(lái)接受并且解釋這些用戶動(dòng)作(事件)實(shí)現(xiàn)事件響應(yīng)函數(shù)MVC實(shí)現(xiàn)(5)n實(shí)現(xiàn)MVC的總體的初始化部分首先創(chuàng)建并初始化模型實(shí)例創(chuàng)建和初始化視圖實(shí)例同時(shí)會(huì)創(chuàng)建相應(yīng)的控制器實(shí)例初始化之后進(jìn)入一個(gè)循環(huán),或者包含循環(huán)的過(guò)程三、三、 Web架構(gòu)架構(gòu)MVC模式模式nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMVC動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例軟件體系結(jié)構(gòu):Architecture(1)n迄今為止還沒(méi)有一個(gè)被大家所公認(rèn)的定義n確定了系統(tǒng)整體結(jié)構(gòu)、層次劃分以及不同部分之間的協(xié)作等設(shè)計(jì)考慮n是軟件設(shè)計(jì)過(guò)程中的第一個(gè)層次,常用于總體設(shè)計(jì)nMVC是一
20、種軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu):Architecture(2)nKruchten指出,軟件體系結(jié)構(gòu)有四個(gè)角度,它們從不同方面對(duì)系統(tǒng)進(jìn)行描述概念角度:描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系模塊角度:包含功能分解與層次結(jié)構(gòu)運(yùn)行角度:描述了一個(gè)系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu)代碼角度:描述了各種代碼和庫(kù)函數(shù)在開發(fā)環(huán)境中的組織框架:Frameworkn框架不是現(xiàn)成可用的應(yīng)用系統(tǒng),而是一個(gè)半成品,需要后來(lái)的開發(fā)人員進(jìn)行二次開發(fā),實(shí)現(xiàn)體功能的應(yīng)用系統(tǒng)n框架構(gòu)成了通用的、具有一般性的系統(tǒng)主體部分,二次開發(fā)人員只是像做填空一樣,根據(jù)具體業(yè)務(wù),完成特定應(yīng)用系統(tǒng)中與眾不同的特殊部分n框架比體系結(jié)構(gòu)更具體,更偏重于技術(shù)n一般來(lái)說(shuō),確定框架后
21、,軟件體系結(jié)構(gòu)也隨之確定,而對(duì)于同一軟件體系結(jié)構(gòu)(比如Struts是基于Web的MVC框架),可以通過(guò)多種框架來(lái)實(shí)現(xiàn)nMVC不是框架設(shè)計(jì)模式:Design Patternn設(shè)計(jì)模式研究的是單一設(shè)計(jì)問(wèn)題的解決方法n構(gòu)思如何組合已有的組件,使其發(fā)揮出最大的功效n描述問(wèn)題中出現(xiàn)的類和接口,以及它們之間的關(guān)系n只是思想,不是代碼只是思想,不是代碼n可由不同語(yǔ)言實(shí)現(xiàn),提高代碼的可重用性nMVC不是設(shè)計(jì)模式三、三、 Web架構(gòu)架構(gòu)MVC模式模式nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMVC動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例MVC開發(fā)方
22、式(開發(fā)方式(1)nJava開發(fā)開發(fā)Web ApplicationJava開發(fā)Web Application有幾種符合MVC設(shè)計(jì)模式的開發(fā)方式。 1: Jsp+Servlet+JavaBean(EJB) 2: Jsp+JavaBean(Controller)+JavaBean(EJB)(Model) 3: TDK(Turbine,Velocity.) 4: Xsp 5: Jsp+Struts+JavaBean(EJB) 6: SSH (Struts + Spring + Hibernate) q Hibernate是一個(gè)開放源代碼的ORM(Object/Relational Mapping,對(duì)
23、象關(guān)系映射 )框架,是一種數(shù)據(jù)持久化的實(shí)現(xiàn)技術(shù)。它對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲地使用面向?qū)ο缶幊趟季S來(lái)操作數(shù)據(jù)庫(kù)。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP(Container Managed Persistence ),完成數(shù)據(jù)持久化的重任。 MVC開發(fā)方式(開發(fā)方式(2)n.NET開發(fā)開發(fā)Web Application.NET開發(fā)Web Application可以采用: 1:ASP.N
24、ET MVC Framework(ASP.NET MVC ) 2:MonoRail (RC3) 3:ASP.NET (MVC2) nphp 開發(fā)開發(fā)Web Applicationphp 開發(fā)Web Application 可以采用: 1. Zend framework PHP官方框架 2. fleaphp/Qeephp 等國(guó)內(nèi)流行框架 3. CakePHP 等國(guó)外流行框架 4. ThinkPHP 等其他框架 三、三、 Web架構(gòu)架構(gòu)MVC模式模式nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMVC動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例常見的
25、MVC組件 組件扮演著控制器Controller的角色。nStruts: Apache的,最流行的MVC組件 nStruts2 :Apache用Struts 和 WebWork的組合出來(lái)的新產(chǎn)品,目前上升勢(shì)頭強(qiáng)勁 nWebWork: 這個(gè)可是老牌的MVC組件,后來(lái)組合成了Struts2, 不過(guò)自身仍在發(fā)展 nSpring MVC:SpringFramework自己整合自己Spring的優(yōu)勢(shì)推出的MVC組件,用戶也不少 nJSF: 這個(gè)是一個(gè)規(guī)范,Sun的和 Apache的都有各自的實(shí)現(xiàn)。用戶量很大,被眾多IDE支持。 Java Server Faces (JSF) 是一種用于構(gòu)建 Web 應(yīng)用
26、程序的新標(biāo)準(zhǔn) Java 框架。它提供了一種以組件為中心來(lái)開發(fā) Java Web 用戶界面的方法,從而簡(jiǎn)化了開發(fā)。nTapestry: 最徹底的MVC開發(fā)框架,豐富的組件資源,重用性很高。Model1: Jsp+JavaBean 開發(fā)模型n從上圖可以看出,模型1也實(shí)現(xiàn)了頁(yè)面表現(xiàn)和業(yè)務(wù)邏輯相分離。然而使用這種方式就要在JSP頁(yè)面使用大量的Java代碼,當(dāng)需要處理的業(yè)務(wù)邏輯很復(fù)雜時(shí),這種情況會(huì)變得非常糟糕。大量嵌入式代碼使整個(gè)頁(yè)面程序變得異常復(fù)雜。對(duì)于前端界面設(shè)計(jì)的網(wǎng)頁(yè)開發(fā)人員來(lái)說(shuō),這簡(jiǎn)直是一場(chǎng)噩夢(mèng)。所以,模型1不能滿足大型應(yīng)用的需要,但是對(duì)于小型應(yīng)用,因?yàn)樵撃P秃?jiǎn)單,不用涉及諸多要素,從而可以很好
27、地滿足小型應(yīng)用的需要,所以在簡(jiǎn)單應(yīng)用中,可以考慮模型一。Model1: Jsp+JavaBean開發(fā)模型n好處: 程序的可讀性高,將復(fù)雜的程序代碼寫在JavaBean之中,減少和網(wǎng)頁(yè)標(biāo)簽混合的情況。 可重復(fù)利用性高,由于通過(guò)JavaBean來(lái)封裝重要的商業(yè)邏輯運(yùn)算,不同的JSP可以調(diào)用許多共享性的組件,增加開發(fā)效能。n缺點(diǎn); 缺乏流程控制。每一個(gè)JSP都要驗(yàn)證需求的參數(shù)正確性、確認(rèn)用戶身份權(quán)限、異常發(fā)生的處理,甚至還包含顯示斷的網(wǎng)頁(yè)編碼原則及語(yǔ)系的處理Model 2 :MVC架構(gòu)的開發(fā)模式n這一模型結(jié)合了JSP和Servlet技術(shù),充分利用了JSP 和Servlet兩種技術(shù)原有的優(yōu)勢(shì)。這個(gè)模型
28、使用JSP技術(shù)來(lái)表現(xiàn)頁(yè)面,使用Servlet技術(shù)完成大量的事務(wù)處理,使用Bean來(lái)存儲(chǔ)數(shù)據(jù)。 Servlet用來(lái)處理請(qǐng)求的事務(wù),充當(dāng)一個(gè)控制者的角色,并負(fù)責(zé)向客戶發(fā)送請(qǐng)求。它創(chuàng)建JSP需要的Bean和對(duì)象,然后根據(jù)用戶請(qǐng)求的行為,決定將哪個(gè)JSP頁(yè)面發(fā)送給客戶。Model 2 :MVC架構(gòu)的開發(fā)模式優(yōu)點(diǎn):n開發(fā)流程更為明確:區(qū)別開顯示端和商業(yè)邏輯端,美工設(shè)計(jì)人員和程序員能夠?qū)W⒂诒旧淼墓ぷ?,有利于大型系統(tǒng)的開發(fā)。n核心的程序管控 :由Controller控制整個(gè)流程,可以減少JSP需要撰寫許多條件判斷邏輯及流程管控等等的程序代碼。n維護(hù)容易:不論是后端商業(yè)邏輯對(duì)象或間斷的網(wǎng)頁(yè)呈現(xiàn),都通過(guò)控制中
29、心來(lái)掌控,如果有商業(yè)邏輯的變更,可以輕易的修改Model段的程序,而不用去修改相關(guān)的JSP文件。缺點(diǎn):n學(xué)習(xí)時(shí)間較長(zhǎng):各家公司都有自己MVC架構(gòu),花更多的時(shí) 間去熟悉了解他們的流程與概念。n發(fā)時(shí)間較長(zhǎng):因?yàn)樾枰O(shè)計(jì)MVC個(gè)對(duì)象比吃的數(shù)據(jù)交換與方法,會(huì)需要更多的時(shí)間在系統(tǒng)設(shè)計(jì)之上。舉例:購(gòu)物車程序nEShop.jsp顯示商店所提供的商品目錄nCart.jsp 顯示購(gòu)物車的內(nèi)容nCheckout.jsp顯示用戶預(yù)購(gòu)買的物品清單和價(jià)格nBook.java它是一個(gè)JavaBean內(nèi)容為書籍的屬性nShoppingServlet.java它除了新增、移出購(gòu)物車內(nèi)的物品和結(jié)賬的功能之外,并且也扮演流程控制
30、的角色。它本身是Servlet。Servlet API2.1中有一RequestDispatcher接口來(lái)做流程控制nRequestDispatcher接口提供兩種方法: public void include(HttpServletRequest,HttpServletResponse) 將目前的請(qǐng)求服務(wù)轉(zhuǎn)交給另一個(gè)JSP頁(yè)面或是Servlet; public void forward(HttpServletRequest,HttpServletResponse)將它的內(nèi)容一并包含到原來(lái)的Servlet中。三、三、 Web架構(gòu)架構(gòu)MVC模式模式nMVC基本概念及應(yīng)用領(lǐng)域nMVC主體結(jié)構(gòu)nMV
31、C動(dòng)態(tài)特征nMVC實(shí)現(xiàn)n軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式nMVC開發(fā)方式n常見的MVC組件n應(yīng)用實(shí)例網(wǎng)站設(shè)計(jì)中的網(wǎng)站設(shè)計(jì)中的MVC架構(gòu)架構(gòu)n控制層將顯示層得到的數(shù)據(jù),判斷交由哪個(gè)商業(yè)邏輯層作處理,然后再將結(jié)果交由顯示層,顯示出數(shù)據(jù)處理后的結(jié)果。nMVC最主要的精神之一是Model和View的分離 ,網(wǎng)頁(yè)設(shè)計(jì)師和程序員能夠獨(dú)立工作,互不影響,從而增加了維護(hù)的效率。同時(shí)將商業(yè)邏輯層的數(shù)據(jù)處理建立成許多的組件,增加了程序的可重用性,一方面減輕了程序員的工作負(fù)擔(dān)和公司的開發(fā)成本;另一方面增進(jìn)了網(wǎng)站功能擴(kuò)充的彈性。DataBase應(yīng)用實(shí)例(1)n需求有兩個(gè)窗口,每個(gè)窗口分別有一個(gè)標(biāo)簽和一個(gè)按鈕點(diǎn)擊其中一個(gè)窗
32、口中的按鈕,可以使標(biāo)簽的字體增大,點(diǎn)擊另一個(gè)可以使其字體減小一個(gè)窗口對(duì)字體的改變必須立即反映在另一個(gè)窗口中n目的采用MVC模式設(shè)計(jì)實(shí)現(xiàn)使用觀察者(Observer)設(shè)計(jì)模式模擬變更-傳播機(jī)制應(yīng)用實(shí)例(2):類圖Observer+update()V1-c1+V1(M)+update()V2-c2+V2(M)+update()M-observers-size+M()+enlarge()+abridge()+addObserver(Observer)+removeObserver(Observer)+notifyObservers()C1-v1-m+C1(V1, M)+register()+acti
33、onPerformed(ActionEvent)C2-v2-m+C2(V2, M)+register()+actionPerformed(ActionEvent)應(yīng)用實(shí)例(3):Observer接口interface Observer /更新函數(shù)public void update();應(yīng)用實(shí)例(4):M類class M private int size = 20; /字體大小/使字體變大 public void enlarge() this.setSize( this.getSize() + 5 );/使字體變小public void abridge() this.setSize( this
34、.getSize() - 5 ); 應(yīng)用實(shí)例(5):M類/觀察者隊(duì)列private List observers = new ArrayList();public void addObservers( Observer observer )this.observers.add( observer );/當(dāng)模型有變更時(shí),通知所有觀察者改變相應(yīng)的視圖public void notifyObservers()Iterator iter = this.observers.iterator();while( iter.hasNext() )iter.next().update();應(yīng)用實(shí)例(6):C1類
35、class C1 implements ActionListener /一個(gè)控制器與一個(gè)視圖和一個(gè)模型對(duì)應(yīng)private V1 v1;private M m;/構(gòu)造函數(shù)public C1( V1 v1, M m )this.m = m;this.v1 = v1;/向模型注冊(cè)此控制器對(duì)應(yīng)的視圖的觀察者public void register()this.m.addObservers( this.v1 );應(yīng)用實(shí)例(7):C1類/* * 實(shí)現(xiàn)事件監(jiān)聽器, * 當(dāng)點(diǎn)擊按鈕時(shí),增大標(biāo)簽的字體 */public void actionPerformed( ActionEvent e )this.m.en
36、large();this.m.notifyObservers();應(yīng)用實(shí)例(8):V1類class V1 implements Observer JLabel label = new JLabel( MVC );JButton button = new JButton( 增大字體 );private C1 c1; /與視圖V1對(duì)應(yīng)的控制器/實(shí)現(xiàn)Observer接口,當(dāng)有變更時(shí),改變相應(yīng)視圖public void update()Font font = new Font( this.label.getText(), c1.getM().getStyle(), c1.getM().getSize(
37、) );this.label.setFont( font );應(yīng)用實(shí)例(9):V1類public V1(M m)/實(shí)例化一個(gè)鏈接此視圖和模型的控制器c1 = new C1( this, m );/注冊(cè)此視圖的觀察者到模型中c1.register();應(yīng)用實(shí)例(10):主程序TestnC2與V2的實(shí)現(xiàn)與C1和V1的實(shí)現(xiàn)相似public class Test /* * param args */public static void main(String args) M m = new M();V1 v1 = new V1(m);V2 v2 = new V2(m);第二節(jié)第二節(jié) J2EE J2EE
38、 概述概述主要內(nèi)容 nJ2EE的由來(lái)nJ2EE的組成一、一、J2EE的由來(lái)n傳統(tǒng)應(yīng)用程序模型 nWeb應(yīng)用程序模型n為什么需要J2EEn什么是J2EE1、傳統(tǒng)應(yīng)用程序模型(一)數(shù)據(jù)訪問(wèn)、表示和業(yè)務(wù)邏輯在一個(gè)應(yīng)用中代碼復(fù)用、代碼可維護(hù)性、代碼的修改十分困難應(yīng)用不是分布式的,不具有可伸縮性主機(jī)系統(tǒng)或單層結(jié)構(gòu):主機(jī)/終端模式1、傳統(tǒng)應(yīng)用程序模型(二)用戶界面和程序邏輯綁在一起,代碼難以重用服務(wù)器的數(shù)據(jù)庫(kù)必須同每一個(gè)活動(dòng)的客戶保持連接,消耗大量的運(yùn)算資源,隨著客戶數(shù)目的增加性能不斷下降,且存在死鎖及崩潰的可能數(shù)據(jù)模型“緊耦合”在每一客戶端,數(shù)據(jù)庫(kù)結(jié)構(gòu)改變將導(dǎo)致全體客戶端改變,不利于更新和維護(hù)原始數(shù)據(jù)通
39、過(guò)網(wǎng)絡(luò)傳遞:加重網(wǎng)絡(luò)負(fù)擔(dān)客戶端應(yīng)用程序越來(lái)越大,對(duì)使用者的要求也越來(lái)越高客戶/服務(wù)器結(jié)構(gòu):“胖”客戶端胖客戶端:胖客戶端:表示邏輯表示邏輯業(yè)務(wù)邏輯業(yè)務(wù)邏輯業(yè)務(wù)數(shù)據(jù)模型業(yè)務(wù)數(shù)據(jù)模型通訊通訊Fat clientFat client2、 Web應(yīng)用程序模型(一)傳統(tǒng)的Web應(yīng)用程序模型:三層分布式架構(gòu)2、 Web應(yīng)用程序模型(一)WWW瀏覽方式帶來(lái)的變化:l“Browser-based” 的客戶端與“Internetworking”l計(jì)算方式向服務(wù)器端的集中轉(zhuǎn)化客戶端:業(yè)務(wù)數(shù)據(jù)模型與UI分開,更“瘦”業(yè)務(wù)邏輯在中間層,通過(guò):連接池,多線程可以處理多客戶端早期應(yīng)用編程困難且性能比較差:CGI(C/C+
40、, VB, Perl等等),ISAPI ,NSAPI(Network Service Access Point Identifier )傳統(tǒng)的Web應(yīng)用程序模型:三層分布式架構(gòu)2、 Web應(yīng)用程序模型(二)N層計(jì)算模式的引入 采用N層計(jì)算結(jié)構(gòu),從邏輯角度看,系統(tǒng)分成客戶端、Web服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器四層;從物理角度看,應(yīng)用服務(wù)器可以視用戶并發(fā)數(shù)從1到N臺(tái)進(jìn)行擴(kuò)充,以保證客戶端用戶的響應(yīng)要求。 2、 Web應(yīng)用程序模型(二)從1層到N層,得到的改進(jìn):l每一層可以被單獨(dú)改變,而無(wú)需其它層的改變l降低了部署與維護(hù)的開銷,提高了靈活性、可伸縮性l引入瘦客戶端,計(jì)算被集中至服務(wù)器端,使性能提
41、高成為可能仍然存在的問(wèn)題:l對(duì)企業(yè)級(jí)應(yīng)用開發(fā)人員的要求太高:l 需要熟悉分布式協(xié)議(IIOP、HTTP、CGI、ISAPI、NSAPI),進(jìn)行一致性事務(wù)處理,負(fù)載平衡,考慮安全性lIIOP (Internet Inter-ORB Protocol,互聯(lián)網(wǎng)內(nèi)部對(duì)象請(qǐng)求代理協(xié)議)用來(lái)在CORBA對(duì)象請(qǐng)求代理之間交流的協(xié)議。Java中使得程序可以和其他語(yǔ)言的CORBA實(shí)現(xiàn)互操作性的協(xié)議。是一個(gè)實(shí)現(xiàn)互操作性的協(xié)議,它使得由不同語(yǔ)言編寫的分布式程序在因特網(wǎng)中可以實(shí)現(xiàn)彼此的交流溝通。 N層計(jì)算模式的引入2、 Web應(yīng)用程序模型(三)應(yīng)用程序各部分之間松耦合,從而應(yīng)用程序各部分的更新相互獨(dú)立業(yè)務(wù)邏輯集中放在
42、服務(wù)器上由所有用戶共享,使得系統(tǒng)的維護(hù)和更新變得簡(jiǎn)單,也更安全數(shù)據(jù)庫(kù)不再和每一個(gè)活動(dòng)的用戶保持一個(gè)連接,而是由應(yīng)用程序組件負(fù)責(zé)與數(shù)據(jù)庫(kù)打交道,降低數(shù)據(jù)庫(kù)服務(wù)器的負(fù)擔(dān),提高了性能多層應(yīng)用程序的真正優(yōu)點(diǎn)3、為什么需要J2EE在企業(yè)級(jí)應(yīng)用開發(fā)中所面臨的而且必須解決的問(wèn)題:n分布式n可移植n舊系統(tǒng)集成支持n面向Webn可裝配n滿足企業(yè)計(jì)算要求一致性事務(wù)性安全性n要有好的特性可伸縮可擴(kuò)展易維護(hù)3、為什么需要J2EE J2EE提供了一套完整的解決所有這些問(wèn)題的框架方案:n提供了分布式、可移植構(gòu)件的框架提供了分布式、可移植構(gòu)件的框架n為構(gòu)件與應(yīng)用服務(wù)器提供標(biāo)準(zhǔn)為構(gòu)件與應(yīng)用服務(wù)器提供標(biāo)準(zhǔn)APIn簡(jiǎn)化了服務(wù)器端
43、中間層構(gòu)件的設(shè)計(jì)簡(jiǎn)化了服務(wù)器端中間層構(gòu)件的設(shè)計(jì)3、為什么需要J2EEJ2EE對(duì)開發(fā)者和用戶來(lái)說(shuō)意味著:n更短的開發(fā)時(shí)間可重用構(gòu)件JSPEJBn更簡(jiǎn)化的連接X(jué)ML,JDBC,RMI-IIOP4、什么是J2EEnOpen and standard based platform for developing, deploying and managing n-tier, Web-enabled, server-centric enterprise applicationsn開放的、基于標(biāo)準(zhǔn)的平臺(tái),用以開發(fā)、部署和管理N層結(jié)構(gòu)、面向Web的,以服務(wù)器為中心的企業(yè)級(jí)應(yīng)用二、二、J2EE的組成nWhat
44、is Java 2 Platform nJ2EE的組成nJ2EE架構(gòu)及核心技術(shù)簡(jiǎn)介 1、What is Java 2 PlatformJava的版本歷史:從一種語(yǔ)言發(fā)展為一種平臺(tái)從一種語(yǔ)言發(fā)展為一種平臺(tái)nJava的前身是一種與平臺(tái)無(wú)關(guān)的語(yǔ)言“OaK”,誕生于1991年Sun公司的一個(gè)研究項(xiàng)目,最初目的是為了應(yīng)用于消費(fèi)類電子設(shè)備的開發(fā);n1994年Internet開始起步,1995年年NetScape宣布把Java集成到其瀏覽器中,可執(zhí)行的Java代碼可以以Applet的形式在瀏覽器中運(yùn)行,Java開始流行。nSun公司1996年年1月發(fā)布JDK1.0,1997年年2月發(fā)布JDK1.1,Java
45、開始在企業(yè)中應(yīng)用。n1998年年12月發(fā)布JDK1.2,即Java 2 平臺(tái),并于1999年年6月經(jīng)集成重組后重新發(fā)布。n目前JDK的流行版本為1.7。目前主要的Java平臺(tái)及特點(diǎn)如下:nJ2ME - Java 2 Micro Edition:用于創(chuàng)建嵌入式應(yīng)用程序的Java平臺(tái)(如PDA、儀表)。nJ2SE - Java 2 Standard Edition:用于創(chuàng)建典型的桌面與工作站應(yīng)用的Java平臺(tái)。nJ2EE - Java 2 Enterprise Edition:用于創(chuàng)建可擴(kuò)縮的企業(yè)應(yīng)用的Java平臺(tái)。2、J2EE的組成J2EE J2EESpecification J2EERefer
46、ence Implementation J2EECompatibilityTest Suite J2EEBlue Prints 3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE架構(gòu):3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE容器和構(gòu)件:容器處理容器處理構(gòu)件處理構(gòu)件處理分布性分布性可伸縮性可伸縮性可用性可用性事務(wù)性事務(wù)性安全性安全性 生命周期管理生命周期管理表示表示JSP, Servlet, Applet業(yè)務(wù)邏輯業(yè)務(wù)邏輯EJB數(shù)據(jù)訪問(wèn)邏輯數(shù)據(jù)訪問(wèn)邏輯EJB3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù):13種種 EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDB
47、C XML、JMS3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介EJB J2EE的基石:nEJB (Enterprise JavaBeans) :EJB不是一個(gè)具體的產(chǎn)品,而是一個(gè)Java服務(wù)器端組件開發(fā)的規(guī)范,軟件廠商根據(jù)它來(lái)實(shí)現(xiàn)EJB服務(wù)器。使用EJB,Java程序員可以將一些定義明確的程序塊組合到一起,從而方便、快捷地建構(gòu)分布式應(yīng)用程序。使用EJB可以使整個(gè)程序分塊明確,并且EJB可以使用其它EJB或JDBC等服務(wù),從而增強(qiáng)了分布式應(yīng)用程序的可擴(kuò)展性和性能;EJB規(guī)范在簡(jiǎn)化分布式應(yīng)用程序開發(fā)復(fù)雜性方面做了大量的工作,所以EJB程序員不必太擔(dān)心事務(wù)處理、多線程、資源管理等方面的問(wèn)題,可以專注于支持應(yīng)用所需
48、的商業(yè)邏輯,而不用擔(dān)心周圍框架的實(shí)現(xiàn)問(wèn)題。EJB的使用增強(qiáng)了整個(gè)系統(tǒng)程序的可靠性、可管理性和可移植性。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介EJB J2EE的基石:nEJB容器是: EJB的運(yùn)行環(huán)境。它提供規(guī)范中定義的接口使EJB類訪問(wèn)所需的服務(wù)。容器廠商也可以在容器或服務(wù)器中提供額外服務(wù)的接口。 它的責(zé)任包括:3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介EJB J2EE的基石:nEJB服務(wù)器是: 管理EJB容器的高端進(jìn)程或應(yīng)用程序,并提供對(duì)系統(tǒng)服務(wù)的訪問(wèn)。EJB服務(wù)器也可以提供廠商自己的特性,如優(yōu)化的數(shù)據(jù)庫(kù)訪問(wèn)接口,對(duì)其他服務(wù)(如CORBA服務(wù))的訪問(wèn)。一個(gè)EJB服務(wù)器必須提供支持對(duì)JNDI的名字服務(wù)和TS事務(wù)服
49、務(wù)的可訪問(wèn)。 nEJB分為兩種: 會(huì)話EJB和實(shí)體EJB,會(huì)話EJB向客戶提供一定的服務(wù),如:特定的商業(yè)邏輯、數(shù)據(jù)庫(kù)查詢等;而實(shí)體EJB則代表數(shù)據(jù)對(duì)象,通常代表的是數(shù)據(jù)表記錄集的一行,一個(gè)實(shí)體EJB可以同時(shí)與多個(gè)客戶進(jìn)行交互。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù): EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC、XML、JMS3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介CORBA體系結(jié)構(gòu):核心ORB3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介CORBA技術(shù):nCORBA(Common Object Request Broker Architecture)是一個(gè)分
50、布式對(duì)象體系結(jié)構(gòu),它獨(dú)立于平臺(tái),也獨(dú)立于語(yǔ)言。n在這個(gè)體系結(jié)構(gòu)中,一個(gè)對(duì)象可以被本機(jī)上的客戶或遠(yuǎn)程客戶通過(guò)方法激活來(lái)存取??蛻簦ㄒ粋€(gè)對(duì)象或應(yīng)用)無(wú)須知道被調(diào)用對(duì)象(稱為服務(wù)對(duì)象)的運(yùn)行環(huán)境,也無(wú)須知道實(shí)現(xiàn)這個(gè)對(duì)象的編程語(yǔ)言,客戶只要知道服務(wù)對(duì)象的邏輯地址和提供的接口。n這種互操作性的關(guān)鍵是IDL(Interface Definition Language、接口定義語(yǔ)言),IDL說(shuō)明對(duì)象接口中的方法,這些方法可以被其它對(duì)象(或應(yīng)用)激活。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù): EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC、XML、JM
51、S3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介RMI技術(shù):nRMI(Remote Method Invoke)是一種被EJB使用的更底層的協(xié)議,正如其名字所表示的那樣,RMI協(xié)議調(diào)用遠(yuǎn)程對(duì)象上方法,使用序列化方式在客戶端和服務(wù)器端的對(duì)象之間傳遞數(shù)據(jù)。RMI和CORBA相比:n兩者的關(guān)鍵差別在于語(yǔ)言環(huán)境,Java RMI是一個(gè)分布式對(duì)象計(jì)算的純Java解決方案(如,在Java RMI中,對(duì)象的接口用Java定義,而不是用IDL);n其次,CORBA沒(méi)有定義安全服務(wù),而Java RMI繼承了Java的安全性;n再者,CORBA有不同的實(shí)現(xiàn),不同的獨(dú)立軟件開發(fā)商的不同實(shí)現(xiàn)均有獨(dú)特性,這使得在不同平臺(tái)上的匹配比較困
52、難,而且不是所有CORBA產(chǎn)品開發(fā)商都支持所有平臺(tái),而幾乎所有平臺(tái)都支持Java虛擬機(jī),因此Java RMI具有更高的可移植性。如果客戶對(duì)象和服務(wù)對(duì)象都基于Java虛擬機(jī),那么Java RMI是分布對(duì)象計(jì)算的最好選擇。n最后,IIOP( Internet Inter-ORB Protocol )已經(jīng)提供了Java RMI和CORBA的互操作能力,而且兩者的發(fā)展有互相借鑒的趨勢(shì)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù): EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC、XML、JMS3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JSP技術(shù):nJSP是服務(wù)器
53、端的腳本語(yǔ)言,是以Java和Servlet為基礎(chǔ)開發(fā)而成的動(dòng)態(tài)網(wǎng)頁(yè)生成技術(shù),它的底層實(shí)現(xiàn)是Java Servlet。nJSP(Java Server Pages)頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端所請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。n特點(diǎn):面向?qū)ο?,跨平臺(tái),和Servlet一樣穩(wěn)定,可以使用Servlet提供的API,克服了Servlet的缺點(diǎn)。n應(yīng)用:一般和JavaBeans結(jié)合使用,從而將界面表現(xiàn)和業(yè)務(wù)邏輯分離。 3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JSP和ASP的比較(一):相似:n都是運(yùn)行于服務(wù)器端的腳本語(yǔ)言
54、,兩者都是動(dòng)態(tài)網(wǎng)頁(yè)生成技術(shù)。n這兩項(xiàng)技術(shù)都使用HTML來(lái)決定網(wǎng)頁(yè)的版面,都是在HTML 代碼中混合某種程序代碼,由語(yǔ)言引擎解釋執(zhí)行程序代碼。HTML代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來(lái)描述處理邏輯。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JSP和ASP的比較(二):不同:nJSP是由Sun推出的一項(xiàng)技術(shù),是基于JavaServlet以及整個(gè)java體系的Web開發(fā)技術(shù),利用這一技術(shù)可以建立先進(jìn)、安全和跨平臺(tái)的動(dòng)態(tài)網(wǎng)站。ASP是MS公司推出的技術(shù),只能在MS的平臺(tái)上運(yùn)行,無(wú)法實(shí)現(xiàn)跨平臺(tái),也無(wú)安全性保障。nASP下的編程語(yǔ)言是 VBScript 之類的腳本語(yǔ)言,而JSP 使用的是Java。nAS
55、P 與 JSP 還有一個(gè)更為本質(zhì)的區(qū)別:兩種語(yǔ)言引擎用完全不同的方式處理頁(yè)面中嵌入的程序代碼。在 ASP 下, VBScript 代碼被 ASP 引擎解釋執(zhí)行;在 JSP 下,代碼被編譯成 Servlet 并由 Java 虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì) JSP 頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù): EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC、XML、JMS3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介Java Servlet技術(shù):nServlets(Server Applet):是一些運(yùn)行于Web服務(wù)器端的Java小程序
56、,用來(lái)擴(kuò)展Web服務(wù)器的功能。nServlet是一種擴(kuò)展Web服務(wù)器功能的技術(shù),而且由于它是用Java編寫的,所以能夠訪問(wèn)整個(gè)Java API庫(kù),包括用于訪問(wèn)企業(yè)數(shù)據(jù)庫(kù)的JDBC API。nServlets用特定的Java解決方案替代了其它的Web服務(wù)器方編程模式(如:CGI,ISAPI等),因而繼承了Java的所有特性(跨平臺(tái)、多線程、OO)。n用來(lái)編寫Servlets的Servlet API對(duì)于服務(wù)器環(huán)境和協(xié)議沒(méi)有任何特殊的要求,所以Servlets具有很強(qiáng)的可移植性,也不像利用CGI程序等其它方式那樣具有性能局限。nServlets也同樣使用HTTP協(xié)議與客戶端進(jìn)行通訊,所以有時(shí)也稱Se
57、vlets為“HTTP Servlets”。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介Java Servlet和JSP的比較:相似:n兩者都是基于Java的技術(shù),所以都繼承了Java的所有特性(跨平臺(tái)、多線程、OO ),都可以使用Java強(qiáng)大的API。n兩者工作方式相似:JSP代碼先被JSP容器轉(zhuǎn)換為Servlet代碼再編譯為類。n兩者在J2EE體系結(jié)構(gòu)中的工作層次相同,都負(fù)責(zé)與客戶端的連接。不同:n編程方式不同。Servlets是一些運(yùn)行于Web服務(wù)器端的Java小程序;而JSP是腳本,編寫起來(lái)更簡(jiǎn)單容易。n應(yīng)用目的不同。Servlet主要用于從客戶端接收請(qǐng)求信息,而JSP主要負(fù)責(zé)將服務(wù)器端信息傳送到客
58、戶端。n使用JSP的真正意義在于:可以將界面設(shè)計(jì)和業(yè)務(wù)邏輯設(shè)計(jì)分離。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù): EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC、XML、JMS3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JavaBean技術(shù):nJavaBean是基于Java的組件模型,有點(diǎn)類似于Microsoft的COM組件。nJavaBean通過(guò)Java虛擬機(jī)(Java Virtual Machine)執(zhí)行,運(yùn)行JavaBean最小的需求是JDK1.1或者以上的版本。n在Java平臺(tái)中,通過(guò)JavaBean可以無(wú)限擴(kuò)充Java程序的功能,通過(guò)JavaB
59、ean的組合可以快速的生成新的應(yīng)用程序。n對(duì)于程序員來(lái)說(shuō),最好的一點(diǎn)就是JavaBean可以實(shí)現(xiàn)代碼的重復(fù)利用,另外對(duì)于程序的易維護(hù)性等等也有很重大的意義。nJavaBean傳統(tǒng)的應(yīng)用在于可視化的領(lǐng)域,如AWT(Abstract Windowing Toolkit,抽象窗口工具包 )下的應(yīng)用。自從Jsp誕生后,JavaBean更多的應(yīng)用在了非可視化領(lǐng)域,在服務(wù)器端應(yīng)用方面表現(xiàn)出來(lái)了越來(lái)越強(qiáng)的生命力。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù): EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean、JDBC、XML、JMS3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JDB
60、C技術(shù):nJDBC是一組API,定義了用來(lái)訪問(wèn)數(shù)據(jù)源的標(biāo)準(zhǔn)Java類庫(kù),使用這個(gè)類庫(kù)可以以一種標(biāo)準(zhǔn)的方法、方便地訪問(wèn)數(shù)據(jù)庫(kù)資源。nJDBC對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)具有平臺(tái)無(wú)關(guān)性。 nJDBC API為訪問(wèn)不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的途徑,象ODBC一樣,JDBC對(duì)開發(fā)者屏蔽了一些細(xì)節(jié)問(wèn)題。nJDBC的目標(biāo)是使應(yīng)用程序開發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)系統(tǒng),這樣就使得程序員無(wú)需對(duì)特定的數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)有過(guò)多的了解,從而大大簡(jiǎn)化和加快了開發(fā)過(guò)程。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介nJ2EE核心技術(shù): EJB、 CORBA、 RMI、JSP、 Java Servlet、JavaBean
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技手段在提升生態(tài)環(huán)保意識(shí)中的應(yīng)用前景分析
- 生物學(xué)生志愿服務(wù)活動(dòng)計(jì)劃
- 未來(lái)網(wǎng)絡(luò)安全技術(shù)防范與人的雙重保護(hù)
- 電商物流的智能化升級(jí)路徑
- 家具返利合同范本
- 開展班級(jí)拓展活動(dòng)的意義計(jì)劃
- 構(gòu)建小學(xué)生的良好品德體系計(jì)劃
- 科技發(fā)展趨勢(shì)下的商業(yè)模式變革與機(jī)遇
- 幼兒園教研學(xué)期工作計(jì)劃的師德修養(yǎng)與職業(yè)精神
- 科技助力下的網(wǎng)絡(luò)文學(xué)創(chuàng)新與突破
- 專題06 現(xiàn)代文閱讀(原卷版)2015-2024單招考試語(yǔ)文(四川真題)
- 校園超市招商政策
- 《數(shù)據(jù)采集技術(shù)》課件-網(wǎng)絡(luò)爬蟲
- 網(wǎng)絡(luò)地址轉(zhuǎn)換NAT
- 【MOOC】營(yíng)養(yǎng)學(xué)-武漢大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 工資薪金管理制度模版(3篇)
- 廣東省茂名市高州市五校聯(lián)考2024-2025學(xué)年高一上學(xué)期12月月考化學(xué)試題(含答案)
- 高等數(shù)學(xué)(二)(山東聯(lián)盟)知到智慧樹章節(jié)測(cè)試課后答案2024年秋青島科技大學(xué)
- 《高級(jí)算法設(shè)計(jì)》課件 第2章 高級(jí)圖算法
- 小兒泌尿系統(tǒng)感染的護(hù)理
- DB14∕T 92-2010 M5、M15車用甲醇汽油
評(píng)論
0/150
提交評(píng)論