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

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

使用RMI和CORBA進行分布式程序設計

2019-11-18 13:43:26
字體:
供稿:網(wǎng)友

  使用RMI和CORBA進行分布式程序設計

RMI和corba是兩種最重要和使用最廣泛的分布式對象系統(tǒng)。 每種都有它的優(yōu)點和短處。這兩種系統(tǒng)都在從電子商務到衛(wèi)生保健等不同的行業(yè)成功的使用。在項目中使用這兩種分布機制中的任何一種都是一項很困難的任務。本文介紹了RMI和corba的機理和最主要的是顯示了如何開發(fā)一個有用的程序(一個從遠程站點下載文件的程序)。于是有以下內(nèi)容:
? 一個分布式系統(tǒng)的簡介
? 一個RMI和corba的簡介
? 讓你體驗開發(fā)一個RMI和corba程序的滋味。
? 說明如何使用RMI和corba從遠程機器交換文件
? 提供一個RMI和Corba的比較。
客戶/服務端模式
客戶/服務模式是一個分布式計算應用。它通過使用一個應用程序(客戶)和另一個程序(服務端)交換數(shù)據(jù)。在這樣的一個例子里面客戶端和服務端一般使用同樣的語言來編寫,使用相同的協(xié)議來相互通信。
在客戶/服務模式應用到各種各樣的地方的過程中,使用低層次的socket來開發(fā)是很典型的。使用socket來開發(fā)客戶/服務端模式意味著我們必須自己設計一種協(xié)議,該協(xié)議包含客戶端和服務端都統(tǒng)一的命令集 ,使得客戶端和服務端能夠通過這個協(xié)議來通信。例如:HTTP協(xié)議提供了一個get的方法。所有的web服務器軟件都集成了該功能,而所有的瀏覽器軟件都能夠使用該功能來獲得資料。
分布式對象模式
分布式對象系統(tǒng)是一個對象集合,通過定義很完善的統(tǒng)一的接口來分隔開的要求服務(客戶端)和功能服務(服務端)。換句話說客戶端和公共服務的提供分隔開,這些服務包括數(shù)據(jù)表現(xiàn)和執(zhí)行的代碼。這是一個分辨分布式對象模式和客戶/服務模式的主要不同。
在分布式對象模式里,客戶端發(fā)送一個消息到一個對象,由這個對象解釋這個消息然后決定應該由什么服務來完成。這個服務,方法或選擇的完成可能是被一個對象或是被一個broker。RMI和corba就是這種模式的例子。
RMI
RMI是一個分布式對象模式。它使得使用java開發(fā)分布式程序更加輕易。由于不需要設計協(xié)議(這基本是一個錯誤的任務) 使得使用RMI開發(fā)分布式程序比使用socket更加輕易。在RMI里面設計者就象在調(diào)用一個本地的類的方法一樣,而實際上是在調(diào)用的時候相應的參數(shù)被發(fā)送到遠端的對象和然后被解釋。最后結(jié)果返回給調(diào)用者。
一個 RMI應用的流程
使用 RMI開發(fā)一個分布式應用包括如下幾個步驟
1)定義一個遠端的接口
2)實現(xiàn)這個遠端的接口
3)開發(fā)一個服務端
4)開發(fā)一個客戶端
5)生成Stubs 和Skeletons,運行RMI注冊器,服務端 和客戶端
我們現(xiàn)在通過開發(fā)一個文件交換程序來解釋這些步驟
例子:文件交換程序
這個應用答應客戶端從服務端交換(或下載)所有類型的文件。第一步是定義一個遠程的接口,這個接口指定了的簽名方法將被服務端提供和被客戶端調(diào)用。
定義一個遠程接口
這個程序的遠程接口在代碼例子1中列出,接口FileInterface提供一個downloadFile這個帶一個字符竄(文件名)變量的的方法,然后返回以一個字符竄序列的形式的相應文件數(shù)據(jù)。
代碼例子1: FileInterface.java
import java.rmi.Remote;
import java.rmi.RemoteException;

public interface FileInterface extends Remote {
public byte[] downloadFile(String fileName) throws
RemoteException;
}
注重接口FileInterface的如下特征:
? 它必須定義成public,這是為了讓客戶端能夠通過調(diào)用遠程接口來間接調(diào)用遠程的對象。
? 必須使用從Remote接口擴展過來,這是創(chuàng)建一個遠程的對象的需要。
? 每個接口方法中必須拋出java.rmi.RemoteException錯誤。
實現(xiàn)遠程的接口
下一步是實現(xiàn)遠程的接口FileInterface。實現(xiàn)的例子在代碼例子 2中列出。類FileImpl從UnicastRemoteObject擴展來。這顯示出FileImpl類是用來創(chuàng)建一個單獨的,不能復制的,遠程的對象,
這個對象使用RMI 的默認的基于TCP的通信方式。
代碼例子 2: FileImpl.java
import java.io.*;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;

public class FileImpl extends UnicastRemoteObject
implements FileInterface {

PRivate String name;

public FileImpl(String s) throws RemoteException{
super();
name = s;


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 全椒县| 新河县| 车致| 永平县| 隆化县| 南召县| 青田县| 抚远县| 清丰县| 江都市| 德保县| 镇平县| 晋城| 鄱阳县| 舞钢市| 呼图壁县| 武强县| 广昌县| 新民市| 玉溪市| 东港市| 尉氏县| 平安县| 凤台县| 海口市| 沙坪坝区| 车致| 华池县| 遵义县| 贡觉县| 轮台县| 镇巴县| 曲松县| 达日县| 安泽县| 山东省| 山东省| 耿马| 鞍山市| 阿图什市| 大同市|