SOA,RMI,RPC,SOAP,REST等名称的理解

         今天我看到之前收藏的一篇文章,主要讲的分布式的一些东西,现在来回顾一下一些东西的意思,一下都是我自己的理解,如果有不对的地方请尽管提出,哈哈。本文主要讲一些名词。我之前很容易混淆的,我相信现在也很多人不知道其中的区别

1、SOA(本文不讲一些官方定义)

       全拼Service Oriented Architecture 中文意思就是面向服务构架是一种模型,说白了是一种思想。为什么会出现这种思想呢?其实就是人们的需求越来越大,流量越来越大,所以系统也是越来越大。举一个列子,公司A以前有一个类似与淘宝的电商项目(B2C)A,后面随着公司业务扩大,要做一个B2B项目B以及项目C。项目A,B,C都是需要支付的。那如果常规就是把项目A的支付代码放到B,C上,以后如果还有项目就继续这么做。但这样太没有效率了。所以就产生了分布式,SOA等一些名称。商量之后的做法就是讲支付独立出来成为一个新的项目,这里我们叫D系统,A,B,C项目需要支付的时候直接调用D项目的支付接口。这样一来,以后不管多少项目,想要支付,只要有一个支付项目就行,直接调用接口。我不知道这样说大家能不能理解SOA这种思想产生的原因。

推荐链接http://blog.csdn.net/luohuacanyue/article/details/12521699



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

你可能感兴趣的:(SOA,RMI,RPC,SOAP,REST等名称的理解)