日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RMI(Remote Method Invocation,远程方法调用)

發(fā)布時間:2023/12/9 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RMI(Remote Method Invocation,远程方法调用) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

RMI(Remote Method Invocation,遠程方法調(diào)用)

RMI(Remote Method Invocation,遠程方法調(diào)用)是用Java在JDK1.1中實現(xiàn)的,它大大增強了Java開發(fā)分布式應(yīng)用的能力。Java作為一種風(fēng)靡一時的網(wǎng)絡(luò)開發(fā)語言,其巨大的威力就體現(xiàn)在它強大的開發(fā)分布式網(wǎng)絡(luò)應(yīng)用的能力上,而RMI就是開發(fā)百分之百純Java的網(wǎng)絡(luò)分布式應(yīng)用系統(tǒng)的核心解決方案之一。其實它可以被看作是RPC的Java版本。但是傳統(tǒng)RPC并不能很好地應(yīng)用于分布式對象系統(tǒng)。而Java RMI 則支持存儲于不同地址空間的程序級對象之間彼此進行通信,實現(xiàn)遠程對象之間的無縫遠程調(diào)用。

????? RMI目前使用Java遠程消息交換協(xié)議JRMP(Java Remote Messaging Protocol)進行通信。JRMP是專為Java的遠程對象制定的協(xié)議。因此,Java RMI具有Java的"Write Once,Run Anywhere"的優(yōu)點,是分布式應(yīng)用系統(tǒng)的百分之百純Java解決方案。用Java RMI開發(fā)的應(yīng)用系統(tǒng)可以部署在任何支持JRE(Java Run Environment Java,運行環(huán)境)的平臺上。但由于JRMP是專為Java對象制定的,因此,RMI對于用非Java語言開發(fā)的應(yīng)用系統(tǒng)的支持不足。不能與用非Java語言書寫的對象進行通信。

Java Remote Method Invocation ( RMI -- Java遠程方法調(diào)用)允許您使用Java編寫分布式對象。本文將介紹RMI的優(yōu)點以及如何將其連接到現(xiàn)有的和原有的系統(tǒng)中,以及與用Java 編寫的組件的連接。

RMI為采用Java對象的分布式計算提供了簡單而直接的途徑。這些對象可以是新的Java對象,也可以是圍繞現(xiàn)有API的簡單的Java包裝程序。Java體現(xiàn)了“編寫一次就能在任何地方運行的模式。而RMI可將Java模式進行擴展,使之可在任何地方運行”。

因為RMI是以Java為核心的,所以,它將Java的安全性和可移植性等強大功能帶給了分布式計算。您可將代理和梢?務(wù)邏輯等屬性移動到網(wǎng)絡(luò)中最合適的地方。如果您要擴展Java在系統(tǒng)中的使用,RMI將使您充分利用其強大功能。

RMI可利用標(biāo)準(zhǔn)Java本機方法接口JNI與現(xiàn)有的和原有的系統(tǒng)相連接。RMI還可利用標(biāo)準(zhǔn)JDBC包與現(xiàn)有的關(guān)系數(shù)據(jù)庫連接。RMI/JNI和RMI/JDBC相結(jié)合,可幫助您利用RMI與目前使用非Java語言的現(xiàn)有服務(wù)器進行通信,而且在您需要時可擴展Java在這些服務(wù)器上的使用。RMI可幫助您在擴展使用時充分利用Java的強大功能。

一、RMI(遠程方法調(diào)用)的組成

????? 一個正常工作的RMI系統(tǒng)由下面幾個部分組成:

????? ·遠程服務(wù)的接口定義

????? ·遠程服務(wù)接口的具體實現(xiàn)

????? ·樁(Stub)和框架(Skeleton)文件

????? ·一個運行遠程服務(wù)的服務(wù)器

????? ·一個RMI命名服務(wù),它允許客戶端去發(fā)現(xiàn)這個遠程服務(wù)

????? ·類文件的提供者(一個HTTP或者FTP服務(wù)器)

????? ·一個需要這個遠程服務(wù)的客戶端程序

二、RMI(遠程方法調(diào)用)的工作原理

RMI系統(tǒng)結(jié)構(gòu),在客戶端和服務(wù)器端都有幾層結(jié)構(gòu)。

---------????????? ----------

| 客戶 |?????????? | 服務(wù)器|

----------???????? ----------

