您现在的位置是:主页 > news > 用vs做网页是怎么创建网站的/百度seo快排软件
用vs做网页是怎么创建网站的/百度seo快排软件
admin2025/4/29 11:26:06【news】
简介用vs做网页是怎么创建网站的,百度seo快排软件,泰安网站开发,wordpress tag别名想要比较清楚的了解RPC和RESTful的区别,我们先来了解一下网络的七层模型。 OSI网络模型 图片来自网络 我们可以清楚的看到OSI模型一共有七层,从上到下分别是: 第一层应用层。定义了用于在网络中进行通信和传输数据的接口;第二层…
想要比较清楚的了解RPC
和RESTful
的区别,我们先来了解一下网络的七层模型。
OSI网络模型
图片来自网络
我们可以清楚的看到OSI
模型一共有七层,从上到下分别是:
- 第一层应用层。定义了用于在网络中进行通信和传输数据的接口;
- 第二层表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
- 第三层会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
- 第四层传输层。管理着网络中的端到端的数据传输;
- 第五层网络层。定义网络设备间如何传输数据;
- 第六层链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
- 第七层物理层。这一层主要就是传输这些二进制数据。
众所周知REST API
是基于HTTP
协议来传输数据的,RPC
主要是基于TCP/IP
协议的,所以效率来看的话,RPC
的效率会高一点,尤其是在复杂的系统中使用RPC
效果会更明显。
什么是REST API
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
↑以上内容来自百度百科。
REST
即Representational State Transfer的缩写,是基于HTTP协议之上的一组约束和属性,翻译过来是表现层状态转移。
REST
是一种设计风格(并非一种标准),描述的是在网络中Client
和Server
的一种交互形式,目的是便于不同的软件/程序在网络中互相传递消息。
REST API大概有以下三部分组成:
- method:动词(GET,POST之类的)
- Host/post:URI(统一资源标识)、服务器,端口
- Path:名词(路径,服务器里面的某个东西)路径的结尾是资源的形态(如text, html, image, pdf等)。
REST API常见的HTTP code
- Status Code: 200 OK
- Status Code: 400 Bed Request
- Status Code: 404 Not Found
- Status Code: 500 Internal Server Error
REST
充分利用HTTP自身的GET
、POST
、PUT
、DELETE
的方法实现接口的统一化,比如对同一个资源进行CRUD操作:
GET /dogs 获取所有狗狗
POST /dogs 新增/修改狗狗信息
PUT /dogs 修改狗狗信息
DELETE /dogs 删除狗狗信息
REST API主要的设计原则:
- 资源与URI
- 统一资源接口(HTTP方法如GET,PUT和POST)
- 资源的表述
- 资源的链接
- 状态的转移
总之,RESTful的核心就是后端将资源发布为URI,前端通过URI访问资源,并通过HTTP动词表示要对资源进行的操作。
什么是RPC
RPC(Remote Procedure Call),远程过程调用,就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
RPC
在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。通常的调用过程,把函数序列化,远端收到后,再把函数反序列化,完成函数调用。
一个完整的RPC的架构应该包含以下几个组件:
- 客户端(Client):服务的调用方;
- 服务端(Server):真正的服务提供者;
- Client stub:存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方;
- Server stub:接收客户端发送过来的消息,将消息解包,并调用本地的方法。
一个RPC的完整过程
RPC
采用Client-Server
结构,通过request-response
消息模式实现。
实际情况下,RPC很少用到http协议来进行数据传输,毕竟只是想传输一下数据而已,何必动用到一个文本传输的应用层协议呢。为什么不直接使用二进制传输?比如直接用Java的Socket协议进行传输?
不管用何种协议进行数据传输,一个完整的RPC过程,都可以用下面这张图来描述:
对上图的解释如下:
- Client是服务调用方,Server是服务提供者。
- 左边的Client里的Application就是一个真正的调用者,先去调用Client Stub这个代理对象,其实内部是通过RPC方式来进行远程调用的代理对象,这一步主要是来传递参数。
- 至于Client Runtime Library,则是实现远程调用的工具包,比如jdk的Socket。最后通过底层网络实现实现数据的传输。
- 然后客户端本地操作系统将消息从客户端机器发送到服务端机器。
- 服务端操作系统接收到数据包传递给Server Stub。
- Server Stub解组消息为参数。
- Server Stub再调用服务端的函数(或方法),得到执行结果之后以反方向的相同的步骤响应给客户端,至此就完成了一次RPC调用。
这个过程中最重要的就是序列化
和反序列化
了。因为数据传输的数据包必须是二进制的,直接丢一个Java对象过去,人家可不认识,必须把Java对象序列化为二进制格式,传给Server端,Server端接收到之后,再反序列化为Java对象。
总结
- REST API主要为第三方暴露接口,比如暴露给APP端,WEB端。
- RPC主要在自家比较复杂的业务系统中使用,完成服务之间的通信。