SOA,Webservice,SOAP,REST,RPC,RMI的区别与联系
SOA,Webservice,SOAP,REST,RPC,RMI的区别与联系
SOA面向服务的软件架构(Service Oriented Architecture)
是一种计算机软件的设计模式,主要应用于不通应用组件中通过某种协议来互操作
它的基本设计原理是:服务提供了一个简单的接口,抽象了底层的复杂性,然后用户可以访问独立的服务,而不需要去了解服务底层平台实现。
正因为SOA架构实现不依赖于技术,因此能够被各种不同的技术实现。
例如:
SOAP, RPC
REST
DCOM
CORBA
OPC-UA
Web services
DDS
Java RMI
WCF (Microsoft's implementation of web services now forms a part of WCF)
Apache Thrift
SORCER
因此REST、SOAP、RPC、RMI、DCOM等都是SOA的一种实现而已
2、RMI
SOA思想提出以后,就有很多基于在这个模型上的产物,很多适用于分布式的产物,同事也是越来越庞大系统的产物。Java RMI (Remote Method Invocation 远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案,所以如果不是java的系统就不能使用RMI,这也是其缺点之一。RMI全部的宗旨就是尽可能简化远程接口对象的使用,相当于在服务器端暴露服务,通过bind或者rebind方法注册到RMIRegistry中,注册的信息中包含url,以及相应的类。客户端在在注册中心根据url得到远程对象(stub,存根),然后调用stub远程调用方法,底层的一些stub怎么连接服务器,怎么获取结果返回,下面的参考链接都应该有讲到。
参考文章:http://www.jianshu.com/p/2c78554a3f36
http://blog.csdn.net/guyuealian/article/details/51992182
3、RPC
了解上面的RMI,它的主要的流程就是Client<-->stub<-->[NETWORK]<-->skeleton<-->Server,还有一个比较重要的概念就是RMIRegistry
,其实大家网上去查RPC的时候流程其实都差不多,可能叫法和底层东西有点不一样,其实其实现所遵循的模型还是类似的。主要的区别的话是RMI是只适用于java的,而RPC任何语言都可以;第二点就是他们两者的调用方式不一样,最终的目标还是一致
其与RMI大致的区别
1)RPC 跨语言,而 RMI只支持Java。
(2)RMI 调用远程对象方法,允许方法返回 Java 对象以及基本数据类型,而RPC 不支持对象的概念,传送到 RPC
服务的消息由外部数据表示 (External Data Representation, XDR) 语言表示,这种语言抽象了字节序类和数据类型结
构之间的差异。只有由 XDR 定义的数据类型才能被传递, 可以说 RMI 是面向对象方式的 Java RPC 。
(3)在方法调用上,RMI中,远程接口使每个远程方法都具有方法签名(url)。如果一个方法在服务器上执行,但是没有相
匹配的签名被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。
在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参数集和一个文本值,通常形成“classname.methodname”的形式。这就向RPC服务器表明,被请求的方法在为 “classname”的类中,名
叫“methodname”。然后RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。这里的
参数类型是与RPC请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后返回客户方。说的直白一点就是rmi是自己写一个url,如果正确就获得相应的stub,而rpc的url是从注册中心去拿的,不会出现url不对的情况
http://blog.jobbole.com/92290/
4、soap
全称Simple Object Access Protocol简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。关键词——协议,实现分布式,webservice的一种协议,一种解决方式。
参考文章:http://blog.csdn.net/zhangzeyuaaa/article/details/20041015
5、rest
比如有个url:http:www.test.com/user/1,这个地址既要表示删除id为1的用户、又要表示修改id为1的用户,还要表达获取id为1的用户,那么,就要用到http1.1的不同的请求方法:get、post、delete、put,
对于rest这个东西,其实本人一点也没有接触吧,一下两个网址,本人认为比较好,大伙可以去看一下,本人就rest就不多阐述了(怕误导大家,哈哈)
http://www.ruanyifeng.com/blog/2011/09/restful.html
http://www.jianshu.com/p/65ab865a5e9f
Web Service
Web Service提供的服务是基于web容器的,底层使用http协议,类似一个远程的服务提供者,比如天气预报服务,对各地客户端提供天气预报,是一种请求应答的机制,是跨系统跨平台的。
首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class) 这个代理类负责与WebService
服务器进行Request 和Response 当一个数据(XML格式的)被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这个Request的SOAP包进行解析,然后对事物进行处理,处理结束以后再对这个计算结果进行SOAP
包装,然后把这个包作为一个Response发送给客户端的代理类(Proxy Class),同样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操作。这就是WebService的一个运行过程。
webservice是一种标准,他可以通过soap或rest的方式来实现。
传统的soap-webservice,使用了soap协议(基于xml包装)等。如果使用restful-webservice的话,则不需要soap与之相关的协议等,而是通过最简单的 http 协议传输数据 ( 包括 xml 或 json) 。既简化了设计,也减少了网络传输量(因为只传输代表数据的 xml 或 json ,没有额外的 xml 包装)。
Web Service主要涉及的概念:
1. Http传输信道
2. XML的数据格式
3. SOAP封装格式
4. WSDL的描述方式
5. UDDI UDDI是一种目录服务,企业可以使用它对Webservices进行注册和搜索
SOA,Webservice,SOAP,REST,RPC,RMI的区别与联系的更多相关文章
- 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解(转载)
相关参考文章: 谈谈自己对REST.SOA.SOAP.RPC.ICE.ESB.BPM知识汇总及理解 微服务SOA架构与RPC远程过程调用 SOA和微服务架构的区别 SOA: 维基百科解释:SOA:面向 ...
- REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
转载自处blog.csdn.net/tantexian. SOA: 维基百科解释:SOA:面向服务的软件架构(Service Oriented Architecture),是一种计算机软件的设计模式, ...
- 【转载】谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
转载自:https://blog.csdn.net/tantexian/article/details/48196453 SOA: 维基百科解释:SOA:面向服务的软件架构(Service Orien ...
- 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别(转载)
转载来源:https://youzhixueyuan.com/the-difference-between-restful-soap-rpc-soa-and-micro-service.html 内容 ...
- RPC与RMI的区别
分布式项目按照以下发展经历了以下技术: CORBA: RMI:基于远程接口的调用 RMI-RROP:这是RMI与CORBA的结合,用在了EJB技术上,EJB留给世界上是优秀的理论和糟糕的架构. WEB ...
- SOA、SOAP、REST、RPC
1.SOA SOA(面向服务的软件架构.Service Oriented Architecture),是一种软件设计模式,主要应用于不同应用组件之间通过某种协议来互操作.例如典型的 通信网络协议.因 ...
- RPC和RMI的区别(Difference Between RPC and RMI)
RPC和RMI的区别(Difference Between RPC and RMI) RPC vs RMI RPC (Remote Procedure Call) and RMI (Remote Me ...
- MVC、RPC、SOA、微服务架构之间的区别
MVC.RPC.SOA.微服务架构之间的区别 一.MVC架构 其实MVC架构就是一个单体架构. 代表技术:Struts2.springMVC.Spring.Mybatis 等等. 二.RPC架构 RP ...
- c# WebService SOAP及Rest调用
SOAP及Rest的调用区别参照如下: REST似乎在一夜间兴起了,这可能引起一些争议,反对者可以说REST是WEB诞生之始甚而是HTTP出现之日就相伴而生的原则.但是毋庸置疑的事实是,在Google ...
随机推荐
- ES版本控制
版本控制 ElasticSearch采用了乐观锁来保证数据的一致性,也就是说,当用户对document进行操作时,并不需要对该doucument作加锁和解锁的操作,只需要指定要操作的版本即可.当版本号 ...
- 7.css浮动与定位
外边距塌陷 解决方案: ◆给父盒子加border ◆overflow:hidden; bfc 行内元素可以定义左右的内外边距,上下会被忽略掉. 行内块可以定义内外边距. 文档流(标准流) 元素自上而下 ...
- 在 Centos7 的KVM上启用嵌套虚拟化
1.嵌套虚拟化意味着在虚拟机内配置虚拟化环境.换句话说,我们可以说嵌套虚拟化是虚拟机管理程序hypervisor的一个特性,它允许我们通过虚拟化管理程序(宿主机)的硬件加速在虚拟服务器内安装和运行虚拟 ...
- WinRAR试用过期决绝方法
一.WinRAR 试用过期决绝方法 直接去WINRAR官方下个版本装上然后这样 复制以下内容(红色)到记事本,保存为rarreg.key文件(即文件名是rarreg,扩展名是key),把这文件拷贝到W ...
- netcore的NLog使用小记
1. 启动应用程序日志配置 修改Program.cs,在WebHostBuilder构建时配置日志 public static IWebHostBuilder CreateWebHostBuilder ...
- 【BZOJ3709】 [PA2014]Bohater(贪心)
传送门 BZOJ Solution 考虑如果可以回血肯定要打,那么就是按照伤害值从小到大排个序能打就打,不能打就\(NIE\). 接着看不能够回血的,emmm,把这个过程反着看一下就是打一个怪扣\(a ...
- underscore.js源码研究(6)
概述 很早就想研究underscore源码了,虽然underscore.js这个库有些过时了,但是我还是想学习一下库的架构,函数式编程以及常用方法的编写这些方面的内容,又恰好没什么其它要研究的了,所以 ...
- ajax请求报语法错误
今天改代码修正完一个ajax请求后,调试发现出错进error方法,查看错误信息报语法错误,具体是调用parseJSON方法时出错,因为我是用json方式传递的参数,所以第一时间查看data参数是否正确 ...
- tkinter如何设置界面消失 当制作一个登陆界面时,登陆成功之后,如何让登陆界面本身消失
tkinter如何设置界面消失 当制作一个登陆界面时,登陆成功之后,如何让登陆界面本身消失 if querySQL.checkAll():#用户名和密码都输入正确 self.root.withdraw ...
- 关于c++类的一些知识的总结
1.经常会听到“类的声明.类的定义.类的实现”,它们之间有什么不一样? 经过查阅https://www.cnblogs.com/kkshaq/p/4660073.html博客的说法,类的声明是在.h文 ...