??? |??????????????????|

-------------??? ? ----------

| 占位程序 |? ???? | 骨干網(wǎng) |

--------------??? ?-----------

????? |?????????????????|

------------------------------------?

?????? | 遠 程 引 用 層 |

------------------------------------?

???????| ???????????????|

------------------------------------

????????? | 傳 輸 層 |

------------------------------------

???? 方法調(diào)用從客戶對象經(jīng)占位程序(Stub)、遠程引用層(Remote Reference Layer)和傳輸層(Transport Layer)向下,傳遞給主機,然后再次經(jīng)傳 輸層,向上穿過遠程調(diào)用層和骨干網(wǎng)(Skeleton),到達服務(wù)器對象。 占位程序扮演著遠程服務(wù)器對象的代理的角色,使該對象可被客戶激活。 遠程引用層處理語義、管理單一或多重對象的通信,決定調(diào)用是應(yīng)發(fā)往一個服務(wù)器還是多個。傳輸層管理實際的連接,并且追追蹤可以接受方法調(diào)用的遠程對象。服務(wù)器端的骨干網(wǎng)完成對服務(wù)器對象實際的方法調(diào)用,并獲取返回值。返回值向下經(jīng)遠程引用層、服務(wù)器端的傳輸層傳遞回客戶端,再向上經(jīng)傳輸層和遠程調(diào)用層返回。最后,占位程序獲得返回值。

????? 要完成以上步驟需要有以下幾個步驟:

????? 1、生成一個遠程接口

????? 2、實現(xiàn)遠程對象(服務(wù)器端程序)

????? 3、生成占位程序和骨干網(wǎng)(服務(wù)器端程序)

????? 4、編寫服務(wù)器程序

????? 5、編寫客戶程序

????? 6、注冊遠程對象

????? 7、啟動遠程對象

三、RMI(遠程方法調(diào)用)的優(yōu)點

從最基本的角度看,RMI是Java的遠程過程調(diào)用(RPC)機制。與傳統(tǒng)的RPC系統(tǒng)相比,RMI具有若干優(yōu)點,因為它是Java面向?qū)ο蠓椒ǖ囊徊糠帧鹘y(tǒng)的RPC系統(tǒng)采用中性語言,所以是最普通的系統(tǒng)--它們不能提供所有可能的目標(biāo)平臺所具有的功能。

RMI以Java為核心,可與采用本機方法與現(xiàn)有系統(tǒng)相連接。這就是說,RMI可采用自然、直接和功能全面的方式為您提供分布式計算技術(shù),而這種技術(shù)可幫助您以不斷遞增和無縫的方式為整個系統(tǒng)添加Java功能。

RMI的主要優(yōu)點如下:

面向?qū)ο?#xff1a;RMI可將完整的對象作為參數(shù)和返回值進行傳遞,而不僅僅是預(yù)定義的數(shù)據(jù)類型。也就是說,您可以將類似Java哈希表這樣的復(fù)雜類型作為一個參數(shù)進行傳遞。而在目前的RPC系統(tǒng)中,您只能依靠客戶機將此類對象分解成基本數(shù)據(jù)類型,然后傳遞這些數(shù)據(jù)類型,最后在服務(wù)器端重新創(chuàng)建哈希表。RMI則不需額外的客戶程序代碼(將對象分解成基本數(shù)據(jù)類型),直接跨網(wǎng)傳遞對象。

可移動屬性:RMI可將屬性(類實現(xiàn)程序)從客戶機移動到服務(wù)器,或者從服務(wù)器移到客戶機。

設(shè)計方式:對象傳遞功能使您可以在分布式計算中充分利用面向?qū)ο蠹夹g(shù)的強大功能,如二層和三層結(jié)構(gòu)系統(tǒng)。如果您能夠傳遞屬性,那么您就可以在您的解決方案中使用面向?qū)ο蟮脑O(shè)計方式。所有面向?qū)ο蟮脑O(shè)計方式無不依靠不同的屬性來發(fā)揮功能,如果不能傳遞完整的對象--包括實現(xiàn)和類型--就會失去設(shè)計方式上所提供的優(yōu)點。

安 全:RMI使用Java內(nèi)置的安全機制保證下載執(zhí)行程序時用戶系統(tǒng)的安全。RMI使用專門為保護系統(tǒng)免遭惡意小應(yīng)用程序侵害而設(shè)計的安全管理程序,可保護您的系統(tǒng)和網(wǎng)絡(luò)免遭潛在的惡意下載程序的破壞。在情況嚴(yán)重時,服務(wù)器可拒絕下載任何執(zhí)行程序。

