C/S: Client / Server,客户端 - 服务器。
B/S: Browser / Server,浏览器 - 服务器。
这2种架构的区别在于客户端这一侧。实际上,你可以认为:C/S是胖客户端模式,B/S是瘦客户端模式。
有多“瘦”呢?瘦到只剩下一个浏览器!
① 从用户的角度看,浏览器的作用就是:用户输入一个域名,就能得到一个页面或者文件。即是说,B/S模式把客户端行为简化到只剩下单纯的浏览器操作;而在C/S模式,用户看见的不是一个万能浏览器,而是各种各样的windows桌面客户端。用户需要在自己的电脑上安装各种各样的软件。
② 从开发者的角度看,这2种模式也是有区别的。在B/S模式下,Client和Server是通过HTTP URL进行请求-应答,现在流行的说法叫Rest API;而在C/S模式下,Client和Server是在TCP/UDP这一层进行编码,需要自定义报文格式,通常采用二进制数据传输格式,比如Protobuf。
外界对这2种模式的看法,通常是认为B/S模式要比C/S模式“先进”。实际上,从C/S演进到B/S,是一个明显的“HTTP化”(也叫Rest化)的过程。Rest化的好处,就是使得Client和Server的接口层变成大家都懂的HTTP协议,是一个大一统的取向。
③ 有时候我们看一些组件的架构介绍,它说自己是B/S架构的。这句话的意思是,它的客户端只需要知道一个域名,而不需要拿到一个服务器的IP。没错,这其实是GSLB的作用。可以认为,在一个组件前面套上一层域名解析,就从C/S变成了B/S。