版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章軟件體系結(jié)構(gòu)風(fēng)格分布式體系結(jié)構(gòu)1分布式軟件體系結(jié)構(gòu)產(chǎn)生背景在集中式計(jì)算技術(shù)時(shí)代廣泛使用的是大型機(jī)/小型機(jī)計(jì)算模型。它是通過(guò)一臺(tái)物理上與宿主機(jī)相連接的非智能終端來(lái)實(shí)現(xiàn)宿主機(jī)上的應(yīng)用程序。20世紀(jì)80年代以后,集中式結(jié)構(gòu)逐漸被以PC機(jī)為主的微機(jī)網(wǎng)絡(luò)所取代。個(gè)人計(jì)算機(jī)和工作站的采用,永遠(yuǎn)改變了協(xié)作計(jì)算模型,從而導(dǎo)致了分散的個(gè)人計(jì)算模型的產(chǎn)生。2分布式軟件體系結(jié)構(gòu)產(chǎn)生背景它們構(gòu)建在大的或小的網(wǎng)絡(luò)環(huán)境及某種組合上,形成了分布式系統(tǒng)。在分布式系統(tǒng)中,數(shù)據(jù)、過(guò)程、接口等構(gòu)件被分布到網(wǎng)絡(luò)的多個(gè)端點(diǎn),支持這些構(gòu)件所需的計(jì)算也部署到分布環(huán)境的計(jì)算機(jī)上。3分布式系統(tǒng)是當(dāng)前軟件開(kāi)發(fā)的重要方向分布式軟件系統(tǒng)直接反映了現(xiàn)實(shí)世界中的分別性,例如當(dāng)前許多業(yè)務(wù)處理流程通常呈現(xiàn)一種分布式運(yùn)作方式。改進(jìn)某些應(yīng)用程序的運(yùn)行性能,使它們比單進(jìn)程的集中式更具有效率。軟件的分別性能充分利用額外的計(jì)算資源分布式系統(tǒng)增強(qiáng)了信息的互聯(lián)互通和各主體之間的協(xié)作關(guān)系,增強(qiáng)了整個(gè)系統(tǒng)的計(jì)算能力4分布式系統(tǒng)是當(dāng)前軟件開(kāi)發(fā)的重要方向增強(qiáng)了系統(tǒng)的可伸縮性和容錯(cuò)能力分布式系統(tǒng),尤其是基于網(wǎng)絡(luò)的體系結(jié)構(gòu),可共享異地昂貴的外部設(shè)備,把一些應(yīng)用構(gòu)件和服務(wù)委托在具有處理屬性的主機(jī)上運(yùn)行5三類分布式系統(tǒng)局域網(wǎng)文件服務(wù)器結(jié)構(gòu)客戶/服務(wù)器體系結(jié)構(gòu)(2層和N層)基于Web的計(jì)算6一般系統(tǒng)的主要層次數(shù)據(jù)存儲(chǔ)層數(shù)據(jù)處理層應(yīng)用邏輯層表現(xiàn)邏輯層表現(xiàn)層7局域網(wǎng)文件服務(wù)器體系結(jié)構(gòu)服務(wù)器僅裝載了數(shù)據(jù)層,系統(tǒng)應(yīng)用的其他層都在客戶端實(shí)現(xiàn)例如,Access數(shù)據(jù)庫(kù)存儲(chǔ)在服務(wù)器上,但每臺(tái)使用數(shù)據(jù)庫(kù)的計(jì)算機(jī)必須安裝Access應(yīng)用程序,并從那里執(zhí)行。8局域網(wǎng)文件服務(wù)器體系結(jié)構(gòu)當(dāng)用戶發(fā)送一個(gè)請(qǐng)求給文件服務(wù)器時(shí),文件服務(wù)器會(huì)從數(shù)據(jù)庫(kù)中找到相應(yīng)的表,傳送給客戶端,同時(shí)對(duì)所選表加鎖,直到客戶端返回表為止。客戶端采用本地程序?qū)Ρ磉M(jìn)行修改、讀取或其他處理,然后再把表返回文件服務(wù)器。9文件服務(wù)器體系結(jié)構(gòu)的適用領(lǐng)域文件服務(wù)器體系結(jié)構(gòu)僅對(duì)較少的小型數(shù)據(jù)庫(kù)應(yīng)用是可行的。10文件服務(wù)器體系結(jié)構(gòu)缺點(diǎn)客戶端和服務(wù)器之間需要移動(dòng)大量不必要的數(shù)據(jù),降低了應(yīng)用性能客戶端必須相當(dāng)健壯??蛻舳俗隽藥缀跛械墓ぷ鳎冶仨氂凶銐虻拇疟P空間來(lái)存儲(chǔ)下載的表容易破壞數(shù)據(jù)的完整性對(duì)環(huán)境的變化及用戶需求變革的適應(yīng)性差,一旦發(fā)生變化,客戶端和服務(wù)器端的應(yīng)用程序都必須修改,增加了維護(hù)的工作量11客戶機(jī)/服務(wù)器體系結(jié)構(gòu)客戶機(jī)/服務(wù)器(Client/Server)是一種廣泛流行的分布計(jì)算軟件體系結(jié)構(gòu),經(jīng)歷了三種結(jié)構(gòu)的演化,兩層分布式表現(xiàn)結(jié)構(gòu)、兩層分布式數(shù)據(jù)結(jié)構(gòu)和N層分布式數(shù)據(jù)和應(yīng)用結(jié)構(gòu)12分布式表現(xiàn)結(jié)構(gòu)為了克服文件服務(wù)器結(jié)構(gòu)中的客戶端的超量負(fù)載和網(wǎng)絡(luò)間大數(shù)據(jù)量傳輸,同時(shí)改進(jìn)結(jié)構(gòu)的動(dòng)態(tài)適應(yīng)性,把應(yīng)用邏輯層和數(shù)據(jù)處理層從客戶端剝離出來(lái),配置在服務(wù)器端,構(gòu)成了分布式表現(xiàn)的C/S體系結(jié)構(gòu)。應(yīng)用邏輯或數(shù)據(jù)發(fā)生變化時(shí),應(yīng)修改服務(wù)器端的應(yīng)用程序13分布式表現(xiàn)結(jié)構(gòu)利于基于文件服務(wù)器體系結(jié)構(gòu)的現(xiàn)存系統(tǒng)的改造利用易于使這些系統(tǒng)的有效生命期得到延長(zhǎng)14兩層分布式數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)和數(shù)據(jù)處理放在服務(wù)器上,應(yīng)用邏輯、表現(xiàn)邏輯和表現(xiàn)層放在客戶端。是經(jīng)典的兩層C/S體系結(jié)構(gòu)。充分挖掘使用了客戶端的計(jì)算能力,并使得數(shù)據(jù)庫(kù)維護(hù)方便。15C/S的基本概念C/S軟件體系結(jié)構(gòu)是基于資源不對(duì)等,且為實(shí)現(xiàn)共享而提出來(lái)的,是20世紀(jì)90年代成熟起來(lái)的技術(shù),C/S體系結(jié)構(gòu)定義了工作站如何與服務(wù)器相連,以實(shí)現(xiàn)數(shù)據(jù)和應(yīng)用分布到多個(gè)處理機(jī)上。C/S體系結(jié)構(gòu)有三個(gè)主要組成部分:數(shù)據(jù)庫(kù)服務(wù)器、客戶應(yīng)用程序和網(wǎng)絡(luò)。16C/S的體系結(jié)構(gòu)17服務(wù)器的任務(wù)分配數(shù)據(jù)庫(kù)安全性的要求;數(shù)據(jù)庫(kù)訪問(wèn)并發(fā)性的控制;數(shù)據(jù)庫(kù)前端的客戶應(yīng)用程序的全局?jǐn)?shù)據(jù)完整性規(guī)則;數(shù)據(jù)庫(kù)的備份與恢復(fù)。18客戶端的任務(wù)分配提供用戶與數(shù)據(jù)庫(kù)交互的界面;向數(shù)據(jù)庫(kù)服務(wù)器提交用戶請(qǐng)求并接收來(lái)自數(shù)據(jù)庫(kù)服務(wù)器的信息;利用客戶應(yīng)用程序?qū)Υ嬖谟诳蛻舳说臄?shù)據(jù)執(zhí)行應(yīng)用邏輯要求。19C/S的處理流程20C/S體系結(jié)構(gòu)的優(yōu)點(diǎn)C/S體系結(jié)構(gòu)具有強(qiáng)大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡(jiǎn)單,易于人們理解和接受。系統(tǒng)的客戶應(yīng)用程序和服務(wù)器構(gòu)件分別運(yùn)行在不同的計(jì)算機(jī)上,系統(tǒng)中每臺(tái)服務(wù)器都可以適合各構(gòu)件的要求,這對(duì)于硬件和軟件的變化顯示出極大的適應(yīng)性和靈活性,而且易于對(duì)系統(tǒng)進(jìn)行擴(kuò)充和縮小。21C/S體系結(jié)構(gòu)的優(yōu)點(diǎn)系統(tǒng)中的功能構(gòu)件充分隔離客戶應(yīng)用程序的開(kāi)發(fā)集中于數(shù)據(jù)的顯示和分析數(shù)據(jù)庫(kù)服務(wù)器的開(kāi)發(fā)則集中于數(shù)據(jù)的管理不必在每一個(gè)新的應(yīng)用程序中都要對(duì)一個(gè)DBMS進(jìn)行編碼。將大的應(yīng)用處理任務(wù)分布到許多通過(guò)網(wǎng)絡(luò)連接的低成本計(jì)算機(jī)上,以節(jié)約大量費(fèi)用。22C/S體系結(jié)構(gòu)的缺點(diǎn)開(kāi)發(fā)成本較高客戶端程序設(shè)計(jì)復(fù)雜信息內(nèi)容和形式單一用戶界面風(fēng)格不一,使用繁雜,不利于推廣使用軟件移植困難軟件維護(hù)和升級(jí)困難新技術(shù)不能輕易應(yīng)用23C/SN層體系結(jié)構(gòu)在客戶端和服務(wù)器之間加入一層或多層服務(wù)器。24第三章軟件體系結(jié)構(gòu)風(fēng)格三層客戶/服務(wù)器風(fēng)格25三層C/S風(fēng)格的體系結(jié)構(gòu)26三層C/S的處理流程處理流程27C/S的處理流程28三層C/S的物理結(jié)構(gòu)29三層C/S的優(yōu)點(diǎn)應(yīng)用的各層可以并行開(kāi)發(fā),可以選擇各自最適合的開(kāi)發(fā)語(yǔ)言。利用功能層有效地隔離開(kāi)表示層與數(shù)據(jù)層,未授權(quán)的用戶難以繞過(guò)功能層而利用數(shù)據(jù)庫(kù)工具或黑客手段去非法地訪問(wèn)數(shù)據(jù)層,為嚴(yán)格的安全管理奠定了堅(jiān)實(shí)的基礎(chǔ)。30三層C/S的優(yōu)點(diǎn)允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對(duì)獨(dú)立性,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性。允許更靈活有效地選用相應(yīng)的平臺(tái)和硬件系統(tǒng),使之在處理負(fù)荷能力上與處理特性上分別適應(yīng)于結(jié)構(gòu)清晰的三層;并且這些平臺(tái)和各個(gè)組成部分可以具有良好的可升級(jí)性和開(kāi)放性。31三層C/S的優(yōu)點(diǎn)把應(yīng)用的業(yè)務(wù)邏輯與用戶界面分開(kāi),將商業(yè)邏輯放在經(jīng)過(guò)合理任務(wù)劃分與物理部署后的中間層應(yīng)用服務(wù)器上,從而客戶程序通過(guò)中間層簡(jiǎn)介訪問(wèn)數(shù)據(jù)庫(kù),客戶端修改不影響服務(wù)器客戶數(shù)可以充分?jǐn)U展,如果需要修改應(yīng)用程序代碼,只需對(duì)中間層應(yīng)用服務(wù)器進(jìn)行修改,而不用修改成千上萬(wàn)的客戶端應(yīng)用程序。32三層C/S要注意的問(wèn)題三層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強(qiáng),其作為整體來(lái)說(shuō)也達(dá)不到所要求的性能。設(shè)計(jì)時(shí)必須慎重考慮三層間的通信方法、通信頻度及數(shù)據(jù)量。這和提高各層的獨(dú)立性一樣是三層C/S結(jié)構(gòu)的關(guān)鍵問(wèn)題。33瀏覽器/服務(wù)器風(fēng)格瀏覽器/服務(wù)器(B/S)風(fēng)格就是上述三層應(yīng)用結(jié)構(gòu)的一種實(shí)現(xiàn)方式,其具體結(jié)構(gòu)為:瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器。34瀏覽器/服務(wù)器風(fēng)格B/S體系結(jié)構(gòu)主要是利用不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種腳本語(yǔ)言,用通用瀏覽器就實(shí)現(xiàn)了原來(lái)需要復(fù)雜的專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開(kāi)發(fā)成本。從某種程度上來(lái)說(shuō),B/S結(jié)構(gòu)是一種全新的軟件體系結(jié)構(gòu)。35瀏覽器/服務(wù)器風(fēng)格的體系結(jié)構(gòu)36瀏覽器/服務(wù)器風(fēng)格的優(yōu)點(diǎn)基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決。用戶在使用系統(tǒng)時(shí),僅僅需要一個(gè)瀏覽器就可運(yùn)行全部的模塊,真正達(dá)到了“零客戶端”的功能,很容易在運(yùn)行時(shí)自動(dòng)升級(jí)。37瀏覽器/服務(wù)器風(fēng)格的優(yōu)點(diǎn)B/S體系結(jié)構(gòu)還提供了異種機(jī)、異種網(wǎng)、異種應(yīng)用服務(wù)的聯(lián)機(jī)、聯(lián)網(wǎng)、統(tǒng)一服務(wù)的最現(xiàn)實(shí)的開(kāi)放性基礎(chǔ)。38瀏覽器/服務(wù)器風(fēng)格的缺點(diǎn)B/S體系結(jié)構(gòu)缺乏對(duì)動(dòng)態(tài)頁(yè)面的支持能力,沒(méi)有集成有效的數(shù)據(jù)庫(kù)處理功能。B/S體系結(jié)構(gòu)的系統(tǒng)擴(kuò)展能力差,安全性難以控制。39瀏覽器/服務(wù)器風(fēng)格的缺點(diǎn)采用B/S體系結(jié)構(gòu)的應(yīng)用系統(tǒng),在數(shù)據(jù)查詢等響應(yīng)速度上,要遠(yuǎn)遠(yuǎn)地低于C/S體系結(jié)構(gòu)。B/S體系結(jié)構(gòu)的數(shù)據(jù)提交一般以頁(yè)面為單位,數(shù)據(jù)的動(dòng)態(tài)交互性不強(qiáng),不利于在線事務(wù)處理(OLTP)應(yīng)用。OLTP是在線事務(wù)處理。比如收銀臺(tái)就像是OLTP,因?yàn)椴粩嘤袛?shù)據(jù)的錄入(或是修改);OLTP就是數(shù)據(jù)庫(kù)數(shù)據(jù)一直在變動(dòng)、更新的40第三章軟件體系結(jié)構(gòu)風(fēng)格公共對(duì)象請(qǐng)求代理結(jié)構(gòu)41對(duì)象管理結(jié)構(gòu)公共對(duì)象請(qǐng)求代理結(jié)構(gòu)CORBA(CommonObjectRequestBrokerArchitecture)是一種獨(dú)立于語(yǔ)言和軟件/硬件平臺(tái)的軟件構(gòu)件模型。42CORBA的構(gòu)成CORBA主要由對(duì)象請(qǐng)求代理、公共對(duì)象服務(wù)、通用設(shè)施和應(yīng)用接口組成。43對(duì)象請(qǐng)求代理ORB請(qǐng)求代理是建立基于分布式對(duì)象的應(yīng)用程序的基礎(chǔ),使得分布式對(duì)象之間能夠透明的發(fā)送請(qǐng)求或接受響應(yīng)在CORBA中,所有的通信都通過(guò)ORB進(jìn)行,因而無(wú)論一個(gè)對(duì)象是本地的還是遠(yuǎn)程的,對(duì)于與之進(jìn)行通信的其他對(duì)象來(lái)說(shuō)都是等價(jià)的CORBA保證了異構(gòu)和同構(gòu)環(huán)境中對(duì)象的可移植性和可互操作性O(shè)RB獨(dú)立于實(shí)現(xiàn)對(duì)象的特定平臺(tái)與技術(shù),客戶程序無(wú)需知道如何與對(duì)象通信、如何激活對(duì)象、對(duì)象如何實(shí)現(xiàn)、如何查找對(duì)象44對(duì)象請(qǐng)求代理ORB請(qǐng)求代理是建立基于分布式對(duì)象的應(yīng)用程序的基礎(chǔ),使得分布式對(duì)象之間能夠透明的發(fā)送請(qǐng)求或接受響應(yīng)對(duì)象請(qǐng)求代理ORB規(guī)定了分布對(duì)象的接口定義和語(yǔ)言映射、實(shí)現(xiàn)了對(duì)象間的透明通信和互操作,是分布對(duì)象的“軟總線”在ORB上定義了并發(fā)服務(wù)、命名服務(wù)、時(shí)間服務(wù)、安全服務(wù)等多樣公共服務(wù);通用設(shè)施定義了構(gòu)件框架,為領(lǐng)域?qū)ο筇峁┛墒褂玫墓蚕矸?wù),規(guī)定領(lǐng)域?qū)ο笥行f(xié)作所需的規(guī)則。45CORBA對(duì)象服務(wù)對(duì)象服務(wù)是對(duì)象管理體系結(jié)構(gòu)OMA定義的一系列獨(dú)立于應(yīng)用領(lǐng)域的服務(wù)CORBA服務(wù)是開(kāi)發(fā)分布式應(yīng)用所必需的模塊,用來(lái)提供基本ORB功能之上的更高系統(tǒng)級(jí)服務(wù)。主要處理核心系統(tǒng)級(jí)功能,如異步事件管理、持久性和事務(wù)、安全性、并發(fā)、命名、消息接發(fā)以及目錄服務(wù),這些服務(wù)要么是基于CORBA的應(yīng)用程序的基礎(chǔ),要么用于為應(yīng)用程序提供可互操作性,形成了構(gòu)件高級(jí)工具和業(yè)務(wù)功能的框架46CORBA對(duì)象服務(wù)對(duì)象服務(wù)的本職是將覆蓋對(duì)象整個(gè)生存期的對(duì)象管理任務(wù)標(biāo)準(zhǔn)化,例如對(duì)象服務(wù)提供的功能包括了創(chuàng)建對(duì)象、對(duì)象訪問(wèn)控制、查找對(duì)象、維持對(duì)象間關(guān)系等這種標(biāo)準(zhǔn)化可導(dǎo)致不同應(yīng)用程序的一致性,并提高軟件開(kāi)發(fā)者的生產(chǎn)率47CORBA對(duì)象服務(wù)對(duì)象服務(wù)規(guī)范包含在CORBA服務(wù)的公共服務(wù)規(guī)范中,服務(wù)規(guī)范主要處理各種服務(wù),并定義IDL接口,以及非形式化的描述這些接口的語(yǔ)義這些服務(wù)獨(dú)立于應(yīng)用領(lǐng)域,包括:命名服務(wù)、事件服務(wù)、持久對(duì)象、并發(fā)控制、外表化、許可機(jī)制、查詢、屬性、安全性、時(shí)間、對(duì)象收集、交易服務(wù)等服務(wù)的規(guī)范48CORBA通用設(shè)施通用設(shè)施(CommonFacilities)是IDL定義的、向終端用戶應(yīng)用程序提供的一組服務(wù)接口的集合。通用設(shè)施可用于大多數(shù)應(yīng)用領(lǐng)域,包括分布式文檔設(shè)施、打印設(shè)施、數(shù)據(jù)庫(kù)設(shè)施、電子郵件設(shè)施等。49CORBA應(yīng)用程序接口應(yīng)用程序?qū)ο笪挥谡麄€(gè)OMA參考模型的最高層。它們不是由OMG來(lái)標(biāo)準(zhǔn)化的,而是符合傳統(tǒng)上對(duì)應(yīng)用程序的認(rèn)識(shí)。應(yīng)用程序?qū)ο鬄榻K端用戶執(zhí)行特定的任務(wù),主要為某一類應(yīng)用或一個(gè)特定的應(yīng)用提供服務(wù)50對(duì)象管理結(jié)構(gòu)51CORBA的特點(diǎn)CORBA在基于網(wǎng)絡(luò)的分布式應(yīng)用環(huán)境下實(shí)現(xiàn)應(yīng)用軟件的集成。CORBA采用并吸收了面向?qū)ο蠹夹g(shù)、分布式計(jì)算技術(shù)和多層體系結(jié)構(gòu)技術(shù),實(shí)現(xiàn)了在分布式應(yīng)用環(huán)境中軟件的可復(fù)用性、可移植性和互操作性。52CORBA的特點(diǎn)提供“軟件總線”機(jī)制“軟件總線”機(jī)制簡(jiǎn)化了分布式應(yīng)用系統(tǒng)的復(fù)雜性。任何應(yīng)用只要提供按照CORBA規(guī)范定義的一組接口,就可以方便的集成到CORBA系統(tǒng)中。接口規(guī)范獨(dú)立于任何實(shí)現(xiàn)語(yǔ)言和環(huán)境。因此,客戶應(yīng)用和服務(wù)對(duì)象之間可以透明的交互運(yùn)行,實(shí)現(xiàn)應(yīng)用程序在“軟件總線”上的即插即用。53CORBA的特點(diǎn)使用代理擴(kuò)展了客戶/服務(wù)器的計(jì)算模型代理的作用是:完成對(duì)客戶發(fā)出的抽象服務(wù)請(qǐng)求的映射,自動(dòng)發(fā)現(xiàn)并找到服務(wù)器,自動(dòng)設(shè)定路由,實(shí)現(xiàn)服務(wù)器程序的執(zhí)行客戶和服務(wù)器完全分離。這和傳統(tǒng)的客戶/服務(wù)器方式有很大的不同——客戶不再與服務(wù)器直接聯(lián)系,而是與代理發(fā)生聯(lián)系。這樣,客戶和服務(wù)器都易于維護(hù)、修改54CORBA的特點(diǎn)使用IDL定義接口通過(guò)從IDL到具體編程語(yǔ)言映射的方式,CORBA對(duì)象可以用任何一種CORBA軟件開(kāi)發(fā)商所支持的語(yǔ)言,如C,C++,Java,Ada和Smalltalk等55CORBA的特點(diǎn)引入中間件作為事務(wù)代理,用于傳遞客戶提出的服務(wù)請(qǐng)求及得到的服務(wù)結(jié)果。實(shí)現(xiàn)客戶程序與對(duì)象實(shí)現(xiàn)之間的完全分離,客戶端程序不需要了解對(duì)象的具體實(shí)現(xiàn)、操作平臺(tái)和位置信息。提供“軟總線”功能,對(duì)于任何環(huán)境、任何程序設(shè)計(jì)語(yǔ)言,只要遵循接口規(guī)范,就可以集成到已有的分布式系統(tǒng)中來(lái)。56CORBA的特點(diǎn)采用接口技術(shù),使得軟件總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、代碼編寫以及維護(hù)等方面可以獨(dú)立進(jìn)行,同時(shí)又可以保證代碼的一致性。采用面向?qū)ο蠹夹g(shù),使得在軟件開(kāi)發(fā)中能很好的實(shí)現(xiàn)信息封裝、代碼復(fù)用。57基于Java平臺(tái)的分布式計(jì)算Sun公司于1995年正式推出Java技術(shù)。由于Java在網(wǎng)絡(luò)計(jì)算領(lǐng)域中的跨平臺(tái)優(yōu)勢(shì),Java已從一種編程語(yǔ)言逐漸發(fā)展成一個(gè)軟件開(kāi)發(fā)平臺(tái),被計(jì)算機(jī)業(yè)界廣泛接受,并被越來(lái)越多的標(biāo)準(zhǔn)化組織采納為國(guó)際標(biāo)準(zhǔn)或行業(yè)標(biāo)準(zhǔn)Sun于1996年發(fā)布了JDK1.0,1997年發(fā)布了JDK1.1,1998年發(fā)布了JDK1.2(Java2),2000年JDK1.3,目前是JDK1.658基于Java平臺(tái)的分布式計(jì)算Java2的出現(xiàn)改變了PersonalJava和EmbeddedJava的分法,改分為Java2PlatformEnterpriseEdition(J2EE),企業(yè)級(jí)計(jì)算、電子商務(wù)等領(lǐng)域的服務(wù)器應(yīng)用Java2PlatformStandardEdition(J2SE),一般的個(gè)人計(jì)算機(jī)Java2PlatformMicroEdition(J2ME),消費(fèi)性電子產(chǎn)品SunONE(SunOpenNetworkEnvironment)是Sun公司2001年發(fā)布的,用于實(shí)現(xiàn)異構(gòu)網(wǎng)絡(luò)環(huán)境下的分布式計(jì)算的軟件體系結(jié)構(gòu),用用于實(shí)現(xiàn)WebService的平臺(tái)59JavaRMI在進(jìn)行本地或遠(yuǎn)程機(jī)器上的進(jìn)程間通信、遠(yuǎn)程執(zhí)行代碼時(shí),有多種技術(shù)可用。最早且最常用的方法是在進(jìn)程之間建立通信鏈路。通過(guò)這條鏈路,一個(gè)進(jìn)程可以把某些操作和數(shù)據(jù)按照約定的格式發(fā)送給另一個(gè)進(jìn)程接收進(jìn)程在解碼后,執(zhí)行響應(yīng)的操作,并用同樣的方法將結(jié)果返回給發(fā)起進(jìn)程套接字編程就采用了這種方法60JavaRMI但是,采用這種方法時(shí),程序員必須給每個(gè)應(yīng)用程序創(chuàng)建一個(gè)表示操作和數(shù)據(jù)的編碼方式。這種做法還將引入兩種不同的典型編程方法程序設(shè)計(jì)語(yǔ)言的過(guò)程調(diào)用/參數(shù)傳遞模型用于套接字的編程的命令模型加大了開(kāi)發(fā)難度遠(yuǎn)程機(jī)器之間的數(shù)據(jù)格式和字節(jié)排序順序都可能不同,這種數(shù)據(jù)格式的平臺(tái)相關(guān)性增大了通信的復(fù)雜性61JavaRMI另一種方法是遠(yuǎn)程過(guò)程調(diào)用(RemoteProcedureCall)使用這種方法,遠(yuǎn)程進(jìn)程間的通信和調(diào)用能夠以一種類似于本地過(guò)程調(diào)用和參數(shù)傳遞那樣的方式進(jìn)行,這使得程序設(shè)計(jì)中能使用統(tǒng)一的編程風(fēng)格。但是數(shù)據(jù)格式和字節(jié)排列順序的問(wèn)題仍然存在,而且RPC是一種面向處理的程序風(fēng)格,不適用于面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)方案62JavaRMIJava遠(yuǎn)程方法調(diào)用,JavaRMI(JavaRemoteMethodInvocation)是以同構(gòu)的Java虛擬機(jī)環(huán)境為基礎(chǔ)的一種解決方案JavaRMI利用Java對(duì)象模型的優(yōu)點(diǎn),是一種純Java的分布式應(yīng)用核心解決方案63Java語(yǔ)言支持分布式對(duì)象的目標(biāo)在保留大部分Java語(yǔ)言對(duì)象語(yǔ)義的同時(shí),用較為自然的方式將分布式對(duì)象模型集成到Java語(yǔ)言中在不同的虛擬機(jī)上支持對(duì)象的無(wú)縫遠(yuǎn)程調(diào)用支持從服務(wù)器到applet的回調(diào)使分布式對(duì)象模型和本地Java對(duì)象模型的差異明朗化為遠(yuǎn)程對(duì)象提供各種引用語(yǔ)義,例如非持久引用、持久引用和惰性激活實(shí)現(xiàn)安全管理器和類加載器提供的安全可靠的Java環(huán)境64JavaRMI概述RMI是JSDK的一部分,是一個(gè)支持分布式計(jì)算應(yīng)用程序的遠(yuǎn)程方法調(diào)用和返回的API在RMI中,任何一個(gè)可以被其他Java虛擬機(jī)調(diào)用其方法的對(duì)象稱為遠(yuǎn)程對(duì)象(RemoteObject)。遠(yuǎn)程對(duì)象是網(wǎng)絡(luò)對(duì)象,調(diào)用它們的客戶或其他遠(yuǎn)程對(duì)象的地理位置是透明的。既可能是位于同一個(gè)地址空間內(nèi),也可能是跨越互聯(lián)網(wǎng)的調(diào)用RMI在處理本地調(diào)用和分布式對(duì)象的方法調(diào)用時(shí),使用幾乎相同的編程模型,并假設(shè)調(diào)用方法和被調(diào)用方法均使用Java語(yǔ)言65JavaRMI的編組和解組RMI允許通過(guò)網(wǎng)絡(luò)傳遞參數(shù),包括Java基本元和對(duì)象編組和解組是使參數(shù)在被請(qǐng)求機(jī)器上可以使用的處理方法,它將參數(shù)打包、拆包,從而使得它們可應(yīng)用于不同的環(huán)境66JavaRMI參數(shù)傳遞RMI允許兩種方法傳遞參數(shù):值傳遞和引用傳遞值傳遞時(shí),在遠(yuǎn)程主機(jī)上的另一個(gè)進(jìn)程創(chuàng)建新對(duì)象,并將參數(shù)復(fù)制到新對(duì)象中。引用傳遞時(shí),遠(yuǎn)程主機(jī)收到的是原對(duì)象的一個(gè)引用,而不是具體拷貝。所以它不在另一個(gè)進(jìn)程中創(chuàng)建對(duì)象,對(duì)象仍留在原地,并進(jìn)行遠(yuǎn)程操作。這些遠(yuǎn)程操作所做出的修改會(huì)影響原始數(shù)據(jù)67JavaRMI遠(yuǎn)程對(duì)象和遠(yuǎn)程接口RMI就是調(diào)用遠(yuǎn)程對(duì)象上遠(yuǎn)程接口的方法的動(dòng)作。遠(yuǎn)程對(duì)象由一種或多種遠(yuǎn)程接口描述??蛻艨梢韵蛭挥诹硪慌_(tái)機(jī)器的遠(yuǎn)程對(duì)象發(fā)送一條消息,并獲得返回結(jié)果,就像那些對(duì)象位于本地機(jī)器一樣。遠(yuǎn)程對(duì)象的方法調(diào)用與本地對(duì)象的方法調(diào)用語(yǔ)法相同68JavaRMI安全性RMI使用Java內(nèi)置的安全機(jī)制保證下載執(zhí)行的程序時(shí)用戶系統(tǒng)的安全RMI使用專門為保護(hù)系統(tǒng)免遭惡意JavaApplet侵害而設(shè)計(jì)的安全管理程序,可保護(hù)系統(tǒng)和網(wǎng)絡(luò)免遭潛在的惡意下載程序的破壞。在情況嚴(yán)重時(shí),服務(wù)器可拒絕下載任何執(zhí)行程序69JavaRMI兼容性RMI可通過(guò)Java的本機(jī)方法接口JNI與現(xiàn)有系統(tǒng)進(jìn)行交互。利用RMI和JNI,就能用Java編寫客戶端程序,還能使用現(xiàn)有的服務(wù)器端程序。使用RMI/JNI與現(xiàn)有服務(wù)器連接時(shí),可以有選擇的用Java重新編寫服務(wù)程序的任何部分,并使新的程序充分發(fā)揮Java功能。RMI可以利用JDBC,在不修改使用數(shù)據(jù)庫(kù)的現(xiàn)有非Java源代碼的前提下與現(xiàn)有數(shù)據(jù)庫(kù)進(jìn)行交互70JavaRMI分布式垃圾收集71JavaRMI72JavaRMI73JavaRMI74JavaRMI75JavaRMI76JavaRMI77基于Java平臺(tái)的分布式計(jì)算78第三章軟件體系結(jié)構(gòu)風(fēng)格正交軟件體系結(jié)構(gòu)79正交軟件體系結(jié)構(gòu)的概念正交軟件體系結(jié)構(gòu)由組織層和線索的構(gòu)件構(gòu)成。層是由一組具有相同抽象級(jí)別的構(gòu)件構(gòu)成。線索是子系統(tǒng)的特例,它是由完成不同層次功能的構(gòu)件組成(通過(guò)相互調(diào)用來(lái)關(guān)聯(lián)),每一條線索完成整個(gè)系統(tǒng)中相對(duì)獨(dú)立的一部分功能。80正交軟件體系結(jié)構(gòu)的線索每一條線索的實(shí)現(xiàn)與其他線索的實(shí)現(xiàn)無(wú)關(guān)或關(guān)聯(lián)很少,在同一層中的構(gòu)件之間是不存在相互調(diào)用的。如果線索是相互獨(dú)立的,即不同線索中的構(gòu)件之間沒(méi)有相互調(diào)用,那么這個(gè)結(jié)構(gòu)就是完全正交的。81正交軟件體系結(jié)構(gòu)的框架82大型和復(fù)雜的軟件系統(tǒng),其子線索可以劃分為更低一級(jí)的子線索,形成多級(jí)正交結(jié)構(gòu)同一層次的構(gòu)件不允許互相調(diào)用83系統(tǒng)演化對(duì)體系結(jié)構(gòu)的影響在系統(tǒng)演化過(guò)程中,系統(tǒng)需求不斷發(fā)生變化。在正交軟件體系結(jié)構(gòu)中,因線索的正交性,每個(gè)需求的變動(dòng)僅影響某一條線索,不會(huì)影響其他線索。這樣,把軟件需求的變動(dòng)局部化了,產(chǎn)生的影響也被限制在一定的范圍內(nèi),容易實(shí)現(xiàn)84系統(tǒng)演化對(duì)體系結(jié)構(gòu)的影響多級(jí)正交結(jié)構(gòu)對(duì)于降低軟件演化更新的開(kāi)銷是行之有效的適合大型軟件開(kāi)發(fā),特別是MIS領(lǐng)域85正交軟件體系結(jié)構(gòu)的特征正交軟件體系結(jié)構(gòu)由完成不同功能的n(n>1)個(gè)線索(子系統(tǒng))組成;系統(tǒng)具有m(m>1)個(gè)不同抽象級(jí)別的層;線索之間是相互獨(dú)立的(正交的);系統(tǒng)有一個(gè)公共驅(qū)動(dòng)層(一般為最高層)和公共數(shù)據(jù)結(jié)構(gòu)(一般為最低層)。86正交軟件體系結(jié)構(gòu)的特點(diǎn)結(jié)構(gòu)清晰,易于理解。由于線索功能相互獨(dú)立,不進(jìn)行互相調(diào)用,結(jié)構(gòu)簡(jiǎn)單、清晰,構(gòu)件在結(jié)構(gòu)圖中的位置已經(jīng)說(shuō)明它所實(shí)現(xiàn)的是哪一級(jí)抽象,擔(dān)負(fù)的是什么功能。87正交軟件體系結(jié)構(gòu)的特點(diǎn)易修改,可維
溫馨提示
- 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è)安全基礎(chǔ)管理、構(gòu)筑物、作業(yè)、設(shè)備管理、消防安全、隱患、事故預(yù)防技術(shù)服務(wù)報(bào)告模板
- 文書(shū)模板-抽脂手術(shù)合同協(xié)議書(shū)
- 武漢24年小學(xué)6年級(jí)英語(yǔ)第四單元綜合卷
- 北海2024年07版小學(xué)4年級(jí)英語(yǔ)第三單元測(cè)驗(yàn)卷
- 高中化學(xué)知識(shí)點(diǎn)歸納與分類突破:化學(xué)與環(huán)境生活社會(huì)傳統(tǒng)文化
- 村里財(cái)務(wù)制度-記賬實(shí)操
- 2023年碳酸鹽資金申請(qǐng)報(bào)告
- 2025屆高三英語(yǔ)二輪復(fù)習(xí) 時(shí)事語(yǔ)法填空練習(xí)(4篇含答案)
- 2024年噪聲振動(dòng)污染防治項(xiàng)目資金籌措計(jì)劃書(shū)代可行性研究報(bào)告
- 強(qiáng)化責(zé)任、真抓實(shí)干、自評(píng)促建、全力創(chuàng)優(yōu)
- 2024下半年四川省廣元市直屬事業(yè)單位招聘104人歷年公開(kāi)引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(kù)(共500題)答案詳解版
- 市政道路施工工程重難點(diǎn)分析及對(duì)策
- 2024年渤海船舶職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案解析
- 《行政復(fù)議法》講座課件-2024鮮版
- 外國(guó)新聞傳播史 課件 第十九章 非洲其他代表性國(guó)家的新聞傳播事業(yè)
- JTJ034-2000 公路路面基層施工技術(shù)規(guī)范
- 小班數(shù)學(xué)活動(dòng)《分類》課件
- 《娛樂(lè)場(chǎng)所管理?xiàng)l例》課件
- 渣土車掛靠合同
- 《小動(dòng)物眼科學(xué)》課件
- 特殊兒童心理輔導(dǎo)理論與實(shí)務(wù) 課件 第4、5章 特殊兒童心理輔導(dǎo)與治療的基本方法、特殊兒童常見(jiàn)的心理行為問(wèn)題及輔導(dǎo)
評(píng)論
0/150
提交評(píng)論