RPC与REST的区别

原创
小哥 2年前 (2023-05-24) 阅读数 37 #大杂烩

转自:http://blog.csdn.net/u013628152/article/details/47669797

一:RPC
RPC 远程过程调用, 一个非常简单的概念, 比如拨打本地服务(方法)以相同的方式调用服务器的服务(方法).
典型的实现包括 XML-RPC , JSON-RPC , 沟通方式基本相同, 唯一的区别是传输数据的格式.
(如果你已经习惯了XML重型尖括号,你不妨可以尝试下更加轻型,高效,传输效率高 JSON.)
一个简单的沟通过程通常涉及:
Request

<?xml version="1.0"?> <methodCall> <methodName>member.get_username_by_id</methodName> <params> <param> <value><i4>1</i4></value> </param> </params> </methodCall>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Response

<?xml version="1.0"?> <methodResponse> <params> <param> <value><string>Zhu Tao</string></value> </param> </params> </methodResponse>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

将过程调用的方法及其参数发送到服务器, 获取服务端返回的方法执行结果.

2:REST
REST 不是一种协议,这是一个建筑, 一种 Web Service 如果满意 REST 几个条件, 通常称为此系统 Restful 的.

这里提到的条件包括:

C/S结构 (这是Internet服务的基本特征)
无状态 (很熟悉吧,呵呵)
可以cache (记住浏览器?)
分层系统 (记住无数的架构?)
统一接口 (如果这可能,程序员有福了, :D)
code on demand(可选, 实际上,这是可扩展性的要求)
看完这些功能后,你还记得什么?

你可能会破口而出: HTTP.

我答: You got it!

HTTP是WWW最核心的协议, 它统一了简单地分布在世界各个角落的资源, 统一地址, 方法简单, 和一定数量的表达式.(你可能对这三点有模糊的描述,请go ahead).

REST 的三个要素是 唯一资源标识符, 方法简单 (这里的方法是一个抽象的概念), 某种表达方式.

REST 是以 资源 为中心, 名词是资源的地址, 动词是应用于名词的有限运算, 表达式是各种资源形式的抽象.

以HTTP为例, 名词即为URI(统一资源标识), 动词包括POST, GET, PUT, DELETE等(还有其他不常用的东西2个,所以 整个动词集是有限的), 资源的形式(如text, html, image, pdf等)

三:RPC与REST的区别
如果你只想记住一件事,所以请记住 RPC它动词居中, REST它以名词为中心, 此处的 动词指方法, 名词指资源.

你会发现,动词居中,意味着,当您需要添加新功能时,您必须添加更多谓词, 此时,服务器需要实现 对应动词(方法), 客户需要知道这个新动词并拨打电话.

并以名词为中心, 假使我请求的是 hostname/friends/, 无论这个URI相应的服务如何变化,客户端不需要 关注和更新,而且这种变化对客户也是透明的.

至于其他区别,对实现语言的依赖, 耦合性等,这些都源于上面提到的根本区别.

让我们回到介绍部分2个问题. 当您每天使用它时HTTP冲浪时,你们都在使用它 REST 与远程服务器亲密接触. 当你使用Gtalk与同事和朋友交流时,你很享受它 RPC 的便利.

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门