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等。这些技术在不同的场景下有着各自的优势和适用范围,理解它们的工作原理对于优化系统性能至关重要。 ...
在IT行业中,远程控制技术是一种重要的工具,尤其在在线教育、技术支持和远程协作等领域中扮演着关键角色。本文将深入探讨如何使用Java实现远程控制功能,并结合提供的源代码进行解析。 首先,Java作为一种跨平台的...
本文件是将 Java 中 通过远程url访问 转换成 HTML 文件 ,通过 dom4j转换成Java对象元素
Java 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 Socket
Java实现远程桌面连接的properjavardp源码工程,可直接运行。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
主要实现的是登录服务器操作服务器的中的文件数据,支持读写的操作。主要使用的方法getProperties是设置配置的login(参数一是访问服务器的配置,参数二是设置读还是写)方法是读写连接服务器
在Java编程领域,远程控制是一种常见且实用的功能,它允许用户通过网络操作远程计算机,实现类似于本地操作的效果。本文将详细讲解如何使用Java实现客户端和服务器端的远程控制功能,包括屏幕共享、鼠标和键盘操作,...
Java远程控制系统,如同标题所提及的“Java远程控制系统2 桌面控制”,是一种基于Java技术实现的桌面共享和远程管理...通过深入研究和实践,开发者不仅可以掌握远程控制软件的基本原理,还能进一步熟悉Java的相关技术。
在Java和JSP开发中,有时我们需要处理在线编辑器上传的内容,这可能涉及到从Web页面中获取远程图片并将其保存到本地服务器。这样的功能对于确保网站的性能和用户体验至关重要,因为将图片本地化可以减少加载时间,...
标题“Java远程监控源码”涉及的是Java编程中关于远程监控和控制的实现。这个项目可能包含一个客户端(client)和服务器端(server)的架构,通过Socket通信进行数据交互,利用Java Robot类来捕获屏幕图像,以及...
JAVA读取远程网页文件并保存本地 从远程URL地址获取网页文件下载到本地 这个方法可以生成静态HTML文件使用!
《基于JAVA CS远程监控系统软件的实现》是一篇深度探讨Java客户端-服务器(Client-Server,简称CS)架构在远程监控...通过深入学习这个系统,不仅可以掌握Java编程技术,还能了解到远程监控系统的设计原理和实现策略。
近年来,网络技术的不断发展,为远程监控技术的发展创造了条件。远程监控系统软件越来越受到人们的重视,其实用性也毋庸质疑。基于JAVA C/S远程监控系统软件突破了空间的限制,使用者不用亲临,在自己的电脑面前就能...
一、Java远程屏幕监控系统的技术原理 1. Java RMI(Remote Method Invocation):Java远程方法调用是Java平台提供的用于分布式计算的关键技术。RMI使得一个Java对象可以调用另一个位于不同JVM中的对象的方法,这...
在Java编程中,有时我们需要实现一个功能,即通过代码远程登录Linux服务器并执行特定的Linux命令。这在自动化运维、远程脚本执行等场景中非常常见。本篇将详细讲解如何实现这一目标,并提供相关源码及jar包。 首先...
此外,为了简化操作,可以将这些步骤封装成一个可重用的Java类或库,提供易于调用的接口。 这个过程中可能涉及到的Java类和接口包括`DriverManager`, `Connection`, `Statement`, `ResultSet`, `File`, `URL`, `...
Java远程控制技术是一种允许用户通过网络对另一台计算机进行操作的技术,主要应用于系统管理、技术支持以及分布式应用。在这个"Java远程控制源代码.zip"压缩包中,我们可以预见到包含了一系列用于实现这一功能的源...
Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...
在IT领域,远程桌面连接是一种常见的技术,它允许用户通过网络访问并控制另一台计算机的桌面环境。在这个项目中,"Java实现远程桌面"是一个使用纯Java编程语言编写的远程桌面解决方案,它使得用户能够在一台计算机上...