国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

用RMI開發(fā)基于Java的企業(yè)分布式應用

2019-11-18 11:10:00
字體:
來源:轉載
供稿:網(wǎng)友
摘 要 由于java具有跨平臺、代碼可移植性、安全高效等廣泛而強大的功能,因而在開發(fā)網(wǎng)絡分布式應用的時候,可以用它自身的機制實現(xiàn)分布式計算,一種基于Java的遠程方法調用(RMI)為我們開發(fā)企業(yè)分布式應用提供了行之有效的解決方案。

  要害詞 Java RMI 企業(yè)分布式應用

  概述

  隨著電力企業(yè)信息化建設的不斷深入和發(fā)展,企業(yè)內部和企業(yè)與企業(yè)之間對信息、對數(shù)據(jù)的交換量大大增加,這些信息與數(shù)據(jù)越來越需要在不同的計算機網(wǎng)絡間傳送和交流。同時,由于各單位、各部門之間的現(xiàn)存的計算機網(wǎng)絡硬件設備與操作系統(tǒng)千差萬別,應用水平也參差不齊,因此,開發(fā)出跨平臺、可移植、高效安全的網(wǎng)絡分布式應用來服務于電力企業(yè),就顯得尤為重要。

  在當今的編程術語里,分布式計算已經(jīng)成為很常見的詞,它將企業(yè)的業(yè)務數(shù)據(jù)和程序分布在網(wǎng)絡的不同物理位置上,通過調動網(wǎng)絡上多臺計算機的處理能力,發(fā)揮遠程調用數(shù)據(jù)的功能。

  遠程方法調用(Remote Method Invocation ,RMI),可以在不同的Java虛擬機(JVM)之間實現(xiàn)對象與對象的通信。JVM可以位于相同或不同計算機上,在多個JVM中,一個JVM可以調用存儲在其它JVM的對象的方法。

  本文主要介紹RMI的特點,分析應用RMI進行企業(yè)分布式計算的原理,以及利用RMI實現(xiàn)基于Java的企業(yè)分布式應用的具體步驟。

  遠程方法調用(RMI)的特點

  1、TCP編程的缺點

  由于Java編程語言設計之初就是面向對象和支持網(wǎng)絡的,因此,基于對象的RMI機制已經(jīng)內置在Java平臺中。

  我們經(jīng)常會在網(wǎng)絡開發(fā)中使用TCP/ip編程,這樣,自然而然地就會涉及到Socket(套接字)編程。但是,使用Socket編程需要大量重復編碼,在復雜分布式操作時顯得非常麻煩,而且易于出錯。因此,如何快速、高效、安全、可擴展地進行網(wǎng)絡分布式計算,是開發(fā)者們一貫追求和倡導的主題。直到RMI的出現(xiàn),這種繁雜、低效的開發(fā)情況才有很大改觀。

  2、RMI編程的特點

  當我們利用對象序列化在網(wǎng)絡上分配對象時,RMI提供了非Java平臺無法匹敵的獨特而強大的分布式計算模型,RMI主要有以下特點:

   客戶機可以向本地方法一樣調用遠程服務器上的方法;

   可以根據(jù)接口指定客戶機/服務器編程合約;

   可以從服務器對象缺省二進制類文件,自動生成調動/反調動代碼;

   將Java編程模型擴展到機器邊界(和Java虛擬機(JVM)邊界之外),不需要任何非凡語法;

   還可以和一個遠程方法調用中的數(shù)據(jù)同時傳輸行為(代碼)。

  盡管RMI不是唯一的企業(yè)級遠程對象訪問方案,但它卻是最輕易實現(xiàn)的。

  3、RMI與CORBA

  作為分布式應用程序框架的規(guī)范,COBRA首當其沖,它是由對象治理組織(OMG)開發(fā)的。與CORBA不同的是,CORBA能夠利用不同編程語言(例如C/C++、Basic等)開發(fā)實現(xiàn)分布式應用,而RMI是一種純Java解決方案。在RMI中,程序的所有部分都由Java語言編寫,這樣,開發(fā)出來的程序完全符合Java規(guī)范,便于實現(xiàn)跨平臺訪問、擴展和移植。按照筆者所在西北電力建設集團公司的情況看,服務器操作系統(tǒng)主要有linux和Windows2000 Server,分別存在于公司和部門當中,它們是不同的系統(tǒng)平臺;同時,公司下屬各個工程項目部又距離很遠,近的幾十公里,遠則達到上千公里甚至位于國外,因此跨平臺和遠程訪問這兩大功能在開發(fā)企業(yè)應用系統(tǒng)時就必須考慮,而RMI恰恰能夠用它的自身特點來滿足編程需要。

  RMI基本體系結構簡介

  RMI通過TCP/IP在內部使用Socket,象其名稱暗示的那樣,它能夠幫助我們查找并執(zhí)行遠程對象的方法。RMI的目的是讓位于不同JVM中的對象,在外觀及行為上都像是本地的對象。

  通常,我們把調用這種遠程對象的JVM,稱為客戶機;而把包括這種遠程對象的JVM,稱為服務器。

  盡管對一個遠程對象的引用和獲得對本地對象的引用有所不同,但我們可以把遠程對象像本地對象一樣使用。應用程序并不知道一個對象是遠程的還是本地的。實際上,遠程對象上被調用的方法與本地對象上調用的方法,具有相同的語法結構。

  作為RMI的底層(會包含復雜的Socket操作),它會自動截獲方法調用,找到遠程對象,然后處理遠程請求。筆者認為,RMI設計的重要之處,就在于不但在設計上實現(xiàn)了遠程訪問功能,而且實現(xiàn)了設計的透明性。

  RMI的基本體系結構,概括起來說,由三個抽象層組成:

  1、存根/框架層(Stubs/Skeletons Layer)

  RMI為我們引入了兩種非凡類型的對象,稱為存根(Stub)和框架(Skeleton),它們組成了RMI的第一層。

  在遠程通信的時候,要利用TCP/IP協(xié)議,做很多底層數(shù)據(jù)的打包傳輸。運用Java技術,我們先要把數(shù)據(jù)或者對象轉換成字節(jié)流(byte stream),便于網(wǎng)絡傳輸,這個過程叫匯集(marshaling);當收到遠程傳來的字節(jié)流后,我們要把流信息轉換成對象或者數(shù)據(jù),這個過程叫解讀(unmarshaling),它與匯集剛好相反。

  Stub和Skeleton層位于實際應用程序之下,建立在PRoxy(代理)設計方案之上。Stub類的作用是遠程服務器實現(xiàn)的代理的角色,Stub是客戶方對象;Skeleton類用于幫助對象通過RMI鏈接與Stub通信,它從鏈路中讀取方法調用的參數(shù),向遠程服務實現(xiàn)對象進行調用,接受返回值,然后再把返回值寫回到Stub。

  2、遠程引用層(Remote Reference Layer)

  遠程引用層定義和支持著RMI連接的調用語義(semantics)。

  RMI進行遠程訪問要用到JRMP(Java Remote Method Protocol,即Java遠程方法協(xié)議),這一層提供專用于JRMP的RemoteRef對象,它位于java.rmi.server包內,代表著遠程對象的一個句柄。RemoteRef使用遠程引用來執(zhí)行遠程對象的一個遠程方法調用。

  3、傳輸層(Transport Layer)

  傳輸層在JVM之間建立基于流的網(wǎng)絡連接,并且負責設置和治理這些連接。這時候,RMI使用一種線級(wire-level)協(xié)議進行基于TCP/IP的連接,該協(xié)議就是Java遠程方法協(xié)議(JRMP,即Java Remote Method Protocol)。

  在JDK版本1.2開始,JRMP不再需要Skeleton,而是使用reflection來建立與遠程服務的連接。為了生成Stub,我們須用rmic。
當前的RMI實現(xiàn)中,傳輸層建立在TCP/IP基礎上,設計用于在客戶和服務器之間建立一條連接(即使聯(lián)網(wǎng)有障礙)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安阳县| 扎鲁特旗| 湘潭市| 咸宁市| 昂仁县| 汉源县| 五指山市| 怀安县| 寻甸| 应用必备| 虞城县| 柘城县| 武陟县| 霍州市| 常山县| 山西省| 通山县| 宁蒗| 菏泽市| 张北县| 曲靖市| 安徽省| 眉山市| 杭锦后旗| 龙川县| 定州市| 七台河市| 临夏市| 阜平县| 礼泉县| 广宁县| 刚察县| 水富县| 成都市| 梅河口市| 策勒县| 巴林左旗| 阿城市| 屏东市| 扬州市| 黄梅县|