先看谁在请求哪一种服务

打开文章时,浏览器向网站请求页面,在这次HTTP交互里是客户端。服务器返回响应后,浏览器解析内容、加载资源并呈现页面,而不是只把一个远端截图搬过来。

手机应用请求数据接口,也可以充当客户端。发请求的不一定有人当场点击,后台程序和自动化工具同样可能使用服务,因此客户端不能只理解成屏幕前的用户。

一眼看懂 / 示意图

不同界面,可以访问同一服务

不同界面,可以访问同一服务订单服务处理查询并返回记录电脑浏览器展示订单页面手机App展示订单界面响应响应
  1. 01浏览器

    也能承担客户端角色

  2. 02App

    并非客户端唯一形式

图中箭头展示结果返回;查询请求由客户端发出,方向相反。

网页和手机App,都能扮演客户端

假设你用电脑浏览器看同一家商店的订单,又在手机App里查看。两个界面不同,后台却可能查询同一份订单记录。浏览器和App在这段交互里都负责发出请求、接收结果,并把结果呈现给你。

因此“安装客户端”是日常说法,客户端这个角色并不要求一定额外安装专门软件;打开网页时,浏览器就能承担它。客户端也可以先在本地完成一些工作,例如输入检查和画面显示,再把需要服务端处理的请求发送出去。但本地按钮显示“可以退款”,不代表后端就该无条件同意,服务器仍要检查订单状态和权限。分工方式会变化,请求与响应的关系才是理解入口。

角色可以随着交互改变

设想一个网站接到浏览器请求后,又向另一个服务查询天气。网站程序对浏览器扮演服务器,对天气服务则扮演客户端。同一个程序可以在不同连接中承担不同角色。

这也说明“客户端”和“服务器”不是按机器大小划分。一台笔记本既可运行浏览器,又可启动本地服务;描述时应说明针对哪一段交互。

界面有反应,为什么还要等保存

客户端可以在本地显示界面、检查格式、暂存数据,也可以向服务器申请保存。眼前画面已经变了,不一定说明远处的数据也已保存成功。

例如页面上显示提交成功,还应对应真实的服务结果;网络中断时,本地操作与远端保存可能不同步。理解客户端的职责,有助于区分界面响应、请求发送与服务器处理这几个阶段。