版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2部分高級(jí)軟件工程主題開(kāi)發(fā)模式與平臺(tái)第一頁(yè),共188頁(yè)。主要內(nèi)容第2節(jié)J2EE概述第3節(jié).NET概述第4節(jié)J2EE與.NET比較第1節(jié)軟件開(kāi)發(fā)模式概述第二頁(yè),共188頁(yè)。第一節(jié)
軟件開(kāi)發(fā)模式概述第三頁(yè),共188頁(yè)。
軟件開(kāi)發(fā)模式概述
一、網(wǎng)絡(luò)計(jì)算模式
二、軟件開(kāi)發(fā)模式
三、Web架構(gòu)——MVC
第四頁(yè),共188頁(yè)。一、網(wǎng)絡(luò)計(jì)算模式網(wǎng)絡(luò)模型(networkmodel)是指網(wǎng)絡(luò)上計(jì)算機(jī)處理信息的方式,又被稱為網(wǎng)絡(luò)計(jì)算模式。在不同計(jì)算模式的網(wǎng)絡(luò)上,其數(shù)據(jù)或者信息的處理方式是不同的。第五頁(yè),共188頁(yè)。一、網(wǎng)絡(luò)計(jì)算模式以大型機(jī)為中心的計(jì)算模式-分時(shí)共享模式(time-sharing)特點(diǎn):許多用戶共享CPU資源和數(shù)據(jù)存儲(chǔ)功能,終端只用于命令的輸入和結(jié)果的顯示以服務(wù)器為中心的計(jì)算模式-資源共享(resource-sharing)模式特點(diǎn):共享共同的應(yīng)用,如文件服務(wù)器,打印服務(wù)器客戶/服務(wù)器(Client/Server)模式特點(diǎn):系統(tǒng)使用了客戶和服務(wù)器雙方智能、資源和計(jì)算能力來(lái)執(zhí)行一個(gè)特定的任務(wù)。提出服務(wù)請(qǐng)求的一方稱為“客戶機(jī)”,而提供服務(wù)的一方則稱為“服務(wù)器”。應(yīng)用軟件安裝在:前端(即客戶部分)/后端(服務(wù)器部分)瀏覽器/服務(wù)器(
Browser/Server)模式特點(diǎn):B/S結(jié)構(gòu)的客戶端采用了人們普遍使用的瀏覽器,它是一個(gè)簡(jiǎn)單的、低廉的、以Web技術(shù)為基礎(chǔ)的“瘦”C/S系統(tǒng)。應(yīng)用軟件安裝在:后端(服務(wù)器部分)對(duì)等(PeertoPeer,P2P)模式特點(diǎn):用戶和資源處于對(duì)等狀態(tài),分布式計(jì)算第六頁(yè),共188頁(yè)。客戶/服務(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)用用戶界面applicationtransportnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysicalrequestreply第七頁(yè),共188頁(yè)。客戶/服務(wù)器模式ServerClientClientClientClientClientClient單點(diǎn)失效性能瓶頸(計(jì)算、存儲(chǔ)資源受限,網(wǎng)絡(luò)擁塞等)第八頁(yè),共188頁(yè)。瀏覽器/服務(wù)器(B/S)模式(3層)WebServerBrowserBrowserBrowserDataServer第九頁(yè),共188頁(yè)。瀏覽器/服務(wù)器(B/S)模式(N層)WebServerBrowserBrowserBrowserDataServerApplicationServer中間件第十頁(yè),共188頁(yè)。瀏覽器/服務(wù)器(B/S)模式B/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ù)則根據(jù)查詢或查詢的條件返回相應(yīng)的數(shù)據(jù)結(jié)果給Web服務(wù)器,最后Web服務(wù)器再將結(jié)果翻譯成為HTML或各類腳本語(yǔ)言的格式,并傳送給客戶機(jī)上的瀏覽器,用戶通過(guò)瀏覽器即可瀏覽自己所需的結(jié)果。使用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)。第十一頁(yè),共188頁(yè)。對(duì)等模式
(PeertoPeer,P2P)PeerPeerPeerPeerPeerPeer將服務(wù)器的功能分散到客戶端,充分利用客戶端的計(jì)算、存儲(chǔ)、帶寬等資源無(wú)中心服務(wù)器Peer既是客戶端,又是服務(wù)器第十二頁(yè),共188頁(yè)。P2P的定義P2P通信模式中各方都具有相同的能力,其中任何一方都可以發(fā)起一個(gè)通信會(huì)話。在P2P通信過(guò)程中,每個(gè)通信節(jié)點(diǎn)同時(shí)具有服務(wù)器和客戶端的功能。P2P網(wǎng)絡(luò)中的節(jié)點(diǎn)間采用P2P通信模式,它是構(gòu)筑在現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)設(shè)施上的一個(gè)重疊網(wǎng)絡(luò)(OverlayNetwork)第十三頁(yè),共188頁(yè)。Internet邏輯的P2P網(wǎng)絡(luò)(overlay)第十四頁(yè),共188頁(yè)。P2P連接資源的方式基于目錄服務(wù)器使用中心目錄服務(wù)器用于資源發(fā)布和定位如SETI@home、Napster、Groove等完全分布式無(wú)任何中心服務(wù)器,資源的定位使用泛洪如Gnutella層次結(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、Skype結(jié)構(gòu)化P2P將資源和其存儲(chǔ)位置關(guān)聯(lián)起來(lái)如Chord、CAN、Tapestry、Pastry等目標(biāo):實(shí)現(xiàn)資源共享過(guò)程:發(fā)布定位使用或者下載第十五頁(yè),共188頁(yè)?;谀夸浄?wù)器:NapsterIhavexyz.mp3!PublishInsert(xyz.mp3,)...目錄服務(wù)器第十六頁(yè),共188頁(yè)?;谀夸浄?wù)器:NapsterWhereisxyz.mp3?QueryReplyFetchSearch(xyz.mp3)目錄服務(wù)器查找簡(jiǎn)單,高效目錄服務(wù)器是瓶頸,單一故障點(diǎn),不具可擴(kuò)展性第十七頁(yè),共188頁(yè)。完全分布式:GnutellaIhavexyz.mp3Ihavexyz.mp3Whereisxyz.mp3?QueryReplyFetch簡(jiǎn)單,無(wú)單點(diǎn)瓶頸泛洪加重網(wǎng)絡(luò)負(fù)擔(dān)不保證查找結(jié)果第十八頁(yè),共188頁(yè)。層次P2P網(wǎng)絡(luò):KazaAIhavexyz.mp3!PublishInsert(xyz.mp3,)...SupperNode第十九頁(yè),共188頁(yè)。層次P2P網(wǎng)絡(luò):KazaAWhereisxyz.mp3?QueryRepliesSupperNodeSearch(xyz.mp3)Fetch考慮了節(jié)點(diǎn)能力的不同,對(duì)泛洪有所改善查找時(shí)間和范圍具有不確定性第二十頁(yè),共188頁(yè)。P2P網(wǎng)絡(luò)的特征P2P網(wǎng)絡(luò)是一個(gè)應(yīng)用層網(wǎng)絡(luò),一般由網(wǎng)絡(luò)邊緣節(jié)點(diǎn)構(gòu)成,充分利用資源網(wǎng)絡(luò)的擴(kuò)展性好資源分布在各個(gè)節(jié)點(diǎn)中,而不是集中在一個(gè)服務(wù)器上進(jìn)行管理,不存在單點(diǎn)瓶頸問(wèn)題節(jié)點(diǎn)之間可直接建立連接,交互共享資源需要解決的問(wèn)題:動(dòng)態(tài)性、安全性、可管理性…第二十一頁(yè),共188頁(yè)。二、應(yīng)用軟件開(kāi)發(fā)模型1、計(jì)算機(jī)應(yīng)用軟件的一般特點(diǎn):
大多數(shù)應(yīng)用,從PC機(jī)上的簡(jiǎn)單報(bào)表程序到大型機(jī)上的復(fù)雜計(jì)算,都由三部分組成:用戶界面部分:表示層應(yīng)用邏輯部分:業(yè)務(wù)邏輯層數(shù)據(jù)訪問(wèn)部分:數(shù)據(jù)訪問(wèn)層2、應(yīng)用軟件開(kāi)發(fā)模型的變遷過(guò)程:
單層兩層三層N層1231231231234第二十二頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式
MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第二十三頁(yè),共188頁(yè)。MVC基本概念:模型-視圖-控制器(1)MVC(Model-View-Controller)將一個(gè)交互式應(yīng)用程序分成3個(gè)組件模型:包含核心功能和數(shù)據(jù)(核心業(yè)務(wù)邏輯)視圖:向用戶顯示信息控制器:處理用戶輸入變更-傳播機(jī)制保證了模型和用戶界面之間的一致性第二十四頁(yè),共188頁(yè)。MVC基本概念:模型-視圖-控制器(2)目的將人機(jī)交互從核心功能中分離出來(lái)(M)模型對(duì)用戶來(lái)說(shuō)是透明的,用戶只需要觀察視圖(V)用戶與模型的交互通過(guò)控制器提供的安全方法來(lái)實(shí)現(xiàn)(C)第二十五頁(yè),共188頁(yè)。MVC應(yīng)用領(lǐng)域具有靈活人-機(jī)界面的交互式應(yīng)用程序可以靈活選擇不同的信息顯示方式可以靈活選擇用戶的輸入方式針對(duì)不同的用戶角色,提供不同的用戶界面不同用戶具有不同權(quán)限,操作的方式也有所不同第二十六頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第二十七頁(yè),共188頁(yè)。模型(Model)封裝了內(nèi)核功能和數(shù)據(jù)業(yè)務(wù)邏輯(軟件的核心)數(shù)據(jù)以及訪問(wèn)它們的函數(shù)(視圖組件使用)執(zhí)行特定應(yīng)用程序處理的過(guò)程(控制器代表用戶調(diào)用)模型對(duì)于用戶來(lái)說(shuō)是不可見(jiàn)的(M與V獨(dú)立)模型獨(dú)立于特定輸出表示或者輸入方式(M與C獨(dú)立)用戶只能通過(guò)控制器操作模型(C是M與V之間的橋梁)第二十八頁(yè),共188頁(yè)。變更-傳播機(jī)制(1)一個(gè)模型可對(duì)應(yīng)多個(gè)視圖如果用戶通過(guò)一個(gè)視圖的控制器改變了模型中的數(shù)據(jù),那么依賴于該數(shù)據(jù)的其他視圖也應(yīng)該反映出這樣的變化一旦模型的數(shù)據(jù)發(fā)生了變化,模型需要通知所有相關(guān)的視圖做出相應(yīng)的變化維護(hù)數(shù)據(jù)的一致性第二十九頁(yè),共188頁(yè)。變更-傳播機(jī)制(2)工作原理:模型維護(hù)了一個(gè)表所有視圖還有一些控制器在這個(gè)表中登記了對(duì)變更通知的需求模型狀態(tài)的改變將觸發(fā)變更-傳播機(jī)制,每個(gè)在表中登記的視圖和控制器都會(huì)收到變更通知這樣的方式可以通過(guò)觀察者(Observer)設(shè)計(jì)模式完成第三十頁(yè),共188頁(yè)。視圖(View)向用戶顯示信息不同的視圖使用不同的方法呈現(xiàn)信息每個(gè)視圖組件都有一個(gè)更新函數(shù),這個(gè)函數(shù)被模型變更通知激活這個(gè)函數(shù)被激活(此時(shí)模型已經(jīng)改變)后,將使得視圖重新和模型一致在初始化階段,視圖向模型登記請(qǐng)求變更通知(表)從模型獲得數(shù)據(jù)通過(guò)狀態(tài)查詢函數(shù)實(shí)現(xiàn)例如:定時(shí)刷新第三十一頁(yè),共188頁(yè)??刂破鳎–ontroller)每個(gè)視圖有一個(gè)相關(guān)的控制器組件(一一對(duì)應(yīng))控制器組件接受事件,并翻譯成輸入事件如何發(fā)送到控制器由用戶界面平臺(tái)決定事件被翻譯成為對(duì)模型或者視圖的請(qǐng)求如果控制器的行為依賴于模型的狀態(tài),那么控制器也需要向模型登記請(qǐng)求變更通知例如:用戶點(diǎn)擊按鈕,按鈕的事件響應(yīng)函數(shù)將采取相應(yīng)的措施處理用戶要求用戶僅僅通過(guò)控制器與系統(tǒng)交互第三十二頁(yè),共188頁(yè)。MVC組件類型的關(guān)系和功能第三十三頁(yè),共188頁(yè)。注意視圖與控制器是一一對(duì)應(yīng)的關(guān)系模型與視圖是一對(duì)多的關(guān)系變更-傳播機(jī)制保持模型與視圖、控制器之間狀態(tài)的一致性第三十四頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第三十五頁(yè),共188頁(yè)。動(dòng)態(tài)特征(1):MVC系統(tǒng)的初始化過(guò)程MainprogramModelViewControllermodelviewmodel,viewcontrollerstart第三十六頁(yè),共188頁(yè)。動(dòng)態(tài)特征(2):MVC系統(tǒng)的初始化過(guò)程創(chuàng)建模型實(shí)例,并初始化其數(shù)據(jù)創(chuàng)建視圖對(duì)象,并用對(duì)模型的引用作為初始化參數(shù)之一視圖通過(guò)調(diào)用附屬過(guò)程支持變更-傳遞機(jī)制視圖創(chuàng)建控制器,此時(shí)將模型和視圖的引用作為參數(shù)傳遞給控制器初始化過(guò)程控制器通過(guò)調(diào)用附屬過(guò)程來(lái)支持變更-傳遞機(jī)制初始化完成,應(yīng)用程序開(kāi)始處理事件第三十七頁(yè),共188頁(yè)。動(dòng)態(tài)特征(3):
輸入導(dǎo)致模型變化,并觸發(fā)變更-傳遞機(jī)制notifyhandleEventControllerViewModelserviceupdateupdategetDatagetDatadisplay第三十八頁(yè),共188頁(yè)。動(dòng)態(tài)特征(4):
輸入導(dǎo)致模型變化,并觸發(fā)變更-傳遞機(jī)制控制器接受到事件,解釋事件并且啟動(dòng)模型的服務(wù)過(guò)程(handleEvent、service)模型執(zhí)行相應(yīng)的過(guò)程,并導(dǎo)致內(nèi)部狀態(tài)的變化(notify)模型調(diào)用其更新過(guò)程,向所有登記請(qǐng)求了變更-傳播機(jī)制的視圖和控制器發(fā)出通知(update)每個(gè)視圖從模型中讀取新數(shù)據(jù)并且重新顯示(getData)每個(gè)控制器修改自己的行為,比如禁用某個(gè)功能最初的控制器恢復(fù)控制并從事件處理過(guò)程返回第三十九頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第四十頁(yè),共188頁(yè)。MVC實(shí)現(xiàn)(1)設(shè)計(jì)并實(shí)現(xiàn)模型組件封裝內(nèi)核所需要的數(shù)據(jù)和功能確定模型的哪一部分應(yīng)該通過(guò)控制器向用戶顯示,提供訪問(wèn)待顯示數(shù)據(jù)的功能實(shí)現(xiàn)核心業(yè)務(wù)邏輯第四十一頁(yè),共188頁(yè)。MVC實(shí)現(xiàn)(2)實(shí)現(xiàn)變更-傳播機(jī)制采用觀察者(Observer)設(shè)計(jì)模式每個(gè)視圖和需要觀察模型變更的控制器都在模型中注冊(cè)自己的觀察者(表)模型中可以隨意添加和刪除觀察者實(shí)現(xiàn)通知各觀察者并改變其狀態(tài)的方法第四十二頁(yè),共188頁(yè)。MVC實(shí)現(xiàn)(3)設(shè)計(jì)并實(shí)現(xiàn)視圖設(shè)計(jì)視圖的外觀,并實(shí)現(xiàn)畫(huà)圖過(guò)程來(lái)將視圖顯示在屏幕上(需要使用用戶界面平臺(tái)的功能)實(shí)現(xiàn)更新過(guò)程來(lái)反映模型的變化可以簡(jiǎn)單地調(diào)用畫(huà)圖功能,但是不適應(yīng)模型頻繁變化的情況向更新過(guò)程提供一些參數(shù)來(lái)確定是否重畫(huà),以及重畫(huà)范圍可以通過(guò)累積變化的方式減少重畫(huà)的頻率還需要實(shí)現(xiàn)視圖的初始化過(guò)程支持變更-傳遞機(jī)制初始化控制器第四十三頁(yè),共188頁(yè)。MVC實(shí)現(xiàn)(4)設(shè)計(jì)并實(shí)現(xiàn)控制器對(duì)于每個(gè)視圖,指定回應(yīng)用戶動(dòng)作的系統(tǒng)行為控制器用一個(gè)專用的過(guò)程來(lái)接受并且解釋這些用戶動(dòng)作(事件)實(shí)現(xiàn)事件響應(yīng)函數(shù)第四十四頁(yè),共188頁(yè)。MVC實(shí)現(xiàn)(5)實(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ò)程第四十五頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第四十六頁(yè),共188頁(yè)。軟件體系結(jié)構(gòu):Architecture(1)迄今為止還沒(méi)有一個(gè)被大家所公認(rèn)的定義確定了系統(tǒng)整體結(jié)構(gòu)、層次劃分以及不同部分之間的協(xié)作等設(shè)計(jì)考慮是軟件設(shè)計(jì)過(guò)程中的第一個(gè)層次,常用于總體設(shè)計(jì)MVC是一種軟件體系結(jié)構(gòu)第四十七頁(yè),共188頁(yè)。軟件體系結(jié)構(gòu):Architecture(2)Kruchten指出,軟件體系結(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ù)在開(kāi)發(fā)環(huán)境中的組織第四十八頁(yè),共188頁(yè)。框架:Framework框架不是現(xiàn)成可用的應(yīng)用系統(tǒng),而是一個(gè)半成品,需要后來(lái)的開(kāi)發(fā)人員進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)體功能的應(yīng)用系統(tǒng)框架構(gòu)成了通用的、具有一般性的系統(tǒng)主體部分,二次開(kāi)發(fā)人員只是像做填空一樣,根據(jù)具體業(yè)務(wù),完成特定應(yīng)用系統(tǒng)中與眾不同的特殊部分框架比體系結(jié)構(gòu)更具體,更偏重于技術(shù)一般來(lái)說(shuō),確定框架后,軟件體系結(jié)構(gòu)也隨之確定,而對(duì)于同一軟件體系結(jié)構(gòu)(比如Struts是基于Web的MVC框架),可以通過(guò)多種框架來(lái)實(shí)現(xiàn)MVC不是框架第四十九頁(yè),共188頁(yè)。設(shè)計(jì)模式:DesignPattern設(shè)計(jì)模式研究的是單一設(shè)計(jì)問(wèn)題的解決方法構(gòu)思如何組合已有的組件,使其發(fā)揮出最大的功效描述問(wèn)題中出現(xiàn)的類和接口,以及它們之間的關(guān)系只是思想,不是代碼可由不同語(yǔ)言實(shí)現(xiàn),提高代碼的可重用性MVC不是設(shè)計(jì)模式第五十頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第五十一頁(yè),共188頁(yè)。MVC開(kāi)發(fā)方式(1)Java開(kāi)發(fā)WebApplicationJava開(kāi)發(fā)WebApplication有幾種符合MVC設(shè)計(jì)模式的開(kāi)發(fā)方式。
1:Jsp+Servlet+JavaBean(EJB)2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)3:TDK(Turbine,Velocity...)4:Xsp5:Jsp+Struts+JavaBean(EJB)6:SSH(Struts+Spring+Hibernate)
Hibernate是一個(gè)開(kāi)放源代碼的ORM(Object/RelationalMapping,對(duì)象關(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(ContainerManagedPersistence),完成數(shù)據(jù)持久化的重任。
第五十二頁(yè),共188頁(yè)。MVC開(kāi)發(fā)方式(2).NET開(kāi)發(fā)WebApplication.NET開(kāi)發(fā)WebApplication可以采用:
1:ASP.NETMVCFramework(ASP.NETMVC)
2:MonoRail(RC3)3:ASP.NET(MVC2)php開(kāi)發(fā)WebApplicationphp開(kāi)發(fā)WebApplication可以采用:
1.ZendframeworkPHP官方框架
2.fleaphp/Qeephp等國(guó)內(nèi)流行框架
3.CakePHP等國(guó)外流行框架
4.ThinkPHP等其他框架
第五十三頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第五十四頁(yè),共188頁(yè)。常見(jiàn)的MVC組件組件扮演著控制器Controller的角色。Struts:
Apache的,最流行的MVC組件
Struts2:Apache用Struts和
WebWork的組合出來(lái)的新產(chǎn)品,目前上升勢(shì)頭強(qiáng)勁
WebWork:這個(gè)可是老牌的MVC組件,后來(lái)組合成了Struts2,不過(guò)自身仍在發(fā)展
SpringMVC:SpringFramework自己整合自己Spring的優(yōu)勢(shì)推出的MVC組件,用戶也不少
JSF:這個(gè)是一個(gè)規(guī)范,Sun的和
Apache的都有各自的實(shí)現(xiàn)。用戶量很大,被眾多IDE支持。
JavaServerFaces(JSF)是一種用于構(gòu)建Web應(yīng)用程序的新標(biāo)準(zhǔn)Java框架。它提供了一種以組件為中心來(lái)開(kāi)發(fā)JavaWeb用戶界面的方法,從而簡(jiǎn)化了開(kāi)發(fā)。Tapestry:最徹底的MVC開(kāi)發(fā)框架,豐富的組件資源,重用性很高。第五十五頁(yè),共188頁(yè)。Model1:Jsp+JavaBean開(kāi)發(fā)模型從上圖可以看出,模型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è)開(kāi)發(fā)人員來(lái)說(shuō),這簡(jiǎn)直是一場(chǎng)噩夢(mèng)。所以,模型1不能滿足大型應(yīng)用的需要,但是對(duì)于小型應(yīng)用,因?yàn)樵撃P秃?jiǎn)單,不用涉及諸多要素,從而可以很好地滿足小型應(yīng)用的需要,所以在簡(jiǎn)單應(yīng)用中,可以考慮模型一。第五十六頁(yè),共188頁(yè)。Model1:Jsp+JavaBean開(kāi)發(fā)模型好處:程序的可讀性高,將復(fù)雜的程序代碼寫(xiě)在JavaBean之中,減少和網(wǎng)頁(yè)標(biāo)簽混合的情況??芍貜?fù)利用性高,由于通過(guò)JavaBean來(lái)封裝重要的商業(yè)邏輯運(yùn)算,不同的JSP可以調(diào)用許多共享性的組件,增加開(kāi)發(fā)效能。缺點(diǎn);缺乏流程控制。每一個(gè)JSP都要驗(yàn)證需求的參數(shù)正確性、確認(rèn)用戶身份權(quán)限、異常發(fā)生的處理,甚至還包含顯示斷的網(wǎng)頁(yè)編碼原則及語(yǔ)系的處理第五十七頁(yè),共188頁(yè)。Model2:MVC架構(gòu)的開(kāi)發(fā)模式這一模型結(jié)合了JSP和Servlet技術(shù),充分利用了JSP和Servlet兩種技術(shù)原有的優(yōu)勢(shì)。這個(gè)模型使用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ā)送給客戶。第五十八頁(yè),共188頁(yè)。Model2:MVC架構(gòu)的開(kāi)發(fā)模式優(yōu)點(diǎn):開(kāi)發(fā)流程更為明確:區(qū)別開(kāi)顯示端和商業(yè)邏輯端,美工設(shè)計(jì)人員和程序員能夠?qū)W⒂诒旧淼墓ぷ鳎欣诖笮拖到y(tǒng)的開(kāi)發(fā)。核心的程序管控:由Controller控制整個(gè)流程,可以減少JSP需要撰寫(xiě)許多條件判斷邏輯及流程管控等等的程序代碼。維護(hù)容易:不論是后端商業(yè)邏輯對(duì)象或間斷的網(wǎng)頁(yè)呈現(xiàn),都通過(guò)控制中心來(lái)掌控,如果有商業(yè)邏輯的變更,可以輕易的修改Model段的程序,而不用去修改相關(guān)的JSP文件。缺點(diǎn):學(xué)習(xí)時(shí)間較長(zhǎng):各家公司都有自己MVC架構(gòu),花更多的時(shí)間去熟悉了解他們的流程與概念。發(fā)時(shí)間較長(zhǎng):因?yàn)樾枰O(shè)計(jì)MVC個(gè)對(duì)象比吃的數(shù)據(jù)交換與方法,會(huì)需要更多的時(shí)間在系統(tǒng)設(shè)計(jì)之上。第五十九頁(yè),共188頁(yè)。舉例:購(gòu)物車程序EShop.jsp顯示商店所提供的商品目錄Cart.jsp顯示購(gòu)物車的內(nèi)容Checkout.jsp顯示用戶預(yù)購(gòu)買的物品清單和價(jià)格Book.java它是一個(gè)JavaBean內(nèi)容為書(shū)籍的屬性ShoppingServlet.java它除了新增、移出購(gòu)物車內(nèi)的物品和結(jié)賬的功能之外,并且也扮演流程控制的角色。它本身是Servlet。第六十頁(yè),共188頁(yè)。ServletAPI2.1中有一RequestDispatcher接口來(lái)做流程控制RequestDispatcher接口提供兩種方法:
publicvoidinclude(HttpServletRequest,HttpServletResponse)
將目前的請(qǐng)求服務(wù)轉(zhuǎn)交給另一個(gè)JSP頁(yè)面或是Servlet;publicvoidforward(HttpServletRequest,HttpServletResponse)將它的內(nèi)容一并包含到原來(lái)的Servlet中。第六十一頁(yè),共188頁(yè)。三、Web架構(gòu)——MVC模式MVC基本概念及應(yīng)用領(lǐng)域MVC主體結(jié)構(gòu)MVC動(dòng)態(tài)特征MVC實(shí)現(xiàn)軟件體系結(jié)構(gòu)、框架與設(shè)計(jì)模式MVC開(kāi)發(fā)方式常見(jiàn)的MVC組件應(yīng)用實(shí)例第六十二頁(yè),共188頁(yè)。網(wǎng)站設(shè)計(jì)中的MVC架構(gòu)控制層將顯示層得到的數(shù)據(jù),判斷交由哪個(gè)商業(yè)邏輯層作處理,然后再將結(jié)果交由顯示層,顯示出數(shù)據(jù)處理后的結(jié)果。MVC最主要的精神之一是Model和View的分離,網(wǎng)頁(yè)設(shè)計(jì)師和程序員能夠獨(dú)立工作,互不影響,從而增加了維護(hù)的效率。同時(shí)將商業(yè)邏輯層的數(shù)據(jù)處理建立成許多的組件,增加了程序的可重用性,一方面減輕了程序員的工作負(fù)擔(dān)和公司的開(kāi)發(fā)成本;另一方面增進(jìn)了網(wǎng)站功能擴(kuò)充的彈性。顯示層控制層業(yè)務(wù)邏輯層DataBase第六十三頁(yè),共188頁(yè)。應(yīng)用實(shí)例(1)需求有兩個(gè)窗口,每個(gè)窗口分別有一個(gè)標(biāo)簽和一個(gè)按鈕點(diǎn)擊其中一個(gè)窗口中的按鈕,可以使標(biāo)簽的字體增大,點(diǎn)擊另一個(gè)可以使其字體減小一個(gè)窗口對(duì)字體的改變必須立即反映在另一個(gè)窗口中目的采用MVC模式設(shè)計(jì)實(shí)現(xiàn)使用觀察者(Observer)設(shè)計(jì)模式模擬變更-傳播機(jī)制第六十四頁(yè),共188頁(yè)。應(yīng)用實(shí)例(2):類圖第六十五頁(yè),共188頁(yè)。應(yīng)用實(shí)例(3):Observer接口interfaceObserver{ //更新函數(shù) publicvoidupdate();}第六十六頁(yè),共188頁(yè)。應(yīng)用實(shí)例(4):M類classM{ privateintsize=20;//字體大小
//使字體變大
publicvoidenlarge(){ this.setSize(this.getSize()+5); }//使字體變小publicvoidabridge(){ this.setSize(this.getSize()-5);}第六十七頁(yè),共188頁(yè)。應(yīng)用實(shí)例(5):M類//觀察者隊(duì)列
privateList<Observer>observers=newArrayList<Observer>(); publicvoidaddObservers(Observerobserver){ this.observers.add(observer); } //當(dāng)模型有變更時(shí),通知所有觀察者改變相應(yīng)的視圖
publicvoidnotifyObservers(){ Iterator<Observer>iter=this.observers.iterator(); while(iter.hasNext()){ iter.next().update(); } } ……}第六十八頁(yè),共188頁(yè)。應(yīng)用實(shí)例(6):C1類classC1implementsActionListener{//一個(gè)控制器與一個(gè)視圖和一個(gè)模型對(duì)應(yīng)privateV1v1;privateMm;//構(gòu)造函數(shù)publicC1(V1v1,Mm){ this.m=m; this.v1=v1;}//向模型注冊(cè)此控制器對(duì)應(yīng)的視圖的觀察者publicvoidregister(){ this.m.addObservers(this.v1);}第六十九頁(yè),共188頁(yè)。應(yīng)用實(shí)例(7):C1類/***實(shí)現(xiàn)事件監(jiān)聽(tīng)器,*當(dāng)點(diǎn)擊按鈕時(shí),增大標(biāo)簽的字體*/publicvoidactionPerformed(ActionEvente){ this.m.enlarge(); this.m.notifyObservers();}……}第七十頁(yè),共188頁(yè)。應(yīng)用實(shí)例(8):V1類classV1implementsObserver{ JLabellabel=newJLabel("MVC"); JButtonbutton=newJButton("增大字體"); privateC1c1;//與視圖V1對(duì)應(yīng)的控制器//實(shí)現(xiàn)Observer接口,當(dāng)有變更時(shí),改變相應(yīng)視圖publicvoidupdate(){ Fontfont=newFont(this.label.getText(),c1.getM().getStyle(), c1.getM().getSize()); this.label.setFont(font);}第七十一頁(yè),共188頁(yè)。應(yīng)用實(shí)例(9):V1類publicV1(Mm){ //實(shí)例化一個(gè)鏈接此視圖和模型的控制器
c1=newC1(this,m); //注冊(cè)此視圖的觀察者到模型中
c1.register(); …… } ……}第七十二頁(yè),共188頁(yè)。應(yīng)用實(shí)例(10):主程序TestC2與V2的實(shí)現(xiàn)與C1和V1的實(shí)現(xiàn)相似publicclassTest{/***@paramargs*/publicstaticvoidmain(String[]args){ Mm=newM(); V1v1=newV1(m); V2v2=newV2(m);}}第七十三頁(yè),共188頁(yè)。第二節(jié)
J2EE概述第七十四頁(yè),共188頁(yè)。主要內(nèi)容J2EE的由來(lái)J2EE的組成第七十五頁(yè),共188頁(yè)。一、J2EE的由來(lái)傳統(tǒng)應(yīng)用程序模型Web應(yīng)用程序模型為什么需要J2EE什么是J2EE第七十六頁(yè),共188頁(yè)。1、傳統(tǒng)應(yīng)用程序模型(一)數(shù)據(jù)訪問(wèn)、表示和業(yè)務(wù)邏輯在一個(gè)應(yīng)用中代碼復(fù)用、代碼可維護(hù)性、代碼的修改十分困難應(yīng)用不是分布式的,不具有可伸縮性主機(jī)系統(tǒng)或單層結(jié)構(gòu):主機(jī)/終端模式第七十七頁(yè),共188頁(yè)。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ù)通過(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ù)數(shù)據(jù)模型通訊FatclientFatclient第七十八頁(yè),共188頁(yè)。2、Web應(yīng)用程序模型(一)傳統(tǒng)的Web應(yīng)用程序模型:三層分布式架構(gòu)第七十九頁(yè),共188頁(yè)。2、Web應(yīng)用程序模型(一)WWW瀏覽方式帶來(lái)的變化:“Browser-based”的客戶端與“Internetworking”計(jì)算方式向服務(wù)器端的集中轉(zhuǎn)化客戶端:業(yè)務(wù)數(shù)據(jù)模型與UI分開(kāi),更“瘦”業(yè)務(wù)邏輯在中間層,通過(guò):連接池,多線程可以處理多客戶端早期應(yīng)用編程困難且性能比較差:CGI(C/C++,VB,Perl等等),ISAPI,NSAPI(NetworkServiceAccessPointIdentifier
)傳統(tǒng)的Web應(yīng)用程序模型:三層分布式架構(gòu)第八十頁(yè),共188頁(yè)。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)要求。
第八十一頁(yè),共188頁(yè)。2、Web應(yīng)用程序模型(二)從1層到N層,得到的改進(jìn):每一層可以被單獨(dú)改變,而無(wú)需其它層的改變降低了部署與維護(hù)的開(kāi)銷,提高了靈活性、可伸縮性引入瘦客戶端,計(jì)算被集中至服務(wù)器端,使性能提高成為可能仍然存在的問(wèn)題:對(duì)企業(yè)級(jí)應(yīng)用開(kāi)發(fā)人員的要求太高:需要熟悉分布式協(xié)議(IIOP、HTTP、CGI、ISAPI、NSAPI),進(jìn)行一致性事務(wù)處理,負(fù)載平衡,考慮安全性……IIOP(InternetInter-ORBProtocol,互聯(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ǔ)言編寫(xiě)的分布式程序在因特網(wǎng)中可以實(shí)現(xiàn)彼此的交流溝通。N層計(jì)算模式的引入第八十二頁(yè),共188頁(yè)。2、Web應(yīng)用程序模型(三)應(yīng)用程序各部分之間松耦合,從而應(yīng)用程序各部分的更新相互獨(dú)立業(yè)務(wù)邏輯集中放在服務(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)第八十三頁(yè),共188頁(yè)。3、為什么需要J2EE在企業(yè)級(jí)應(yīng)用開(kāi)發(fā)中所面臨的而且必須解決的問(wèn)題:分布式可移植舊系統(tǒng)集成支持面向Web可裝配滿足企業(yè)計(jì)算要求一致性事務(wù)性安全性要有好的特性可伸縮可擴(kuò)展易維護(hù)第八十四頁(yè),共188頁(yè)。3、為什么需要J2EE
J2EE提供了一套完整的解決所有這些問(wèn)題的框架方案:提供了分布式、可移植構(gòu)件的框架為構(gòu)件與應(yīng)用服務(wù)器提供標(biāo)準(zhǔn)API簡(jiǎn)化了服務(wù)器端中間層構(gòu)件的設(shè)計(jì)第八十五頁(yè),共188頁(yè)。3、為什么需要J2EEJ2EE對(duì)開(kāi)發(fā)者和用戶來(lái)說(shuō)意味著:更短的開(kāi)發(fā)時(shí)間可重用構(gòu)件JSPEJB更簡(jiǎn)化的連接X(jué)ML,JDBC,RMI-IIOP第八十六頁(yè),共188頁(yè)。4、什么是J2EE
Openandstandardbasedplatformfordeveloping,deployingandmanagingn-tier,Web-enabled,server-centricenterpriseapplications開(kāi)放的、基于標(biāo)準(zhǔn)的平臺(tái),用以開(kāi)發(fā)、部署和管理N層結(jié)構(gòu)、面向Web的,以服務(wù)器為中心的企業(yè)級(jí)應(yīng)用第八十七頁(yè),共188頁(yè)。二、J2EE的組成WhatisJava2PlatformJ2EE的組成J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介
第八十八頁(yè),共188頁(yè)。1、WhatisJava2PlatformJava的版本歷史:從一種語(yǔ)言發(fā)展為一種平臺(tái)Java的前身是一種與平臺(tái)無(wú)關(guān)的語(yǔ)言-“OaK”,誕生于1991年Sun公司的一個(gè)研究項(xiàng)目,最初目的是為了應(yīng)用于消費(fèi)類電子設(shè)備的開(kāi)發(fā);1994年Internet開(kāi)始起步,1995年NetScape宣布把Java集成到其瀏覽器中,可執(zhí)行的Java代碼可以以Applet的形式在瀏覽器中運(yùn)行,Java開(kāi)始流行。Sun公司1996年1月發(fā)布JDK1.0,1997年2月發(fā)布JDK1.1,Java開(kāi)始在企業(yè)中應(yīng)用。1998年12月發(fā)布JDK1.2,即Java2平臺(tái),并于1999年6月經(jīng)集成重組后重新發(fā)布。目前JDK的流行版本為1.7。目前主要的Java平臺(tái)及特點(diǎn)如下:J2ME-Java2MicroEdition:用于創(chuàng)建嵌入式應(yīng)用程序的Java平臺(tái)(如PDA、儀表)。J2SE-Java2StandardEdition:用于創(chuàng)建典型的桌面與工作站應(yīng)用的Java平臺(tái)。J2EE-Java2EnterpriseEdition:用于創(chuàng)建可擴(kuò)縮的企業(yè)應(yīng)用的Java平臺(tái)。第八十九頁(yè),共188頁(yè)。2、J2EE的組成J2EE
J2EESpecification
J2EEReferenceImplementation
J2EECompatibilityTestSuite
J2EEBluePrints
第九十頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE架構(gòu):第九十一頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE容器和構(gòu)件:容器處理構(gòu)件處理分布性可伸縮性可用性事務(wù)性安全性生命周期管理表示JSP,Servlet,Applet業(yè)務(wù)邏輯EJB數(shù)據(jù)訪問(wèn)邏輯EJB第九十二頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):13種
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBCXML、JMS……第九十三頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介EJB—J2EE的基石:EJB(EnterpriseJavaBeans):EJB不是一個(gè)具體的產(chǎn)品,而是一個(gè)Java服務(wù)器端組件開(kāi)發(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)用程序開(kāi)發(fā)復(fù)雜性方面做了大量的工作,所以EJB程序員不必太擔(dān)心事務(wù)處理、多線程、資源管理等方面的問(wèn)題,可以專注于支持應(yīng)用所需的商業(yè)邏輯,而不用擔(dān)心周圍框架的實(shí)現(xiàn)問(wèn)題。EJB的使用增強(qiáng)了整個(gè)系統(tǒng)程序的可靠性、可管理性和可移植性。第九十四頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介EJB—J2EE的基石:EJB容器是:
EJB的運(yùn)行環(huán)境。它提供規(guī)范中定義的接口使EJB類訪問(wèn)所需的服務(wù)。容器廠商也可以在容器或服務(wù)器中提供額外服務(wù)的接口。它的責(zé)任包括:第九十五頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介EJB—J2EE的基石:EJB服務(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ù)服務(wù)的可訪問(wèn)。
EJB分為兩種:會(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)行交互。第九十六頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS……第九十七頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介CORBA體系結(jié)構(gòu):核心-ORB第九十八頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介CORBA技術(shù):CORBA(CommonObjectRequestBrokerArchitecture)是一個(gè)分布式對(duì)象體系結(jié)構(gòu),它獨(dú)立于平臺(tái),也獨(dú)立于語(yǔ)言。在這個(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ì)象的邏輯地址和提供的接口。這種互操作性的關(guān)鍵是IDL(InterfaceDefinitionLanguage、接口定義語(yǔ)言),IDL說(shuō)明對(duì)象接口中的方法,這些方法可以被其它對(duì)象(或應(yīng)用)激活。第九十九頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS……第一百頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介RMI技術(shù):RMI(RemoteMethodInvoke)是一種被EJB使用的更底層的協(xié)議,正如其名字所表示的那樣,RMI協(xié)議調(diào)用遠(yuǎn)程對(duì)象上方法,使用序列化方式在客戶端和服務(wù)器端的對(duì)象之間傳遞數(shù)據(jù)。RMI和CORBA相比:兩者的關(guān)鍵差別在于語(yǔ)言環(huán)境,JavaRMI是一個(gè)分布式對(duì)象計(jì)算的純Java解決方案(如,在JavaRMI中,對(duì)象的接口用Java定義,而不是用IDL);其次,CORBA沒(méi)有定義安全服務(wù),而JavaRMI繼承了Java的安全性;再者,CORBA有不同的實(shí)現(xiàn),不同的獨(dú)立軟件開(kāi)發(fā)商的不同實(shí)現(xiàn)均有獨(dú)特性,這使得在不同平臺(tái)上的匹配比較困難,而且不是所有CORBA產(chǎn)品開(kāi)發(fā)商都支持所有平臺(tái),而幾乎所有平臺(tái)都支持Java虛擬機(jī),因此JavaRMI具有更高的可移植性。如果客戶對(duì)象和服務(wù)對(duì)象都基于Java虛擬機(jī),那么JavaRMI是分布對(duì)象計(jì)算的最好選擇。最后,IIOP(
InternetInter-ORBProtocol)已經(jīng)提供了JavaRMI和CORBA的互操作能力,而且兩者的發(fā)展有互相借鑒的趨勢(shì)。第一百零一頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS……第一百零二頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JSP技術(shù):JSP是服務(wù)器端的腳本語(yǔ)言,是以Java和Servlet為基礎(chǔ)開(kāi)發(fā)而成的動(dòng)態(tài)網(wǎng)頁(yè)生成技術(shù),它的底層實(shí)現(xiàn)是JavaServlet。JSP(JavaServerPages)頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端所請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。特點(diǎn):面向?qū)ο螅缙脚_(tái),和Servlet一樣穩(wěn)定,可以使用Servlet提供的API,克服了Servlet的缺點(diǎn)。應(yīng)用:一般和JavaBeans結(jié)合使用,從而將界面表現(xiàn)和業(yè)務(wù)邏輯分離。第一百零三頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JSP和ASP的比較(一):相似:都是運(yùn)行于服務(wù)器端的腳本語(yǔ)言,兩者都是動(dòng)態(tài)網(wǎng)頁(yè)生成技術(shù)。這兩項(xiàng)技術(shù)都使用HTML來(lái)決定網(wǎng)頁(yè)的版面,都是在HTML代碼中混合某種程序代碼,由語(yǔ)言引擎解釋執(zhí)行程序代碼。HTML代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來(lái)描述處理邏輯。第一百零四頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JSP和ASP的比較(二):不同:JSP是由Sun推出的一項(xiàng)技術(shù),是基于JavaServlet以及整個(gè)java體系的Web開(kāi)發(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ú)安全性保障。ASP下的編程語(yǔ)言是VBScript之類的腳本語(yǔ)言,而JSP使用的是Java。ASP與JSP還有一個(gè)更為本質(zhì)的區(qū)別:兩種語(yǔ)言引擎用完全不同的方式處理頁(yè)面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執(zhí)行;在JSP下,代碼被編譯成Servlet并由Java虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì)JSP頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。第一百零五頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS……第一百零六頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JavaServlet技術(shù):Servlets(=Server+Applet):是一些運(yùn)行于Web服務(wù)器端的Java小程序,用來(lái)擴(kuò)展Web服務(wù)器的功能。Servlet是一種擴(kuò)展Web服務(wù)器功能的技術(shù),而且由于它是用Java編寫(xiě)的,所以能夠訪問(wèn)整個(gè)JavaAPI庫(kù),包括用于訪問(wèn)企業(yè)數(shù)據(jù)庫(kù)的JDBCAPI。Servlets用特定的Java解決方案替代了其它的Web服務(wù)器方編程模式(如:CGI,ISAPI等),因而繼承了Java的所有特性(跨平臺(tái)、多線程、OO)。用來(lái)編寫(xiě)Servlets的ServletAPI對(duì)于服務(wù)器環(huán)境和協(xié)議沒(méi)有任何特殊的要求,所以Servlets具有很強(qiáng)的可移植性,也不像利用CGI程序等其它方式那樣具有性能局限。Servlets也同樣使用HTTP協(xié)議與客戶端進(jìn)行通訊,所以有時(shí)也稱Sevlets為“HTTPServlets”。第一百零七頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JavaServlet和JSP的比較:相似:兩者都是基于Java的技術(shù),所以都繼承了Java的所有特性(跨平臺(tái)、多線程、OO),都可以使用Java強(qiáng)大的API。兩者工作方式相似:JSP代碼先被JSP容器轉(zhuǎn)換為Servlet代碼再編譯為類。兩者在J2EE體系結(jié)構(gòu)中的工作層次相同,都負(fù)責(zé)與客戶端的連接。不同:編程方式不同。Servlets是一些運(yùn)行于Web服務(wù)器端的Java小程序;而JSP是腳本,編寫(xiě)起來(lái)更簡(jiǎn)單容易。應(yīng)用目的不同。Servlet主要用于從客戶端接收請(qǐng)求信息,而JSP主要負(fù)責(zé)將服務(wù)器端信息傳送到客戶端。使用JSP的真正意義在于:可以將界面設(shè)計(jì)和業(yè)務(wù)邏輯設(shè)計(jì)分離。第一百零八頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS……第一百零九頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JavaBean技術(shù):JavaBean是基于Java的組件模型,有點(diǎn)類似于Microsoft的COM組件。JavaBean通過(guò)Java虛擬機(jī)(JavaVirtualMachine)執(zhí)行,運(yùn)行JavaBean最小的需求是JDK1.1或者以上的版本。在Java平臺(tái)中,通過(guò)JavaBean可以無(wú)限擴(kuò)充Java程序的功能,通過(guò)JavaBean的組合可以快速的生成新的應(yīng)用程序。對(duì)于程序員來(lái)說(shuō),最好的一點(diǎn)就是JavaBean可以實(shí)現(xiàn)代碼的重復(fù)利用,另外對(duì)于程序的易維護(hù)性等等也有很重大的意義。JavaBean傳統(tǒng)的應(yīng)用在于可視化的領(lǐng)域,如AWT(AbstractWindowingToolkit,抽象窗口工具包)下的應(yīng)用。自從Jsp誕生后,JavaBean更多的應(yīng)用在了非可視化領(lǐng)域,在服務(wù)器端應(yīng)用方面表現(xiàn)出來(lái)了越來(lái)越強(qiáng)的生命力。第一百一十頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS……第一百一十一頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JDBC技術(shù):JDBC是一組API,定義了用來(lái)訪問(wèn)數(shù)據(jù)源的標(biāo)準(zhǔn)Java類庫(kù),使用這個(gè)類庫(kù)可以以一種標(biāo)準(zhǔn)的方法、方便地訪問(wèn)數(shù)據(jù)庫(kù)資源。JDBC對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)具有平臺(tái)無(wú)關(guān)性。JDBCAPI為訪問(wèn)不同的數(shù)據(jù)庫(kù)提供了一種統(tǒng)一的途徑,象ODBC一樣,JDBC對(duì)開(kāi)發(fā)者屏蔽了一些細(xì)節(jié)問(wèn)題。JDBC的目標(biāo)是使應(yīng)用程序開(kāi)發(fā)人員使用JDBC可以連接任何提供了JDBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)系統(tǒng),這樣就使得程序員無(wú)需對(duì)特定的數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)有過(guò)多的了解,從而大大簡(jiǎn)化和加快了開(kāi)發(fā)過(guò)程。第一百一十二頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS……第一百一十三頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介XML技術(shù):XML(ExtensibleMarkupLanguage)是一種可以用來(lái)定義其它標(biāo)記語(yǔ)言的語(yǔ)言,被用來(lái)在不同的商務(wù)過(guò)程中共享數(shù)據(jù)。XML的發(fā)展和Java是相互獨(dú)立的,但是它和Java具有的相同目標(biāo)即平臺(tái)獨(dú)立性。通過(guò)將Java和XML的組合,可以得到一個(gè)完美的具有平臺(tái)獨(dú)立性的解決方案。J2EE平臺(tái)全面支持和實(shí)施XML,這種強(qiáng)大的組合可使XML具備跨平臺(tái)的兼容性,甚至用于對(duì)XML代碼進(jìn)行語(yǔ)法檢查和調(diào)試的工具也可與平臺(tái)無(wú)關(guān)。第一百一十四頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS、……第一百一十五頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介JMS技術(shù):
JMS是一種基于Java的技術(shù),因此是平臺(tái)無(wú)關(guān)的。它為消息服務(wù)定義了通用Java語(yǔ)言接口,支持最常見(jiàn)的消息傳遞模型(發(fā)布/訂閱和點(diǎn)到點(diǎn))。通過(guò)對(duì)JMS(Java消息服務(wù))API的訪問(wèn)可實(shí)現(xiàn)面向消息的通信。JMS通常用來(lái)實(shí)現(xiàn)異構(gòu)系統(tǒng)之間的松散集成。第一百一十六頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介*關(guān)于消息技術(shù):
消息系統(tǒng)的特點(diǎn):
-消息是異步的。-允許不同的應(yīng)用程序之間進(jìn)行通訊。-消息應(yīng)用程序之間是對(duì)等的,服務(wù)器與客戶機(jī)之間沒(méi)有明顯的界限。消息的生產(chǎn)者可以消費(fèi)消息,消費(fèi)消息的應(yīng)用程序也可以生產(chǎn)消息。第一百一十七頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介*關(guān)于消息技術(shù):
消息系統(tǒng)的優(yōu)勢(shì):
-與平臺(tái)無(wú)關(guān),與在網(wǎng)絡(luò)上所處的位置無(wú)關(guān)。-是可伸縮,可擴(kuò)展的。需更大的吞吐量,只需添加硬件即可??芍С?jǐn)?shù)萬(wàn)臺(tái)客戶機(jī),每秒鐘可處理事件的數(shù)目可達(dá)幾萬(wàn)。-在異構(gòu)的環(huán)境中可以很好地工作。-是健壯的,發(fā)送接受可以失敗,網(wǎng)絡(luò)也可以失敗,這時(shí)MessagingSystem可以繼續(xù)執(zhí)行它的職責(zé)。第一百一十八頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE其它核心技術(shù):
EJB、CORBA、RMI、JSP、JavaServlet、JavaBean、JDBC、
XML、JMS、……幾個(gè)對(duì)應(yīng)于幾種服務(wù)的企業(yè)級(jí)API:
JNDI(JavaNamingandDirectoryInterface)、
JMAPI(JavaManagementAPI)、
JTS/JTA(JavaTransactionService/API)、
JavaSecurityAPI。第一百一十九頁(yè),共188頁(yè)。3、J2EE架構(gòu)及核心技術(shù)簡(jiǎn)介J2EE核心技術(shù)中最常用的技術(shù):
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBC、XML、JMS、……開(kāi)發(fā)大型企業(yè)級(jí)應(yīng)用:
異構(gòu)、分布、數(shù)據(jù)交換、數(shù)據(jù)共享……第一百二十頁(yè),共188頁(yè)。第三節(jié)
.NET概述第一百二十一頁(yè),共188頁(yè)。.NET的起源COMCOM+DCOM.NETMTS199319971999第一百二十二頁(yè),共188頁(yè)。.NET概述Microsoft.NET是MicrosoftXMLWeb服務(wù)平臺(tái)。XMLWeb服務(wù)允許應(yīng)用程序通過(guò)Internet進(jìn)行通訊和共享數(shù)據(jù),而不管采用的操作系統(tǒng)、設(shè)備或編程語(yǔ)言是否相同。Microsoft.NET平臺(tái)提供創(chuàng)建XMLWeb服務(wù)并將這些服務(wù)集成在一起所需要的功能。Microsoft.NET平臺(tái)上Web服務(wù)是關(guān)鍵第一百二十三頁(yè),共188頁(yè)。.NET的目標(biāo)跨平臺(tái)的交互,多種語(yǔ)言支持代碼重用自動(dòng)管理資源類型安全錯(cuò)誤處理消除DLLhell安全第一百二十四頁(yè),共188頁(yè)??缙脚_(tái)的交互,多種語(yǔ)言支持.NET平臺(tái)支持許多程序設(shè)計(jì)語(yǔ)言,每種語(yǔ)言都要有自己的編譯器用A語(yǔ)言寫(xiě)的例程可以調(diào)用B語(yǔ)言寫(xiě)的例程A語(yǔ)言的一個(gè)模塊可以定義一個(gè)變量,該變量的類型在B中定義是一個(gè)class,A中用該變量可以調(diào)用B中的相應(yīng)功能.如果A、B都是面向?qū)ο蟮恼Z(yǔ)言,A中的一個(gè)類可以繼承B中的一個(gè)類有A語(yǔ)言寫(xiě)的例程觸發(fā)的異常,如果A語(yǔ)言不能夠處理可以傳遞給用B語(yǔ)言寫(xiě)的調(diào)用者,用B語(yǔ)言自己的異常處理機(jī)制處理異常為使用.NET,程序員不需要學(xué)習(xí)一種全新的語(yǔ)言
第一百二十五頁(yè),共188頁(yè)。代碼重用原來(lái)的應(yīng)用在.NET環(huán)境不需要用新語(yǔ)言重寫(xiě),可以在.NET直接使用幾百萬(wàn)行的COBOL代碼,只做一些porting的工作,就可以在.NET環(huán)境下重復(fù)使用第一百二十六頁(yè),共188頁(yè)。資源自動(dòng)管理自動(dòng)分配內(nèi)存,自動(dòng)取消內(nèi)存分配(Garbagecollector)Runtime自動(dòng)處理對(duì)象layout并管理對(duì)象的references。當(dāng)該對(duì)象不再使用的時(shí)候自動(dòng)釋放。內(nèi)存自動(dòng)管理解決了兩個(gè)最常見(jiàn)的應(yīng)用錯(cuò)誤,memoryleaks和invalidmemoryreferences.第一百二十七頁(yè),共188頁(yè)。類型安全每一種數(shù)據(jù)結(jié)構(gòu)在.NET支持的所有語(yǔ)言中有相同的layout這意味著某些代碼可以使用定義在其它語(yǔ)言中的類型和實(shí)例第一百二十八頁(yè),共188頁(yè)。錯(cuò)誤處理debugging期間,調(diào)試人員能夠在不同語(yǔ)言寫(xiě)成的模塊之間自由地、無(wú)縫地來(lái)回移動(dòng).NET提供結(jié)構(gòu)的異常處理,類似于C++或Java中的情況第一百二十九頁(yè),共188頁(yè)。DLLhell不同的應(yīng)用能共享某些DLL,安裝一個(gè)新的應(yīng)用可能覆蓋一個(gè)已經(jīng)存在的應(yīng)用依賴的某個(gè)DLL,可能導(dǎo)致老的應(yīng)用不能正常工作(DLLhell).刪除一個(gè)應(yīng)用比較復(fù)雜,經(jīng)常不能imperfectlydone.NET的命名機(jī)制可以避免名字沖突如果前例中新安裝的應(yīng)用程序確實(shí)重寫(xiě)了共享庫(kù),現(xiàn)有應(yīng)用程序可對(duì)該庫(kù)進(jìn)行修復(fù)。等現(xiàn)有應(yīng)用程序再次啟動(dòng)時(shí),它會(huì)檢查所有的共享文件。如果發(fā)現(xiàn)文件被更改,同時(shí)這些更改又是不兼容的,則它可以請(qǐng)求運(yùn)行時(shí)提取一個(gè)它可以使用的版本。得益于強(qiáng)大的安全系統(tǒng),運(yùn)行時(shí)可以安全地執(zhí)行該操作,這樣應(yīng)用程序就完成了本身的修復(fù)工作。第一百三十頁(yè),共188頁(yè)。安全根據(jù)組件來(lái)源的不同(Internet,企業(yè)網(wǎng)絡(luò),本地計(jì)算機(jī)),不同可管理組件被授予不同級(jí)別的trust。這樣可管理組件可以或者不可以執(zhí)行文件操作、注冊(cè)表訪問(wèn)操作、或其他一些敏感功能。Runtime增強(qiáng)了代碼安全性。用戶信任一個(gè)嵌入在網(wǎng)頁(yè)中的執(zhí)行單元能夠顯示動(dòng)畫(huà)、播放歌曲,但不能訪問(wèn)用戶的個(gè)人數(shù)據(jù)、文件系統(tǒng)或網(wǎng)絡(luò).第一百三十一頁(yè),共188頁(yè)。.NET的基本元素智能終端開(kāi)發(fā)工具服務(wù)器XMLWEB服務(wù)第一百三十二頁(yè),共188頁(yè)。第一百三十三頁(yè),共188頁(yè)。智能終端智能終端應(yīng)用軟件和操作系統(tǒng)使得PC和其他智能計(jì)算設(shè)備能夠使用XMLWeb服務(wù),允許在任何地點(diǎn)、任何時(shí)間訪問(wèn)XMLWeb服務(wù)。通過(guò)MicrosoftWindows?XP,WindowsXPEmbedded,WindowsCE.NET,Microsoft正在創(chuàng)建下一代軟件終端,使得任何時(shí)間、任何地點(diǎn)的連接都可以實(shí)現(xiàn).NET框架管理的安全運(yùn)行環(huán)境允許開(kāi)發(fā)者創(chuàng)建能在許多智能設(shè)備上運(yùn)行的客戶端應(yīng)用第一百三十四頁(yè),共188頁(yè)。XMLWeb服務(wù)直接通過(guò)智能客戶端應(yīng)用使用能夠和其他XMLWeb服務(wù)聯(lián)合使用第一百三十五頁(yè),共188頁(yè)。服務(wù)器Microsoft提供服務(wù)器基礎(chǔ)設(shè)施
MicrosoftWindows?2000服務(wù)器系列
.NET企業(yè)服務(wù)器部署、管理、協(xié)調(diào)XMLWeb服務(wù)XMLWeb服務(wù)通過(guò)服務(wù)器對(duì)XML的深層支持使用.NET平臺(tái)需要靈活,可靠的服務(wù)器基礎(chǔ)設(shè)施集成了XML支持的安全的、可擴(kuò)充的服務(wù)器給.NET提供宿主和部署第一百三十六頁(yè),共188頁(yè)。開(kāi)發(fā)工具M(jìn)icrosoftVisualStudio.NET選擇合適的語(yǔ)言編寫(xiě)實(shí)現(xiàn)代碼把應(yīng)用封裝為XMLWeb服務(wù)。VisualStudio.NET自動(dòng)產(chǎn)生把應(yīng)用程序變成XMLWeb服務(wù)所需要的XML和SOAP接口。開(kāi)發(fā)者集中精力在應(yīng)用邏輯上重用已有的XMLWeb服務(wù)。VisualStudio.NET為開(kāi)發(fā)者提供了在自己的應(yīng)用或服務(wù)中調(diào)用已有XMLWeb服務(wù)的功能。第一百三十七頁(yè),共188頁(yè)。.NET平臺(tái)第一百三十八頁(yè),共188頁(yè)。.NET平臺(tái)基礎(chǔ)設(shè)施框架和工具積木塊服務(wù)CommonLanguageRuntime統(tǒng)一的類庫(kù)VisualStudio.NET經(jīng)常調(diào)用的國(guó)際互聯(lián)網(wǎng)服務(wù)代碼更新,查詢服務(wù),Messenger,.NETMyServices.NET企業(yè)服務(wù)器設(shè)備運(yùn)行.NET應(yīng)用的各種設(shè)備第一百三十九頁(yè),共188頁(yè)。.Net框架.NET框架是.NET平臺(tái)的編程模型.NET框架是在Microsoft.NET平臺(tái)上進(jìn)行開(kāi)發(fā)的基礎(chǔ),.NET框架以及針對(duì)設(shè)備的.NET框架簡(jiǎn)化版為XMLWeb服務(wù)和其他應(yīng)用程序提供了一個(gè)高效安全的開(kāi)發(fā)環(huán)境,并全面支持XML。管理許多垂直的細(xì)節(jié),使得開(kāi)發(fā)人員把精力集中在編寫(xiě)應(yīng)用問(wèn)題本身的事務(wù)邏輯代碼上.NET框架的核心技術(shù)為:CLR、類庫(kù)、ASP.NET及ADO.NET。不依賴于具體的程序設(shè)計(jì)語(yǔ)言支持軟件重用
第一百四十頁(yè),共188頁(yè)。.NET框架ASPVBFormsMFC&ATLWindowsAPI框架提供統(tǒng)一的編程模型MFC:MicrosoftFondationClasses
,微軟件基礎(chǔ)類庫(kù)。ATL,ActiveTemplateLibrary活動(dòng)模板庫(kù),是一種微軟程序庫(kù),支持利用C++語(yǔ)言編寫(xiě)ASP代碼以及其它ActiveX程序。通過(guò)活動(dòng)模板庫(kù),可以建立COM組件,然后通過(guò)ASP頁(yè)面中的腳本對(duì)COM對(duì)象進(jìn)行調(diào)用。第一百四十一頁(yè),共188頁(yè)。
第一百四十二頁(yè),共188頁(yè)。CLS(CommonLanguageSpecification)-公共語(yǔ)言規(guī)范定義.NET語(yǔ)言的公共特性包含有關(guān)于數(shù)據(jù)類型存儲(chǔ)、對(duì)象等的信息已經(jīng)提交給歐洲計(jì)算機(jī)制造商協(xié)會(huì)(ECMA)標(biāo)準(zhǔn)化(ECMA-335)目前只存在Windows平臺(tái)的,正在開(kāi)發(fā)其他平臺(tái)(Linux,FreeBSD)的framework版本.第一百四十三頁(yè),共188頁(yè)。CLR(commonlanguageruntime)提供了多語(yǔ)言執(zhí)行環(huán)境,可以執(zhí)行用任何.NET語(yǔ)言編寫(xiě)的程序,使得組件和XMLWeb服務(wù)的開(kāi)發(fā)不再受編程語(yǔ)言的限制。目前,可以用來(lái)編寫(xiě).NET應(yīng)用程序的編程語(yǔ)言不下20種,如C++、VisualBasic.NET、Jscript、C#、COBOL、Eiffel、Perl、Python、Smalltalk等等。一個(gè)程序第一步編譯為微軟中間語(yǔ)言(MISL)MSIL被編譯為目標(biāo)平臺(tái)的機(jī)器代碼。MSIL定義了CLR()的指令集CLR引入了一些能提高應(yīng)用程序運(yùn)行可靠性的技術(shù)(比如消除了內(nèi)存泄漏)
第一百四十四頁(yè),共188頁(yè)。CLR的功能語(yǔ)言集成加強(qiáng)安全內(nèi)存管理進(jìn)程管理線程管理版本管理…
…第一百四十五頁(yè),共188頁(yè)。CLR的交互把所有的軟件都映射到.NET對(duì)象模型。經(jīng)過(guò)編譯,隱藏了類的原來(lái)編寫(xiě)語(yǔ)言是什么的信息C++C#Eiffel對(duì)象模型平臺(tái)編譯器…第一百四十六頁(yè),共188頁(yè)。VB編譯器匯編代碼視圖C#編譯器中間語(yǔ)言代碼C++編譯器JIT(實(shí)時(shí))編譯器Ngen(NativeImageGenerator)CommonLanguageRuntime操作系統(tǒng)第一百四十七頁(yè),共188頁(yè)。編譯器不產(chǎn)生本地代碼,而是生成一個(gè)與處理器無(wú)關(guān)的中間語(yǔ)言MSIL–MicrosoftIntermediateLanguage不同語(yǔ)言之間的集成在MSIL層上實(shí)現(xiàn)IL代碼執(zhí)行前需要通過(guò)JIT編譯為本地機(jī)器代碼
獨(dú)立于硬件平臺(tái)為設(shè)備提供了CompactFrameworkMicrosoftIL-中間語(yǔ)言第一百四十八頁(yè),共188頁(yè)。從IL代碼生成本地可執(zhí)行代碼輸出代碼依賴于CPU類型操作系統(tǒng)以及版本命令行開(kāi)關(guān)JIT編譯器第一百四十九頁(yè),共188頁(yè)。交互性問(wèn)題Eiffel和C++允許多重繼承;.NET對(duì)象模型(如同Java,C#andVisualBasic.NET)只允許一個(gè)類從一個(gè)類繼承用戶可以申明一個(gè)Eiffel的LIST[G]類描述任意類型G的對(duì)象,不需要說(shuō)明G是什么。之后可以用類定義類型LIST[INTEGER],LIST[EMPLOYEE],甚至LIST[LIST[INTEGER]]。C++的templates可達(dá)到同樣的目標(biāo)。.NET對(duì)象還不具有數(shù)組在VisualBasic從1開(kāi)始,在C中從0開(kāi)始。第一百五十頁(yè),共188頁(yè)。交互性問(wèn)題在.NET中,名字“C++”不僅表示語(yǔ)言,還表示兩樣?xùn)|西UnmanagedC++和ManagedC++.來(lái)自兩種語(yǔ)言的類能共存在一個(gè)應(yīng)用中Unmanaged類將編譯為普通目標(biāo)代碼,但不
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美術(shù)專業(yè)繪畫(huà)題庫(kù)及答案
- 2026黑龍江齊齊哈爾市建華區(qū)消防大隊(duì)政府專職消防員招聘11人備考題庫(kù)附答案
- 中共自貢市貢井區(qū)委社會(huì)工作部2025年新興領(lǐng)域黨建工作專員招聘參考題庫(kù)附答案
- 四川省政府政務(wù)服務(wù)和公共資源交易服務(wù)中心及所屬事業(yè)單位2025年下半年公開(kāi)選調(diào)工作人員考試備考題庫(kù)必考題
- 宜黃縣2025年教育體育局所屬事業(yè)單位公開(kāi)選調(diào)工作人員考試備考題庫(kù)附答案
- 浙江國(guó)企招聘-2025杭州錢(qián)塘新區(qū)建設(shè)投資集團(tuán)有限公司第三次公開(kāi)招聘工作人員5人考試備考題庫(kù)附答案
- 瑞金市2025年公開(kāi)招聘城市社區(qū)工作者【46人】備考題庫(kù)附答案
- 蒼溪縣2026年上半年機(jī)關(guān)事業(yè)單位公開(kāi)考調(diào)工作人員的(80人)參考題庫(kù)必考題
- 陜西選調(diào)生2026年崗位在哪兒看備考題庫(kù)附答案
- 2026重慶農(nóng)商銀行秋招筆試題及答案
- 《鯉魚(yú)的遇險(xiǎn)》讀書(shū)分享
- 融媒體中心黨支部2025年前三季度黨建工作總結(jié)范文
- 從2025上半年宏觀經(jīng)濟(jì)及酒類景氣指數(shù)看酒類發(fā)展趨勢(shì)報(bào)告
- 2025急診監(jiān)護(hù)室CRRT相關(guān)知識(shí)考試試題及答案
- 雨水收集利用方案
- 自動(dòng)扶梯應(yīng)急預(yù)案演練計(jì)劃(3篇)
- 1000立方米高性能聚甲基丙稀酰亞胺(PMI)泡沫新材料技改項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)備案
- 動(dòng)物福利與動(dòng)物倫理課件
- 寧夏科技經(jīng)費(fèi)管理辦法
- 擒敵拳教學(xué)課件
- (高清版)DB11∕T 2436-2025 寄生蜂類天敵繁育與應(yīng)用技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論