分享
 
 
 

使用RMI和CORBA进行分布式程序设计

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

使用RMI和CORBA进行分布式程序设计

RMI和corba是两种最重要和使用最广泛的分布式对象系统。 每种都有它的优点和短处。这两种系统都在从电子商务到卫生保健等不同的行业成功的使用。在项目中使用这两种分布机制中的任何一种都是一项很困难的任务。本文介绍了RMI和corba的机理和最主要的是显示了如何开发一个有用的程序(一个从远程站点下载文件的程序)。于是有以下内容:

? 一个分布式系统的简介

? 一个RMI和corba的简介

? 让你体验开发一个RMI和corba程序的滋味。

? 说明如何使用RMI和corba从远程机器交换文件

? 提供一个RMI和Corba的比较。

客户/服务端模式

客户/服务模式是一个分布式计算应用。它通过使用一个应用程序(客户)和另一个程序(服务端)交换数据。在这样的一个例子里面客户端和服务端一般使用同样的语言来编写,使用相同的协议来相互通信。

在客户/服务模式应用到各种各样的地方的过程中,使用低层次的socket来开发是很典型的。使用socket来开发客户/服务端模式意味着我们必须自己设计一种协议,该协议包含客户端和服务端都统一的命令集 ,使得客户端和服务端能够通过这个协议来通信。例如:HTTP协议提供了一个get的方法。所有的web服务器软件都集成了该功能,而所有的浏览器软件都能够使用该功能来获得资料。

分布式对象模式

分布式对象系统是一个对象集合,通过定义很完善的统一的接口来分隔开的要求服务(客户端)和功能服务(服务端)。换句话说客户端和公共服务的提供分隔开,这些服务包括数据表现和执行的代码。这是一个分辨分布式对象模式和客户/服务模式的主要不同。

在分布式对象模式里,客户端发送一个消息到一个对象,由这个对象解释这个消息然后决定应该由什么服务来完成。这个服务,方法或选择的完成可能是被一个对象或是被一个broker。RMI和corba就是这种模式的例子。

RMI

RMI是一个分布式对象模式。它使得使用Java开发分布式程序更加轻易。由于不需要设计协议(这基本是一个错误的任务) 使得使用RMI开发分布式程序比使用socket更加轻易。在RMI里面设计者就象在调用一个本地的类的方法一样,而实际上是在调用的时候相应的参数被发送到远端的对象和然后被解释。最后结果返回给调用者。

一个 RMI应用的流程

使用 RMI开发一个分布式应用包括如下几个步骤

1)定义一个远端的接口

2)实现这个远端的接口

3)开发一个服务端

4)开发一个客户端

5)生成Stubs 和Skeletons,运行RMI注册器,服务端 和客户端

我们现在通过开发一个文件交换程序来解释这些步骤

例子:文件交换程序

这个应用答应客户端从服务端交换(或下载)所有类型的文件。第一步是定义一个远程的接口,这个接口指定了的签名方法将被服务端提供和被客户端调用。

定义一个远程接口

这个程序的远程接口在代码例子1中列出,接口FileInterface提供一个downloadFile这个带一个字符窜(文件名)变量的的方法,然后返回以一个字符窜序列的形式的相应文件数据。

代码例子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,这是为了让客户端能够通过调用远程接口来间接调用远程的对象。

? 必须使用从Remote接口扩展过来,这是创建一个远程的对象的需要。

? 每个接口方法中必须抛出java.rmi.RemoteException错误。

实现远程的接口

下一步是实现远程的接口FileInterface。实现的例子在代码例子 2中列出。类FileImpl从UnicastRemoteObject扩展来。这显示出FileImpl类是用来创建一个单独的,不能复制的,远程的对象,

这个对象使用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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有