RMI
RMI 是个典型的为java定制的远程通信协议,我们都知道,在single vm中,我们可以通过直接调用java object instance来实现通信,那么在远程通信时,如果也能按照这种方式当然是最好了,这种远程通信的机制成为RPC(Remote Procedure Call),RMI正是朝着这个目标而诞生的。
来看下基于RMI的一次完整的远程通信过程的原理:
1、客户端发起请求,请求转交至RMI客户端的stub类;
2、stub类将请求的接口、方法、参数等信息进行序列化;
3、基于socket将序列化后的流传输至服务器端;
4、服务器端接收到流后转发至相应的skelton类;
5、skelton类将请求的信息反序列化后调用实际的处理类;
6、处理类处理完毕后将结果返回给skelton类;
7、Skelton类将结果序列化
,通过socket将流传送给客户端的stub;
8、stub在接收到流后反序列化,将反序列化后的Java Object返回给调用者。
来看jboss-remoting对于此过程的一个更好的图示:
根据原理来回答下之前学习应用级协议带着的几个问题:
1、传输的标准格式是什么?
是Java ObjectStream。
2、怎么样将请求转化为传输的流?
基于Java串行化机制将请求的java object信息转化为流。
3、怎么接收和处理流?
根据采用的协议启动相应的监听端口,当有流进入后基于Java串行化机制将流进行反序列化,并根据RMI协议获取到相应的处理对象信息,进行调用并处理,处理完毕后的结果同样基于java串行化机制进行返回。
4、传输协议是?
Socket。
XML-RPC
XML-RPC也是一种和RMI类似的远程调用的协议,它和RMI的不同之处在于它以标准的xml格式来定义请求的信息(请求的对象、方法、参数等),这样的好处是什么呢,就是在跨语言通讯的时候也可以使用。
来看下XML-RPC协议的一次远程通信过程:
1、客户端发起请求,按照XML-RPC协议将请求信息进行填充;
2、填充完毕后将xml转化为流,通过传输协议进行传输;
3、接收到在接收到流后转换为xml,按照XML-RPC协议获取请求的信息并进行处理;
4、处理完毕后将结果按照XML-RPC协议写入xml中并返回。
图示以上过程:
同样来回答问题:
1、传输的标准格式是?
标准格式的XML。
2、怎么样将请求转化为传输的流?
将XML转化为流。
3、怎么接收和处理流?
通过监听的端口获取到请求的流,转化为XML,并根据协议获取请求的信息,进行处理并将结果写入XML中返回。
4、传输协议是?
Http。
--------------------------------------------------------------------------------------------------------------------------------------------------
Binary-RPC
Binary-RPC看名字就知道和XML-RPC是差不多的了,不同之处仅在于传输的标准格式由XML转为了二进制的格式。
同样来回答问题:
1、传输的标准格式是?
标准格式的二进制文件。
2、怎么样将请求转化为传输的流?
将二进制格式文件转化为流。
3、怎么接收和处理流?
通过监听的端口获取到请求的流,转化为二进制文件,根据协议获取请求的信息,进行处理并将结果写入XML中返回。
4、传输协议是?
Http。
--------------------------------------------------------------------------------------------------------------------------------------------------
SOAP
SOAP 原意为Simple Object Access Protocol,是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议,可以认为SOAP是XML RPC的高级版,两者的原理完全相同,都是http+XML,不同的仅在于两者定义的XML规范不同,SOAP也是Webservice采用的服务调用协议标准,因此在此就不多加阐述了。
--------------------------------------------------------------------------------------------------------------------------------------------------
CORBA
Common Object Request Broker Architecture(公用对象请求代理[调度]程序体系结构),是一组用来定义“分布式对象系统”的标准,由OMG(Object Menagement Group)作为发起和标准制定单位。CORBA的目的是定义一套协议,符合这个协议的对象可以互相交互,不论它们是用什么样的语言写的,不论它们运行于什么样的机器和操作系统。
CORBA在我看来是个类似于SOA的体系架构,涵盖可选的远程通信协议,但其本身不能列入通信协议这里来讲,而且CORBA基本淘汰,再加上对CORBA也不怎么懂,在此就不进行阐述了。
分享到:
相关推荐
Java远程通讯可选技术及原理(一)
Java远程通讯技术是构建分布式系统的关键,涉及到多种技术如RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等。这些技术在不同的场景下有着各自的优势和适用范围,理解它们的工作原理对于优化系统性能至关重要。 ...
这份“Java远程通讯技术及原理分析共18页.pdf”文档很可能是深入探讨了Java在分布式系统中的通信机制,包括其核心概念、技术和实践应用。 首先,我们要理解什么是Java远程通讯(Java Remote Method Invocation,...
在IT行业中,远程控制技术是一种重要的工具,尤其在在线教育、技术支持和远程协作等领域中扮演着关键角色。本文将深入探讨如何使用Java实现远程控制功能,并结合提供的源代码进行解析。 首先,Java作为一种跨平台的...
本文件是将 Java 中 通过远程url访问 转换成 HTML 文件 ,通过 dom4j转换成Java对象元素
此项目旨在提供一个稳定且可扩展的平台,以便开发者能够在Java应用程序或Web应用中集成远程桌面功能。 首先,我们来看如何在普通的Java程序中使用`properJavaRDP`。这通常涉及到以下步骤: 1. **添加依赖**:将`...
JAVA远程接口调用介绍 JAVA远程接口调用(RMI)是Java的一组API,用于开发分布式应用程序。RMI使用Java语言接口定义了远程对象,并集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。RMI使原先...
在IT行业中,远程监控是一项重要的技术,它允许管理员在远离设备的地方实时查看和管理系统状态。在Java中实现远程监控可以利用Java的多种内置特性,如JMX(Java Management Extensions)、RMI(Remote Method ...
Java实现的远程控制技术是一种利用网络通信协议进行设备或系统操作的技术,允许用户在一个设备上对另一设备进行实时控制。本项目以Java编程语言为基础,实现了高效、低延迟(约200ms)的远程控制功能,其设计灵感...
Java远程方法调用(Remote Method Invocation,简称RMI)组件是一种关键的技术,它允许Java应用程序在不同的网络节点之间透明地调用对象的方法,仿佛这些对象都在本地进程中一样。这种技术在构建分布式系统、大型...
Java 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 Socket
Java 远程控制技术是利用 Java 的网络编程能力来实现在不同计算机间进行交互操作的一种技术。在 Java 中,远程控制通常涉及到 RMI (Remote Method Invocation)、JMX (Java Management Extensions) 和 SSH (Secure ...
这种技术的核心在于`java.net.*`和`java.awt.robot.*`这两个包,它们分别提供了网络通信和模拟用户操作的能力。 首先,`java.net.*`包是Java提供的网络编程接口,它包含了一系列类和接口,如Socket、ServerSocket、...
在Java编程中,有时我们需要与远程Linux服务器进行交互,例如下载或上传文件。在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux...
"源码"意味着提供的是可读的、未编译的程序代码,这对于学习和理解远程控制软件的工作原理非常有帮助。用户可以查看并修改代码,以适应自己的需求或者进行深入学习。 “远程”标签指的是软件的核心功能——远程连接...
综上所述,"javaswing版本远程控制"涉及了Java桌面应用开发、网络通信、远程操作以及版本管理等多个IT领域的知识,需要开发者具备扎实的Java基础,熟悉网络编程和远程控制原理,并能灵活运用各种工具和技术来实现...
在Java编程领域,远程控制是一种常见且实用的功能,它允许用户通过网络操作远程计算机,实现类似于本地操作的效果。本文将详细讲解如何使用Java实现客户端和服务器端的远程控制功能,包括屏幕共享、鼠标和键盘操作,...
Java远程控制系统,如同标题所提及的“Java远程控制系统2 桌面控制”,是一种基于Java技术实现的桌面共享和远程管理...通过深入研究和实践,开发者不仅可以掌握远程控制软件的基本原理,还能进一步熟悉Java的相关技术。
在Java和JSP开发中,有时我们需要处理在线编辑器上传的内容,这可能涉及到从Web页面中获取远程图片并将其保存到本地服务器。这样的功能对于确保网站的性能和用户体验至关重要,因为将图片本地化可以减少加载时间,...