資源描述:
《基于java的網(wǎng)絡(luò)分布式應(yīng)用new》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、基于Java的網(wǎng)絡(luò)分布式應(yīng)用基于Java的網(wǎng)絡(luò)分布式應(yīng)用隨著信息化建設(shè)的不斷深入和發(fā)展,企業(yè)內(nèi)部和企業(yè)與企業(yè)之間對(duì)信息、對(duì)數(shù)據(jù)的交換量大大增加,這些信息與數(shù)據(jù)越來(lái)越需要在不同的計(jì)算機(jī)網(wǎng)絡(luò)間傳送和交流。同時(shí),由于各單位、各部門(mén)之間的現(xiàn)存的計(jì)算機(jī)網(wǎng)絡(luò)硬件設(shè)備與操作系統(tǒng)千差萬(wàn)別,應(yīng)用水平也參差不齊,因此,開(kāi)發(fā)出跨平臺(tái)、可移植、高效安全的網(wǎng)絡(luò)分布式應(yīng)用來(lái)服務(wù)于企業(yè),就顯得尤為重要。在當(dāng)今的編程術(shù)語(yǔ)里,分布式計(jì)算已經(jīng)成為很常見(jiàn)的詞,它將企業(yè)的業(yè)務(wù)數(shù)據(jù)和程序分布在網(wǎng)絡(luò)的不同物理位置上,通過(guò)調(diào)動(dòng)網(wǎng)絡(luò)上多臺(tái)計(jì)算機(jī)的處理能力,發(fā)揮遠(yuǎn)程調(diào)用數(shù)據(jù)的功能。遠(yuǎn)程方法調(diào)用(RemoteMethodIn
2、vocation,RMI),可以在不同的Java虛擬機(jī)(JVM)之間實(shí)現(xiàn)對(duì)象與對(duì)象的通信。JVM可以位于相同或不同計(jì)算機(jī)及設(shè)備上,在多個(gè)JVM中,一個(gè)JVM可以調(diào)用存儲(chǔ)在其它JVM的對(duì)象的方法。本文主要介紹RMI的特點(diǎn),分析應(yīng)用RMI進(jìn)行企業(yè)分布式計(jì)算的原理,以及利用RMI實(shí)現(xiàn)基于Java的企業(yè)分布式應(yīng)用的具體步驟。一.遠(yuǎn)程方法調(diào)用(RMI)的特點(diǎn)1、TCP編程的缺點(diǎn)由于Java編程語(yǔ)言設(shè)計(jì)之初就是面向?qū)ο蠛椭С志W(wǎng)絡(luò)的,因此,基于對(duì)象的RMI機(jī)制已經(jīng)內(nèi)置在Java平臺(tái)中。我們經(jīng)常會(huì)在網(wǎng)絡(luò)開(kāi)發(fā)中使用TCP/IP編程,這樣,自然而然地就會(huì)涉及到Socket(套接字)編程。但是,
3、使用Socket編程需要大量重復(fù)編碼,在復(fù)雜分布式操作時(shí)顯得非常麻煩,而且易于出錯(cuò)。因此,如何快速、高效、安全、可擴(kuò)展地進(jìn)行網(wǎng)絡(luò)分布式計(jì)算,是開(kāi)發(fā)者們一貫追求和倡導(dǎo)的主題。直到RMI的出現(xiàn),這種繁雜、低效的開(kāi)發(fā)情況才有很大改觀。2、RMI編程的特點(diǎn)當(dāng)我們利用對(duì)象序列化在網(wǎng)絡(luò)上分配對(duì)象時(shí),RMI提供了非Java平臺(tái)無(wú)法匹敵的獨(dú)特而強(qiáng)大的分布式計(jì)算模型,RMI主要有以下特點(diǎn):客戶機(jī)可以向本地方法一樣調(diào)用遠(yuǎn)程服務(wù)器上的方法;?可以根據(jù)接口指定客戶機(jī)/服務(wù)器編程合約;?可以從服務(wù)器對(duì)象缺省二進(jìn)制類(lèi)文件,自動(dòng)生成調(diào)動(dòng)/反調(diào)動(dòng)代碼;?將Java編程模型擴(kuò)展到機(jī)器邊界(和Java虛擬機(jī)(
4、JVM)邊界之外),不需要任何特殊語(yǔ)法;?還可以和一個(gè)遠(yuǎn)程方法調(diào)用中的數(shù)據(jù)同時(shí)傳輸行為(代碼)。?盡管kongbowoo@gmail.comRMI不是唯一的企業(yè)級(jí)遠(yuǎn)程對(duì)象訪問(wèn)方案,但它卻是最容易實(shí)現(xiàn)的。3、RMI與CORBACOBRA作為分布式應(yīng)用程序框架的規(guī)范,它是由對(duì)象管理組織(OMG)開(kāi)發(fā)的。與RMI不同的是,CORBA能夠利用不同編程語(yǔ)言(例如C/C++、Basic等)開(kāi)發(fā)實(shí)現(xiàn)分布式應(yīng)用,而RMI是一種純Java解決方案。在RMI中,程序的所有部分都由Java語(yǔ)言編寫(xiě),這樣,開(kāi)發(fā)出來(lái)的程序完全符合Java規(guī)范,便于實(shí)現(xiàn)跨平臺(tái)訪問(wèn)、擴(kuò)展和移植。從當(dāng)前各企業(yè)公司來(lái)看,服
5、務(wù)器操作系統(tǒng)主要有Linux和WindowsServer,分別存在于公司和部門(mén)當(dāng)中,它們是不同的系統(tǒng)平臺(tái);同時(shí),各企業(yè)公司下屬各個(gè)工程項(xiàng)目部又1基于Java的網(wǎng)絡(luò)分布式應(yīng)用距離很遠(yuǎn),近的幾十公里,遠(yuǎn)則達(dá)到上千公里甚至位于國(guó)外,因此跨平臺(tái)和遠(yuǎn)程訪問(wèn)這兩大功能在開(kāi)發(fā)企業(yè)應(yīng)用系統(tǒng)時(shí)就必須考慮,而RMI恰恰能夠用它的自身特點(diǎn)來(lái)滿足編程需要。二.RMI基本體系結(jié)構(gòu)簡(jiǎn)介RMI通過(guò)TCP/IP在內(nèi)部使用Socket,它能夠幫助我們查找并執(zhí)行遠(yuǎn)程對(duì)象的方法。RMI的目的是讓位于不同JVM中的對(duì)象,在外觀及行為上都像是本地的對(duì)象。通常,我們把調(diào)用這種遠(yuǎn)程對(duì)象的JVM,稱(chēng)為客戶機(jī);而把包括這種
6、遠(yuǎn)程對(duì)象的JVM,稱(chēng)為服務(wù)器。盡管對(duì)一個(gè)遠(yuǎn)程對(duì)象的引用和獲得對(duì)本地對(duì)象的引用有所不同,但我們可以把遠(yuǎn)程對(duì)象像本地對(duì)象一樣使用。應(yīng)用程序并不知道一個(gè)對(duì)象是遠(yuǎn)程的還是本地的。實(shí)際上,遠(yuǎn)程對(duì)象上被調(diào)用的方法與本地對(duì)象上調(diào)用的方法,具有相同的語(yǔ)法結(jié)構(gòu)。作為RMI的底層(會(huì)包含復(fù)雜的Socket操作),它會(huì)自動(dòng)截獲方法調(diào)用,找到遠(yuǎn)程對(duì)象,然后處理遠(yuǎn)程請(qǐng)求。筆者認(rèn)為,RMI設(shè)計(jì)的重要之處,就在于不但在設(shè)計(jì)上實(shí)現(xiàn)了遠(yuǎn)程訪問(wèn)功能,而且實(shí)現(xiàn)了設(shè)計(jì)的透明性。ISO/OSI對(duì)遠(yuǎn)程對(duì)象的遠(yuǎn)程對(duì)象方法調(diào)用(client)實(shí)現(xiàn)(Server)應(yīng)用層stubskeleton表示層遠(yuǎn)程引用層遠(yuǎn)程引用層會(huì)話
7、層傳輸層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層物理層物理層RMI的層次結(jié)構(gòu)與OSI層次結(jié)構(gòu)對(duì)照?qǐng)DRMI的基本體系結(jié)構(gòu),概括起來(lái)說(shuō),由三個(gè)抽象層組成:kongbowoo@gmail.com1、存根/框架層(Stubs/SkeletonsLayer)RMI為我們引入了兩種特殊類(lèi)型的對(duì)象,稱(chēng)為存根(Stub)和框架(Skeleton),它們組成了RMI的第一層。在遠(yuǎn)程通信的時(shí)候,要利用TCP/IP協(xié)議,做很多底層數(shù)據(jù)的打包傳輸。運(yùn)用Java技術(shù),我們先要把數(shù)據(jù)或者對(duì)象轉(zhuǎn)換成字節(jié)流(bytestream),便于網(wǎng)絡(luò)