`

分布式通信的几种方式(EJB、RMI、RPC、JMS、web service杂谈)

 
阅读更多

RPC(remote produce calL)
RPC是远程过程调用协议,它是基于C/S模型调用的机制,客户机向服务器端发送调用请求等待服务器应答,是一种典型的请求应答机制,大致过程可以理解为本地分布式对象向本机发请求,不用自己编写底层通信本机会通过网络向服务器发送请求,服务器对象接受参数后,经过处理再把处理后的结果发送回客户端。
 它是早期的支持分布式一些,缺点rpc是面向过程的远程调用,不支持面向对象,所以现在用的人就少了。
 不支持异步调用
 
RMI(remote method invocation)
rmi也是远程方法调用,似乎和RPC一样都是调用远程的方法,我们可以把RMI看作是用java语言实现了RPC协议,由于RPC不支持对象通信,这也是RMI比RPC的优越之处,支持对象传输。
它遵循的不是SOAP协议,而是JRMP(java remote message protocol)转为java对象所制定的一个协议,可以运行在任何用java语言写的系统上,具有跨平台特性,它不能跨语言。
既然用只支持java那么它也有了java对象的很多特性,如果垃圾回收、面向对象等。
RMI 采用stubs (客户机)和 skeletons (框架)来进行远程对象(remote object)的通讯。stub 充当远程对象的客户端代理,有着和远程对象相同的远程接口,远程对象的调用实际是通过调用该对象的客户端代理对象stub来完成的,效果和调用本地对象一样。
传输的数据一般是java对象,而不是XML格式的数据。
优点:支持分布式对象、跨平台,stubs/skeletons机制;缺点:不能跨语言。

 

JMS(java remote service)

jms是在各个java类(包括ejb类)之间传递消息的中间件,好比给我们送信的邮递员,在各个人之间收发信件。
支持两种消息模型P2P和pub/stub,即点对点和发布订阅模型。
传输的是一种消息移植机制,将消息从一个客户机移动到另一个终端。
优点:支持异步通信、消息produce和recept松耦合。
 

 

EJB(enterprise java bean)

ejb是java EE 中的一个规范,该规范描述了分布式应用程序需要解决的问题,例如事务处理、安全、日志、分布式等,而同时呢,sun公司也实现了自己定义的这一个标准,相当于自己颁布一个标准然后,又给出了实现供别人使用,实现以很多API的方式提供给用的人。

ejb是按照java服务器接口定义的java类,可以理解为一个特殊的java类, 放在容器里容器可以帮助该类管理事务、 分布式、安全等,一般小的程序不会用到,只有大型分布式系统才会用到ejb,既然ejb是一

个java类或是一个组件,颗粒较小,这也是与Webservice的区别之一,下面会说到,它就可以被其它一个或多个模块调用。

包含了三种类型的Bean,可以通过注释JPA一个规范来标记,其中有一种Bean,叫MDB消息驱动bean,它的通信机制涉及到了JMS协议。
ejb可以进行远程调用,但是不能够跨语言,ejb是同步调用,而平时我们说的的ejb异步调用指的是ejb的MDB异步通信。

 

 

 

 

 

Web Service
Web service是一种网络间跨平台、跨语言的分布式系统间通信的标准。传输的数据位XML、json等格式的数据,应用范围广。
Web Service大体上分为5个层次:

 
1. Http传输信道 
2. XML的数据格式
3. SOAP封装格式
4. WSDL的描述方式
5. UDDI  UDDI是一种目录服务,企业可以使用它对Webservices进行注册和搜索

 

 
EJB与JMS的关系
它们其实是没有多大关系的,它们都是java EE的规范,ejb的一种类MDB实现了JMS规范,当然是先JMS规范的不止有ejb的mdb,比如apache  ActiveMQ也实现了JMS规范,我们平时用的是实现了JMS的产品,而不是JMS规范。
 

Web service与EJB
对这两个常常有点迷惑人,因为他们都实现了分布式应用调用,虽然他们很相似但是还是有很多区别的,首先通信协议是不一样的,ejb采用rmi-iiop协议,Web service利用http协议传输数据,优点常识的都知道http协议支持的较广泛,从这点来看Web Service层次要高一些、俗话说站得高看得远。
Webservice主要关注于解决异构系统、不同语言系统通信,其关注的是分布式服务开发、着手点要高、站的角度高,而ejb可以看做是分布式编程平台,通过容器和组件,简化了程序开发、调试和部署等它关注的是分布式组件开发,粒度小。
Web service可以看做是异构系统、异构语言系统间通信的一个标准,而ejb只属于J2EE规范的一部分。
ejb底层用rmi-iiop协议进行通信,防火墙会阻止;web service是基于http协议进行通信,防火墙不会阻止。
 
SOA与Web Service
SOA是面向服务体系架构,是一种编程思想,SOA不是Web Service,WebService是目前最适合实现SOA的技术。
 
小结
这些通信标准或实现各有个的优点和缺点,在实际使用中根据具体情况合理选择。

分享到:
评论

相关推荐

    EJB 2.1中实现Web Service.doc

    这种基于标准的定义方式使得Web Service能够在各种平台之间无缝对接,打破了传统分布式计算技术如Java RMI和CORBA IIOP的平台束缚。 SOAP作为一个基于XML的协议,具备可扩展性和广泛的接纳度。WSDL则让开发者能够...

    wlfullclient.jar 客户端开发包 rmi\jms\ejb3 网络安全人必备

    本文将详细介绍`wlfullclient.jar`客户端开发包,它是一个专为WebLogic服务器开发的全面工具集,包含了对RMI(Remote Method Invocation)、JMS(Java Message Service)和EJB3(Enterprise JavaBeans 3.0)的支持,...

    rmi和rpc Demo

    - **RMI**常用于Java应用间的通信,例如EJB(Enterprise JavaBeans)或JMS(Java Message Service)。 - **RPC**广泛应用于各种分布式系统,如Google的gRPC、Apache Thrift、Hadoop的HDFS和MapReduce等。 在开发...

    ejb3.0 分布式事务

    在企业级Java应用中,EJB(Enterprise JavaBeans)3.0提供了一种强大而灵活的方式来处理分布式事务。分布式事务是指跨越多个数据库或资源管理器的单一逻辑操作,确保了数据的一致性和完整性。EJB3.0引入了许多改进,...

    基于J2EE的Web Service分布式应用研究.pdf

    2. Web Service技术:Web Service是一种基于网络的分布式系统技术,能够使应用程序通过网络进行通信。Web Service 使用标准的HTTP和XML协议,允许来自不同平台和编程语言的应用程序相互操作。JAX-RPC(Java API for ...

    J2EE的EJB和RMI相关PPT和PDF文档

    3. **消息驱动Bean(Message-Driven Beans)**:它们用于接收和处理JMS(Java Message Service)消息,是异步通信的主要手段。 EJB有三个主要版本:EJB 2.x,EJB 3.0以及后续的3.x版本。从EJB 3.0开始,引入了更轻...

    EJB rmi-overview PPT

    Java RMI(Remote Method Invocation)是Java平台中用于实现分布式计算的一种机制,它允许一个Java对象调用位于另一个JVM(Java Virtual Machine)上的对象的方法,即使这两个对象位于不同的物理设备上。EJB...

    EJB TO JMS

    这段代码演示了EJB如何通过JMS Topic与其他组件进行通信,但实际的EJB集成可能更复杂,包括在EJB方法中调用这些JMS操作。通常,EJB会使用消息驱动Bean来接收消息,而业务逻辑则在EJB组件中执行。 在实际应用中,...

    ejb,rmi.rar_AppBarDemo_ejb_j2ee ejb

    EJB提供了一种标准的方式来封装和管理业务逻辑,而RMI则使得这些逻辑可以在不同的系统间透明地调用。这种组合可以帮助开发者构建分布式、高可用性的系统,同时降低了维护和扩展的成本。 www.pudn.com.txt可能是一个...

    EJB 基于Java的远程方法调用(RMI)技术

    **Enterprise JavaBeans (EJB)** 是一种基于Java的组件模型,旨在为开发分布式企业级应用提供标准化的方法。它相当于DCOM(Distributed Component Object Model),即分布式组件对象模型,在Windows平台上的角色,但...

    SOA\精通SOA_基于服务总线的Struts+EJB+Web Service整合应用开发

    本资料深入探讨了如何在SOA框架下,利用Struts、EJB和Web Service这三种技术进行高效整合,以实现灵活、可扩展的应用程序。 **1. Struts框架** Struts是Apache软件基金会的一个开源项目,它是MVC(Model-View-...

    通过Web Service让Delphi/Visual Basic程序访问EJB

    而Web Service则提供了一种跨语言、跨平台的通信方式,使得非Java环境的应用如Delphi和VB也能与EJB交互。 在描述中提到的博客链接可能包含详细的步骤和示例,虽然具体内容未给出,但我们可以推断出一般的过程: 1....

    分布式计算-Java RMI实践

    综上所述,Java RMI为开发者提供了一种有效的方式,实现了Java对象在分布式环境中的通信,是构建分布式系统的重要工具。通过理解RMI的原理和实践,开发者能够更好地设计和实现跨网络的复杂应用程序。

    《EJB-RMI入门》

    RMI的核心在于提供了一种抽象的方式,让开发者可以像调用本地方法一样调用远程对象的方法,无需关心底层通信细节。这一特性使得Java的分布式应用程序能够保持面向对象的设计原则,简化了开发流程。RMI使用Java远程...

    EJB分布式远程调用的小例子的简单实现

    本示例将探讨如何实现EJB的分布式远程调用,这是一种让不同网络节点上的软件组件能够相互通信的技术。 在Java EE中,EJB允许开发者创建业务逻辑组件,这些组件可以被其他应用或服务远程调用。EJB分为三种类型:会话...

    Java Web EJB3+JPA+Struts2 分布式宠物商店源代码项目

    分布式宠物商店(EJB3+JPA+Struts2) 宠物商店(petstore)是个比较经典的demo案例, 以宠物商店充分演示EJB3与Java Web程序,Java图形界面程序的结合 主要模块:会员模块 宠物类别模块 宠物模块 购物模块

    三种方式实现java远程调用(rmi),绝对可用

    Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...

    一种新的分布式通信模式的研究与实现

    ### 一种新的分布式通信模式的研究与实现 #### 摘要 本文提出了一种新的分布式通信模式,该模式基于XML技术,并结合了UDP与FTP协议的特点。相较于传统的分布式中间件技术(如DCOM、EJB、CORBA等),此模式具有更好...

Global site tag (gtag.js) - Google Analytics