公司上新报销系统,IT 在群里发了个 exe,说这是 c/s 架构,双击安装,别用浏览器打开。第一次听到这词的人,多半会问一句:跟网页版有啥区别。

客户端加服务器,各干一半活

c/s 就是 Client/Server,客户端装在自己电脑上,负责界面和交互,服务器管数据和业务逻辑。QQ、微信电脑版、多数网游、财务软件都是这个路子。客户端通过自己的协议连服务器,不经过浏览器。客户端要装运行库,老机器可能缺 .NET 或 VC++ 组件。

B/S 是 Browser/Server,浏览器当客户端,打开网页就能用,升级只改服务器。C/S 要一台台装、一台台升,版本一乱就有人连不上。判断方法简单:要下载安装包、桌面有图标的,基本是 C/S;地址栏输网址就进的,是 B/S。

哪些场景还非它不可

要调本地硬件、要读大文件、要低延迟的,C/S 更合适。银行柜面、CAD 协同、视频剪辑、医院影像系统,很多还是客户端,软件能直接吃满本机内存和显卡。缺点也明显,跨平台差,Windows 客户端换到 Mac 常常没有对应版本。外设驱动、串口、读卡器这些,浏览器权限很难覆盖。

现在不少系统是混合的,客户端里嵌浏览器内核,登录又跳网页。移动端普及后,很多 C/S 变成了 App,本质还是客户端加服务器,只是分发渠道换了应用商店。协议上,C/S 常用 TCP 长连接或私有协议,B/S 基本跑 HTTP。长连接断线要自己重连,HTTP 有现成的重试和缓存机制。

部署和选型

C/S 早期靠光盘和安装包,现在多用自动更新程序,启动时比对版本号再下补丁。B/S 发版就是替换服务器文件,用户刷新即可。运维人少、更新频繁的团队,B/S 省人力。自动更新失败时,用户往往还在用旧版本,日志里版本号对不上。

内部固定工位、需要外设和离线能力的,选 C/S 合理;面向外部用户、要快速迭代的,B/S 更省心。下次看到招聘写熟悉 c/s 架构,说的是客户端开发,不是让你研究射击游戏。老项目维护别急着推翻,先看客户端依赖了哪些驱动。