`
xuyuanshuaaa
  • 浏览: 387712 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java 远程通信协议

 
阅读更多
Java 远程通讯可选技术及原理
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇 blog中我们将来一探究竟,抛砖引玉,欢迎大家提供更多的实现远程通讯的技术和原理的介绍。

基本原理
要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现,其中传输协议比较出名的有http、tcp、udp等等,http、tcp、udp都是在为某类应用场景而定义出的传输协议,网络IO,主要有bio、nio、aio三种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言通常都会提供一些更为贴近应用易用的应用层协议。

应用级协议
远程服务通讯,需要达到的目标是在一台计算机发起请求,另外一台机器在接收到请求后进行相应的处理并将结果返回给请求端,这其中又会有诸如one way request、同步请求、异步请求等等请求方式,按照网络通信原理,需要实现这个需要做的就是将请求转换成流,通过传输协议传输至远端,远端计算机在接收到请求的流后进行处理,处理完毕后将结果转化为流,并通过传输协议返回给调用端。
原理是这样的,但为了应用的方便,业界推出了很多基于此原理之上的应用级的协议,使得大家可以不用去直接操作这么底层的东西,通常应用级的远程通信协议会提供:
1、为了避免直接做流操作这么麻烦,提供一种更加易用或贴合语言的标准传输格式;
2、网络通信机制的实现,就是替你完成了将传输格式转化为流,通过某种传输协议传输至远端计算机,远端计算机在接收到流后转化为传输格式,并进行存储或以某种方式通知远端计算机。
所以在学习应用级的远程通信协议时,我们可以带着这几个问题进行学习:
1、传输的标准格式是什么?
2、怎么样将请求转化为传输的流?
3、怎么接收和处理流?
4、传输协议是?
不过应用级的远程通信协议并不会在传输协议上做什么多大的改进,主要是在流操作方面,让应用层生成流和处理流的这个过程更加的贴合所使用的语言或标准,至于传输协议则通常都是可选的,在java领域中知名的有:RMI、XML-RPC、Binary-RPC、SOAP、CORBA、JMS,来具体的看看这些远程通信的应用级协议:
--------------------------------------------------------------------------------------------------------------------------------------------------
RMI
RMI是个典型的为java定制的远程通信协议,我们都知道,在single vm中,我们可以通过直接调用java object instance来实现通信,那么在远程通信时,如果也能按照这种方式当然是最好了,这种远程通信的机制成为RPC(Remote Procedure Call),RMI正是朝着这个目标而诞生的。

来看下基于RMI的一次完整的远程通信过程的原理:
1、客户端发起请求,请求转交至RMI客户端的stub类;
2、stub类将请求的接口、方法、参数等信息进行序列化;
3、基于tcp/ip将序列化后的流传输至服务器端;
4、服务器端接收到流后转发至相应的skelton类;
5、skelton类将请求的信息反序列化后调用实际的处理类;
6、处理类处理完毕后将结果返回给skelton类;
7、Skelton类将结果序列化,通过tcp/ip将流传送给客户端的stub;
8、stub在接收到流后反序列化,将反序列化后的Java Object返回给调用者。
来看jboss-remoting对于此过程的一个更好的图示:

根据原理来回答下之前学习应用级协议带着的几个问题:
1、传输的标准格式是什么?
      是Java ObjectStream。
2、怎么样将请求转化为传输的流?
      基于Java串行化机制将请求的java object信息转化为流。
3、怎么接收和处理流?
      根据采用的协议启动相应的监听端口,当有流进入后基于Java串行化机制将流进行反序列化,并根据RMI协议获取到相应的处理对象信息,进行调用并处理,处理完毕后的结果同样基于java串行化机制进行返回。
4、传输协议是?
      tcp/ip。
分享到:
评论

相关推荐

    了解java远程通讯技术的最好的文章

    了解java远程通讯技术的最好的文章, 我目前没有找到其他的, 里面包括 RMI, RPC, xml-rpc, , 协议: socket, http+io, 传输协议比较出名的有http、tcp、udp等等,http、tcp、udp都是在基于Socket概念上为某类应用...

    Silverlight与Java通信远程调用封装

    Silverlight跨域访问Java,通信中传递对象一直是难题。对象一旦遇到Date、复杂组合类型,容器类型就很难操作。 此封装使用JSON作为中间协议,以最简方式达到目标。可以转换日常使用中的任意复杂类型通信,成功解决C#...

    GB-26875.3-2011 城市消防远程监控系统 第3部分:报警传输网络通信协议

    GB-26875.3-2011 城市消防远程监控系统 第3部分:报警传输网络通信协议,文字版可复制粘贴 GB 26875{(城市消防远程监控系统》分为六个部分: ——第1部分:用户信息传输装置; ——第2部分:通信服务器软件功能要求...

    Java利用UDP协议实现多广播组通信源码

    利用Java语言基于UDP协议建立的多播广播组通信,可以实现一个服务器向多个客户端实时发送信息,基于GUI界面设计,可视化操作。

    基于Java实现Socket通信的远程监控系统【100012520】

    ​ 该系统基于 FTP 服务器修改而成,使用 TCP 协议传送命令,使用 UDP 协议进行文件发送以及视频流的传输。在监控目标机端运行 FileServer.java 即可对其进行监控。 ​ Server 端使用了线程池,最大支持 4 个客户端...

    JAVA网络通信系统的研究与开发.rar

    该系统可以基于不同的网络协议(如TCP/IP、UDP等)实现数据的可靠传输、实时通信、远程控制等功能。 功能特点: 网络连接管理:Java网络通信系统能够管理客户端与服务器之间的网络连接,包括建立连接、保持连接、...

    Java RMI远程方法调用详解

    RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于...

    Java远程监控系统设计及功能介绍.doc

    Java远程监控系统设计及功能介绍 Java Java远程监控系统是一个C/S系统,分为服务器端和客户端两部分。服务端与客户端 建 立远程连接,可以抓取客户端的图像,还可以进行远程操作。要实现Java远程监控 系统, 主要是...

    java开源包3

    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    ModbusTCP整合java springboot: 远程操控真机demo

    写寄存器(每台内机占用 4 个寄存器) 1、开关设定 2、模式设定 3、温度设定 4、风速设定 读寄存器(每台内机占用 6 个寄存器) 1、开关查询 2、模式查询 3、温度查询 4、风速查询 ...6、故障查询

    JAVA_API1.6文档(中文)

    java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer ...

    JAVA-RMI使用快速入门.doc

    RMI目前使用Java远程消息交 换协议JRMP(Java Remote Messaging Protocol)进行通信。JRMP是专为Java的远程对象制定的协议。因此,Java RMI具有Java的“Write Once,Run Anywhere”的优点,是分布式应用系统的百分之...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java实现的组播聊天室

    实现组内聊天的功能,通过udp协议实现 首先输入控制命令-c 若输入-c 1代表加入组1 -c exit退出组 -c nodes代表组内成员显示 其他文本输入为聊天内容

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    基于Java的远程视频会议系统(系统+论文).rar

    基于Java的远程视频会议系统是一个为现代远程沟通设计的综合解决方案,旨在通过高效的视频和音频通信技术支持无缝的在线协作。该系统采用Java语言开发,确保了跨平台兼容性和稳定性,能够在多种操作系统上运行无误。...

    GB-26875.4-2011 城市消防远程监控系统 第4部分:基本数据项

    GB-26875.4-2011 城市消防远程监控系统 第4...——第3部分:报警传输网络通信协议; ——第4部分:基本数据项; ——第5部分:受理软件功能要求; ——第6部分:信息管理软件功能要求。 本部分为GB 26875的第4部分。

    java开源包4

    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...

    java开源包101

    7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) ...

Global site tag (gtag.js) - Google Analytics