便于編寫和使用:RMI使得Java遠程服務(wù)程序和訪問這些服務(wù)程序的Java客戶程序的編寫工作變得輕松、簡單。遠程接口實際上就是Java接口。服務(wù)程序大約用三行指令宣布本身是服務(wù)程序,其它方面則與任何其它Java對象類似。這種簡單方法便于快速編寫完整的分布式對象系統(tǒng)的服務(wù)程序,并快速地制做軟件的原型和早期版本,以便于進行測試和評估。因為RMI程序編寫簡單,所以維護也簡單。

可連接現(xiàn)有/原有的系統(tǒng):RMI可通過Java的本機方法接口JNI與現(xiàn)有系統(tǒng)進行進行交互。利用RMI和JNI,您就能用Java語言編寫客戶端程序,還能使用現(xiàn)有的服務(wù)器端程序。在使用RMI/JNI與現(xiàn)有服務(wù)器連接時,您可以有選擇地用Java重新編寫服務(wù)程序的任何部分,并使新的程序充分發(fā)揮Java的功能。類似地,RMI可利用JDBC、在不修改使用數(shù)據(jù)庫的現(xiàn)有非Java源代碼的前提下與現(xiàn)有關(guān)系數(shù)據(jù)庫進行交互。

編寫一次,到處運行:RMI是Java“編寫一次,到處運行 ”方法的一部分。任何基于RMI的系統(tǒng)均可100%地移植到任何Java虛擬機上,RMI/JDBC系統(tǒng)也不例外。如果使用RMI/JNI與現(xiàn)有系統(tǒng)進行交互工作,則采用JNI編寫的代碼可與任何Java虛擬機進行編譯、運行。

分布式垃圾收集:RMI采用其分布式垃圾收集功能收集不再被網(wǎng)絡(luò)中任何客戶程序所引用的遠程服務(wù)對象。與Java 虛擬機內(nèi)部的垃圾收集類似,分布式垃圾收集功能允許用戶根據(jù)自己的需要定義服務(wù)器對象,并且明確這些對象在不再被客戶機引用時會被刪除。

并行計算:RMI采用多線程處理方法,可使您的服務(wù)器利用這些Java線程更好地并行處理客戶端的請求。Java分布式計算解決方案:RMI從JDK 1.1開始就是Java平臺的核心部分,因此,它存在于任何一臺1.1 Java虛擬機中。所有RMI系統(tǒng)均采用相同的公開協(xié)議,所以,所有Java 系統(tǒng)均可直接相互對話,而不必事先對協(xié)議進行轉(zhuǎn)換。

四、RMI與CORBA的關(guān)系

????RMI 和 CORBA 常被視為相互競爭的技術(shù),因為兩者都提供對遠程分布式對象的透明訪問。但這兩種技術(shù)實際上是相互補充的,一者的長處正好可以彌補另一者的短處。RMI 和 CORBA 的結(jié)合產(chǎn)生了 RMI-IIOP,RMI-IIOP 是企業(yè)服務(wù)器端 Java 開發(fā)的基礎(chǔ)。

????1997 年,IBM 和 Sun Microsystems啟動了一項旨在促進 Java 作為企業(yè)開發(fā)技術(shù)的發(fā)展的合作計劃。兩家公司特別著力于如何將 Java 用作服務(wù)器端語言,生成可以結(jié)合進現(xiàn)有體系結(jié)構(gòu)的企業(yè)級代碼。所需要的就是一種遠程傳輸技術(shù),它兼有 Java 的 RMI(Remote Method Invocation,遠程方法調(diào)用)較少的資源占用量和更成熟的 CORBA(Common Object Request Broker Architecture,公共對象請求代理體系結(jié)構(gòu))技術(shù)的健壯性。出于這一需要,RMI-IIOP問世了,它幫助將 Java 語言推向了目前服務(wù)器端企業(yè)開發(fā)的主流語言的領(lǐng)先地位。

轉(zhuǎn)載于:https://www.cnblogs.com/alaricblog/p/3278324.html

總結(jié)

以上是生活随笔為你收集整理的RMI(Remote Method Invocation,远程方法调用)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。