资讯动态

C/S架构与B/S架构对比:选型要点与落地实践

发布时间:2026/9/16 5:11:27 来源:尧图企业网站定制
做架构选型这些年被问得最多的一个问题恐怕就是“C/S 还是 B/S 到底怎么选”。很多人觉得这是个老掉牙的话题但真到了方案评审会上我发现能把这个问题讲清楚的人并不多。前阵子一个做仓储系统的朋友来找我他们 2016 年用 C/S 架构做了客户端现在被业务部门天天催着要移动端问我能不能改成 B/S。这个问题背后其实牵扯出的是整个团队的技术栈、网络环境、硬件需求、升级策略甚至公司内部的 IT 运维能力。这篇文章我就把 C/S 与 B/S 架构这件事彻底讲透。不光是概念定义更重要的是从实际项目出发讲清楚两种架构各自的优劣势、选型思路、落地技术路线以及我在真实项目中踩过的坑。如果你是刚入行的开发这篇文章能帮你建立起完整架构认知如果你已经在带团队做方案里面关于混合架构和踩坑的内容可以拿来直接参考。1. 两种架构的基本盘它们到底长什么样1.1 C/S 架构的组成与典型形态C/S 架构全称 Client/Server客户端服务器架构。它的核心特征是有一部分程序代码和数据逻辑是运行在客户端的客户端程序负责界面展示和一部分业务处理服务器端负责数据存储和核心业务逻辑。拿我朋友那套仓储系统举例当年的客户端是标准的 WinForm 程序每个仓库的电脑都要装一遍。客户端负责扫描枪数据采集、入库单录入、库存界面展示服务端跑着数据库和订单处理逻辑。客户端和服务端之间有自己的通信协议整个系统只在仓库内网里跑完全不依赖外网。这类系统的典型技术形态客户端可能是 WinForm、WPF、Qt、MFC 写的桌面程序也可能是 Android/iOS 的安装包。服务端可能是 Windows 服务、Linux 后台进程数据库可能是 SQL Server、Oracle、MySQL。通信协议可能是自定义的 TCP 报文、HTTP API也可能是 gRPC 这类 RPC 框架。C/S 架构最明显的特征是“装了才能用”而且每台电脑上的客户端是独立的。你改了客户端代码要发布就得让所有机器重新安装或升级。早期很多企业软件公司就是靠这个“安装量”吃饭的。1.2 B/S 架构的组成与典型形态B/S 架构全称 Browser/Server浏览器服务器架构。用户不需要安装任何专门的客户端只要有一个浏览器输入网址就能访问系统。所有业务逻辑和数据处理都集中在服务端浏览器只负责页面的渲染和用户交互。这个模式现在大家见得多了办公 OA、电商平台、管理后台、在线文档基本都是 B/S。用户打开 Chrome、Edge、Safari访问内网或公网的一个域名系统就能用。管理员要升级系统只需要在服务器上重新部署一次所有用户刷新页面就是新版本不需要一台一台地跑过去安装。从技术栈上看B/S 架构的核心是 Web 服务。前端可能是传统 JSP、ASP.NET 服务端渲染也可能现在流行的 Vue、React 前后端分离后端是 Spring Boot、Go、Node.js 这类服务再加上 Nginx 做反向代理、Redis 做缓存、MySQL/PostgreSQL 存数据。B/S 架构最核心的特点是“入口统一、逻辑集中”。入口就是浏览器逻辑全在服务端客户端几乎没有业务代码数据也只存在于服务端的掌控之下。从管理和安全角度讲B/S 的集中化优势非常明显。1.3 两者的本质区别到底谁在干活很多初学者分不清 C/S 和 B/S 的区别是因为他们看到浏览器里也能跑 JS 代码App 里也能发 HTTP 请求就以为“不都是客户端服务器吗有什么区别”。这里面的本质区别在于业务逻辑和计算重心放在哪里。C/S 架构里客户端不是单纯的“显示终端”。它往往承担了大量的交互逻辑、数据校验、甚至部分计算任务。比如一款 CAD 软件的客户端绝大多数计算都在本地完成服务器只是负责文件存储和版本管理。这种模式下即使网络断开一小会儿客户端程序依然能继续干活。B/S 架构里浏览器只是一个“渲染终端”。你看到的页面、点击的按钮、填写的表单这些交互确实发生在本地但所有业务判断、数据校验、权限控制全部在服务端完成。浏览器一旦断网系统基本就瘫痪了。这句话你可以品一下C/S 是“业务全分散数据归中央”B/S 是“业务全归中央终端只显示”。理解了这个本质后面所有选型逻辑都顺了。2. 选架构等于选装备C/S 和 B/S 各有什么看家本领2.1 为什么有的系统到现在还坚持 C/S很多人觉得 C/S 是“过时技术”一上来就想推翻重构。但真正做过企业项目的就知道有些系统你压根没法轻易改成 B/S。第一类是非要用硬件设备的场景。读卡器、扫码枪、指纹仪、U 盾、串口设备、称重仪这些设备很多只有 C/S 客户端才好调。浏览器出于安全机制对本地硬件设备的访问限制很严虽然有 WebUSB、Web Serial 这些新标准但兼容性、稳定性、驱动支持都还不能跟桌面客户端比。医疗系统、银行柜面、工业控制至今很多还在用 C/S原因就在这里。第二类是离线可用的场景。举个例子外勤销售在车上打开平板录入客户信息如果他所在区域根本没信号B/S 系统直接就废了。C/S 客户端搭配本地数据库缓存可以先把数据存在本地等网络恢复再同步到服务器。这个能力在矿山、工地、船舶这些弱网环境里是刚需。第三类是对性能有极致要求的场景。视频剪辑工具、CAD 设计软件、数据分析平台海量数据如果在浏览器里加载内存直接炸掉。本地客户端可以充分利用机器的 CPU、GPU 和内存把大计算量放在终端解决。第四类是安全敏感的行业。金融、保险这类对数据管控极严的场景如果所有数据都在服务端、用户只通过浏览器操作比较容易控制。但有些系统比如量化交易终端没法接受浏览器这种“不可控的运行环境”必须用专用客户端甚至自己定制协议层来做传输加密。2.2 B/S 为什么成了默认选项反过来讲B/S 能成为今天大多数系统的默认选项靠的是三个硬优势。第一个优势是部署和升级的轻量。这是最恐怖的杀手锏。C/S 系统升级一次实施人员要跑遍所有电脑有时候为了一个漏洞修复要折腾一个礼拜。B/S 系统升级服务器上重新部署一次再刷新页面就完事了。对于 SaaS 厂商来说这意味着他们可以做到“每天发版”而 C/S 时代经常是半年发布一个大版本。第二个优势是跨平台和无尽端。浏览器是天然的跨平台容器Windows、macOS、Linux、手机、平板只要能用浏览器就可以访问系统。对于企业内部系统来说IT 部门再也不用操心每个用户的电脑是什么系统、装了什么环境。第三个优势是信息孤岛的打通。B/S 系统天然走 HTTP 协议这让系统之间的接口对接变得容易。一个企业的 ERP、CRM、OA 之间要做单点登录、数据交换如果是 C/S 系统通常要写一堆复杂的 TCP 对接代码而 B/S 系统通过 API 网关、统一认证就能做到。我自己在实际选型中的感受是如果场景允许绝大多数新系统都会优先考虑 B/S因为后续的迭代效率和对前端设备的无差别覆盖实在太有吸引力了。但注意我说的是“场景允许”的前提下。2.3 一张表看穿选型关键点我整理了一张选型对照表你拿这张表格去套自己的需求大部分情况都能得到初步判断。维度C/S 架构B/S 架构部署方式每台终端安装客户端浏览器访问零安装升级维护逐台更新周期长服务端一次更新全局生效网络依赖可离线运行局域网表现好强依赖网络断网即瘫痪终端计算客户端可承担性能上限高依赖浏览器和服务端大数据渲染有限硬件访问本地设备驱动支持好受限需依赖新技术或中间件跨平台需为各平台单独开发天然跨平台安全性业务逻辑分散密钥易泄露逻辑集中便于统一管控但面临 Web 攻击面开发效率客户端服务端两套逻辑成本较高前后端协作成熟迭代快典型场景工业控制、柜面、设计类工具、离线作业OA、电商、后台管理、SaaS 应用值得提醒的是选型不是非黑即白。现实中大量系统是混合形态核心业务用 C/S 保证体验外围管理功能用 B/S 方便维护。后面我会专门讲混合架构的设计思路。3. 实战落地如何从零设计一套 C/S 或 B/S 系统3.1 需求分析阶段的判断模板选型不是开会拍脑袋而是需要从需求里梳理出约束条件。我给自己定的规则是拿到需求先问五个问题把答案写在需求文档第一页第一问用户在哪儿用哪些终端如果所有用户都在公司内网用 Windows 电脑C/S 和 B/S 都可行如果用户需要远程访问、移动办公B/S 几乎是必选。第二问网络环境怎么样车间里有没有 Wi-Fi仓库地下室有没有信号如果网络不稳定还要求持续作业那 C/S 加本地缓存是唯一解。第三问要不要操作硬件设备读卡器、打印小票、串口秤、存储卡读取有这些需求C/S 的客户端会有压倒性优势或者你至少需要一个本地桌面组件来补齐 B/S 的短板。第四问系统多久变一次需求业务规则经常变流程经常调那就得 B/S因为发版成本低可以持续交付。如果业务极度稳定客户端代码几年不动C/S 的劣势就不那么明显。第五问团队的技术栈在哪个方向团队全是前端工程师做 C/S 还不如直接套 Electron团队都是搞 Windows 桌面的强行上 Web 方案也不是不可以但要付出学习成本。这五个问题全部回答完你心里的答案其实已经八九不离十了。3.2 C/S 项目落地的关键技术路线如果你确定了要做一个 C/S 系统那要考虑的技术点会跟 B/S 很不一样。客户端技术选型方面Win 平台传统企业可以用 WPF它的绑定机制和 UI 渲染能力放到今天依然是 Windows 桌面开发的第一梯队。跨平台场景可以用 Qt用 C 或 Python 写界面性能好、覆盖广。想用 Web 技术做桌面端Electron 也可以但它本质上是“披着 C/S 皮的 B/S”内存占用偏高我在后面混合架构部分再细说。通信协议方面早期 C/S 系统喜欢自定义 TCP 协议包头加包体、字节对齐、GCK 校验这套东西写起来费劲但传输效率确实高适合局域网高频交互场景。现在我还是推荐优先用 HTTP/HTTPS 接口理由很简单现代 C/S 客户端照样可以调 Web API服务端不需要重复造轮子Nginx、网关、日志中间件全是现成的。如果对实时性要求高再叠加 WebSocket 或 gRPC 长连接。版本升级方案是 C/S 系统的生死线。客户端发了新版本老版本连不上服务端怎么办我的做法是客户端每次启动先请求一个版本接口携带当前版本号服务端返回是否可升级、是否强制升级。如果接口返回新版本客户端自动下载安装包校验文件哈希后执行安装。对于强制升级的版本服务端会拒绝旧版客户端的业务请求只放行升级接口。这套机制虽然要额外开发但没有它后期维护就是灾难。3.3 B/S 项目落地的关键技术路线B/S 系统现在的成熟方案已经非常标准了。前端这块基本就是 Vue 或 React配合组件库做后台管理、低代码表单、数据可视化。后端选择就更多Java 系 Spring Boot 生态最全Go 的 Gin、Node.js 的 NestJS 也都非常成熟。但真正决定 B/S 系统质量而不只是“能跑起来”的是几个容易被忽略的环节。第一个是接口规范。前后端一旦分离接口就是双方的契约。我习惯了统一响应格式不管成功失败都是同一个结构。比如下面这个格式{ code: 0, message: success, data: { orderId: ORD20250618001, status: pending } }HTTP 状态码只用来表达传输层问题业务错误统一用 code 区间划分。这样前端只需要处理一种响应结构业务异常在拦截器里统一提示代码干净很多。第二个是认证与权限。B/S 系统的会话状态在服务端控制常见方案是 JWT 或者 Redis 存的 Session。我的习惯是 JWT 做身份认证但把 token 失效逻辑放在 Redis这样既能做到无状态扩展又能满足“踢人下线”“改密码后失效”这类业务需求。权限模型上RBAC基于角色的访问控制依然是通用答案复杂场景可以再叠加数据权限遮罩。第三个是长连接处理。很多 B/S 系统跑到后期发现业务部门要求页面上的数据实时刷新比如仓储库存变动、订单状态变化。轮询只是权宜之计短轮询频繁请求服务端压力很大长轮询实现复杂。现在主流的方案是 WebSocket服务端推送数据到前端前端再增量渲染。我见过不少团队在这个环节踩坑因为 WebSocket 在 Nginx 代理环境下要专门配置超时时间不然连接一会儿就断了。3.4 后端服务的部署与架构演进无论是 C/S 还是 B/S服务端的部署都值得单独重视。早期系统常见的是单体架构一个应用、一个数据库、一台服务器简单直接在用户量不大的时候非常好用。我朋友那套仓储系统最初就是一台服务器跑应用和数据库稳定运行了五六年没出过大事。小规模系统真没必要上来就整微服务。但当用户量上来、业务模块变多之后单体架构的瓶颈就开始显现构建越来越大发布周期被拉长某个模块的故障会拖垮整个系统。这时候再考虑按业务拆分为微服务粒度比如订单服务、库存服务、用户服务各自独立部署。需要提醒的是微服务不是银弹分布式事务、服务治理、链路追踪的复杂度是实打实的没有专门的运维团队支撑拆了反而更痛苦。数据库层面从单体到分布式也不是一步到位。先做读写分离再做分库分表再到引入消息队列做异步削峰。每一步演进都应该是被真实业务压力推动的而不是因为技术时髦。很多系统之所以做死不是因为选了 C/S 还是 B/S而是后端架构过度设计团队根本撑不起来。4. 真实项目中的坑我在两种架构上踩过的雷4.1 客户端升级惨案与版本协商机制说一个真实教训。我之前经手过一个 C/S 架构的门店收银系统当年为了赶上线版本升级方案做得极其敷衍——只是在新版本客户端里加了个“检查更新”按钮点一下才升级。结果有一次服务端接口做了破坏性变更门店里大量旧版本客户端直接报错收银流水中断运营团队急得跳脚。我们最后只能用最原始的办法把一个强制升级包挂到文件服务器上挨个门店远程协助操作折腾了整整两天。后来我学乖了所有 C/S 系统一律做“版本协商机制”客户端启动和每次调用关键接口前都带上自己的版本号服务端根据版本号决定是正常处理、放行还是拒绝。配合自动更新模块新版本发布后旧客户端启动时就会被提示升级而且支持“静默下载 提示安装”。这个机制写起来其实不难但没有的话C/S 系统的后续每一次迭代都像走钢丝。4.2 B/S 系统的浏览器兼容与长连接陷阱B/S 的坑主要在浏览器环境。你以为用户都用 Chrome但实际上企业环境里总有各种老浏览器。我之前遇到过一个政府客户的系统他们内部的电脑还有不少 Windows 7 老版 IE 的页面 JS 语法稍微新一点就白屏。最后只能引入 Babel 转译兼容到 IE11。所以做 B/S 系统需求调研阶段一定要问清楚用户的浏览器到底有哪些版本多老WebSocket 的坑也值得一提。有一次系统部署到客户环境页面上的实时数据总是过个几分钟就停更刷新页面又好一阵。排查了半天发现是客户网络环境里有层代理默认把长时间没有数据传输的连接给掐了。解决办法是给 WebSocket 加心跳包客户端定时发 ping 消息服务端回 pong保活的同时还能检测连接状态断线自动重连。4.3 权限与安全两种架构的风险差异安全方面的差异也很明显。C/S 系统表面上看似更安全代码在客户端、协议是自定的但实际上一旦客户端被反编译密钥、加密算法、接口地址都藏不住。以前做过一个金融类系统客户端里嵌了数据库连接字符串和 AES 密钥结果被一个懂技术的用户翻出来直接连上了生产库。那次之后我们统一改成“客户端不直连数据库所有数据操作走服务端 API”。B/S 系统的安全风险主要集中在 Web 攻击面SQL 注入、XSS、CSRF、越权访问。SQL 注入我建议从框架层面拦截直接用参数化查询永远不要拼 SQL 字符串XSS 靠前端框架默认转义 服务端输出编码CSRF 用同源校验和 token 机制越权访问是最容易被忽视的接口只校验了“登录状态”却没校验“用户是否有权限操作这个资源”导致普通用户直接改 URL 里的 ID 就能访问他人数据。服务端每个接口都必须做越权校验不能只依赖前端菜单隐藏。4.4 热搜问题回应WPF 能不能写 B/S 架构窗体这个话题在 WPF 的圈子里经常被讨论很多人拿它来拷问“WPF 是不是死了”。我的看法是WPF 本身是 C/S 客户端技术写出来的程序只能装到 Windows 上运行不能天然变成 B/S。但你可以用它做 C/S 客户端让客户端去请求远程 Web API这种形态本质上还是 C/S只是通信协议用了 HTTP。如果你非要让 WPF 拥有“浏览器式的免安装体验”比较合理的路线是用 WPF 开发客户端同时做一层自动更新机制把“安装”这件事变成“绿色解压运行”。还有一种玩法是 WPF 嵌入 WebView2 控件把页面塞进 WebView2 里跑外层壳子用 WPF 做系统级能力补充这已经属于混合架构的范畴了。这种做法在企业里很常见既能享受 Web 生态的迭代速度又能保留 WPF 对本地资源调用的能力。5. 架构融合C/S 与 B/S 在现代系统中的新形态5.1 最主流的混合套路Web API 多端客户端现在很多产品的真实形态已经很难用单纯的 C/S 或 B/S 去定义了。最典型的就是“后端统一提供 Web API前端多端分发”同一个后端逻辑同时支撑 Web 页面、桌面客户端、手机 App、小程序等多种终端。这个模式本质上是吸收了 C/S 的“终端多样性”又吸收了 B/S 的“核心逻辑集中化”。客户端不管是浏览器还是桌面程序统一走 HTTP API 对接数据服务端只管业务逻辑和数据不再关心终端长什么样。你看现在很多企业内部的“业务平台”既有网页端管理后台、又有 Windows 桌面操作端、还有微信小程序供领导审批就是这种混合架构。这种架构对后端的要求提高了接口要做得足够通用要支持不同终端的适配返回权限要细粒度到接口级别还要有完善的接口文档和联调环境。但对前端和业务来说灵活度和迭代速度都是大幅提升。5.2 Electron 这类“披着 C/S 皮的 B/S”Electron 是一个非常有意思的存在。从安装方式看它有桌面客户端是典型 C/S 形态但从运行机制看它内部跑的是 Chromium 浏览器内核 Node.js界面完全由 HTML/CSS/JS 渲染本质上就是“用浏览器技术写的桌面应用”。我做了几个 Electron 项目之后最大的感触是它让团队可以只写一套 Web 代码就同时覆盖浏览器和桌面端开发效率确实高。但代价也明显安装包体积动辄上百兆内存占用比原生客户端高一截低配电脑上跑起来能明显感觉到卡顿。所以 Electron 适不适合取决于你的目标电脑配置和性能容忍度。我自己用来做内部工具或管理端是 OK 的但如果是强交互、高计算密度的工业软件我还是倾向用原生技术栈。5.3 微服务与分布式架构的关系厘清热搜词里频繁出现“微服务架构”“分布式架构”这里我多说几句防止大家混淆。微服务、分布式解决的是“服务端内部如何组织”的问题C/S 和 B/S 解决的是“客户端与服务端如何划分职责”的问题。它们是两个维度的东西并不冲突。一个 B/S 架构的前端页面背后可以是单体服务也可以是拆分得非常彻底的微服务集群通过网关统一出口。一个 C/S 架构的桌面客户端同样可以对接微服务后端的 API。换句话说选了微服务不代表你就从 B/S 变成了别的架构你的前端形态依然是 C/S 或 B/S 的范畴。在做方案汇报时把这两个维度分开讲评审人才不会绕晕。5.4 嵌入式与专用领域的架构变体聊到嵌入式领域比如 C51 单片机、ARM 架构的设备很多人觉得“C/S、B/S 跟这个不搭边”。但如果你把视角拉高一点单片机的 boot 程序与 app 程序、上位机与下位机本质上就是一种“客户端分工合作”的模式。比如 C51 的串口升级功能boot 程序相当于一个“特殊客户端”负责接收升级包并把新固件写入 Flash而 app 程序相当于“正常业务客户端”。这个逻辑和 C/S 架构里“先检查版本再升级客户端”的思路如出一辙。ARM 设备上的边缘网关更典型它本地跑着数据采集程序属于 C/S 里的“服务端”向上对接的是云端物联网平台又变成了“客户端”。所以架构思维是通用的你在通用软件里积累的选型判断力放到嵌入式领域一样能迁移过去。6. 架构文档与团队协作别让架构只活在你的脑子里6.1 架构图应该画到什么程度很多团队做架构设计画了一张看起来很高端的架构图就完事了。但你要是追问图上每个模块之间的接口用什么协议、数据在哪个环节落库、故障时怎么降级团队往往答不上来。这种架构图只能算“概念图”对开发没有指导意义。我的习惯是至少画四类图第一类是系统分层图展示前端、网关、业务服务、数据存储的分层关系第二类是部署图说明每个服务跑在哪台机器上、端口怎么规划、内外网怎么隔离第三类是核心业务时序图把关键流程从头到尾画一遍比如下单、支付回调、库存扣减的调用顺序第四类是异常链路图说明接口超时、数据库连接失败、消息积压时系统怎么表现。画图的工具架构师之间现在用得比较多的是 draw.io、ProcessOn 这类在线工具团队协作方便版本管理也清晰。画图的重点不是好看而是每个箭头都要有人能解释清楚。6.2 决策记录怎么写才有价值还有一件容易被忽视的事架构决策记录。这个“决策记录”不是功能需求文档而是记录“我们当时为什么这么选”。比如项目里为什么用 C/S 而不是 B/S为什么用 MySQL 而不是 PostgreSQL为什么服务端接口用 HTTP 而不是 gRPC。这些决策背景如果不记录半年后新来的同事看到代码里的一堆设定只会觉得“这写得不合理”又不敢动最后形成技术债。我通常会在项目根目录放一个 ADR 文件夹每个决策一个 Markdown 文件包含背景、选项、决策、理由、后果五个部分。内容不需要长几百字就说清楚。别小看这件事后面每次架构评审、代码 review、新人 onboarding它都能省下大量解释成本。技术债务最怕的不是代码烂而是没人知道当时为什么写成了这样。7. 常见问题与实操心得速查7.1 选型与开发中的常见问题我在带项目的过程中发现大家反复在问一些类似的问题这里整理成一张速查表供你直接参考。问题我的建议老系统是 C/S要不要迁移到 B/S先看业务是否真的需要移动端或远程访问不需要就别折腾升级有风险微信小程序算 C/S 还是 B/S算“新型 C/S”有独立客户端壳子但逻辑在服务端本质是混合形态C/S 客户端可以直接连数据库吗绝对不要数据库连接凭据在客户端等于裸奔必须走后端 APIB/S 系统做本地打印怎么处理用浏览器自带打印或对接云打印服务强依赖本地打印机的场景建议加一个本地代理服务WebSocket 连接总断是什么原因先查 Nginx 代理超时再查中间网络设备空闲连接回收最后确认心跳包是否正常客户端自动升级怎么做才稳版本协商 强制升级标记 下载校验哈希 安装失败回滚四件套缺一不可微服务一定要上吗用户量过千、团队过十人再考虑小团队先单体留好拆分边界前后端联调效率太低怎么办统一定接口文档规范用 OpenAPI/Swagger 生成文档环境隔离要清晰7.2 几条扎心的实操心得最后分享几条我从项目里熬出来的经验都是没有写在教科书里的判断依据。第一架构选型要“先丑后美”。不要一上来就追求最完整、最前瞻的方案先让系统跑起来解决业务痛点等业务量上来再逐步演进。我见过太多团队把第一版做成全家桶结果交付不了项目夭折。所谓架构是在约束条件下权衡出来的结果不是炫技作品。第二不要迷信“技术趋势”。C/S 在很多人眼里是“过时的”但工业软件、企业桌面工具、金融终端里它依旧是主力。反过来B/S 虽然灵活但如果你系统里全是重型报表浏览器分分钟卡死。判断好坏的标准只有一条能不能帮业务稳定跑起来且团队能持续维护。第三通信层的设计永远值得多花时间。不管你是 C/S 还是 B/S客户端与服务器的通信协议、数据格式、异常处理、日志追踪决定着你后期排查问题效率的天花板。我建议在项目一开始就统一封装好请求库包括超时重试、统一错误码、链路追踪 ID 的透传这些基础打好了后面加功能会非常顺。第四做一个会“带约束”的架构师。你心里可以有完美的技术蓝图但现实中要接受预算有限、团队能力参差不齐、业务需求变来变去。架构文档写得再漂亮如果实施的人不理解、不认可落地就会变形。我会在关键决策上做出取舍比如先用最简单的单体约定好业务模块边界为后续演进留好口子而不是一上来就铺一个庞大的架子。架构这条路没有标准答案。但只要你理解了 C/S 与 B/S 的本质差异掌握了按业务约束做决策的方法再烂的需求你也能找到一个当下最优的解法。这话听起来很朴素但真的是我做架构这些年最深的体会。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价