这场名叫人生的旅途,有太多风景不及回顾
最近在逛知乎的时候无意中看到了一则技术贴,讨论的主题大概是:”Web开发中,使用RPC还是RESTFUL更好?”(其实是很老的话题了)。由于本人之前在web开发中只使用过restful,因此对这个问题的答案本身并不清楚,于是便抱着学习的态度查阅了一番资料,事后觉得有必要在此记录一番。
概念
REST表示的是描述性状态传递(representational state transfer),REST整个就是关于 客户端和服务端之间的关系的,其中服务端要提供格式简单的描述性数据,常用的是JSON和XML。
RPC指的是远程过程调用(remote procedure call),本质上在JavaScript、PHP、Python等中调用都是一样的:取方法名,传参数。因为不是每个人都喜欢XML,RPC-API可以使用 JSON-RPC协议,也可以考虑自定义基于JSON的API,像Slack是用它的Web-API实现的。
区别与类同
基于RPC的API适用于动作(过程、命令等);基于REST的API适用于领域模型(资源或实体),基于数据的CRUD (create, read, update, delete)操作。
接口调用通常包含两个部分,序列化和通信协议。常见的序列化协议包括json、xml、hession、protobuf、thrift、text、bytes等;通信比较流行的是http、soap、websockect,RPC通常基于TCP实现。那么restful使用的序列化协议通常是json,通信协议是http;rpc是一种通信协议,因此如果序列化使用json的话,那么就是json-r