title: C/S面向数据库编程总结
历史
在传统的C/S开发模式下,客户端往往需要承担数据库数据的显示和编辑任务.为了将S端的数据库的数据推送至C端, 通常的做法有两种:
- 全面开放Mysql数据库接口
- C端和S端全面架设通信管道,负责数据库编辑
上述两种方法均存在不同的弊端.
方案一分析
优点
- 由客户端直接访问数据,简单明了
- 界面部分可以直接面向数据编程,耦合性低
缺点
- 服务器对数据库的访问限制失去控制权,无法对客户端角色控制
- 数据库访问直接暴露于外网中,安全受到威胁
方案二分析
优点
- 保护数据库安全, 确保服务器对客户端拥有访问控制权限
缺点
- 界面数据库的显示对通信管道有着极大的依赖,一旦界面做出修改, 则管道和服务端均需要做出修改.耦合性较大
读写分离方案
- 在Mysql中增加客户端只读用户,提供数据库查询功能,暴露出客户端需要访问的数据表
- 对数据库的修改操作统一由 客户端和服务器之间建立的通道负责.管道负责将操作操作数据库sql 语句传输至服务器,由服务器用户负责对数据库进行修改
- 服务器根据不同的用户角色,对客户端请求操作进行限制
优点
- 将数据库读取的功能独立处理, 让客户端数据的显示不受C/S网络通道的限制
- 将数据库的修改操作统一到一个接口中, 简化C/S网络通信,确保服务器对客户端的请求拥有权限限制
- 减轻服务器的业务逻辑复杂度,将显示功能
- 技术实现简单,门槛低
缺点
- 需要暴露部分数据库数据
- 该方案并未将数据库的操作全部独立处理
- 不适应多人分工合作
C/S B/S 混合编程方案
在本地客户端中嵌入Browser. 由Web部分负责处理数据库处理工作. 实现普通事件与数据库完全分离的操作.从而简化客户端的开发工作
优点
- 数据库操作完全分离,且保障了服务器对数据库管理权限
- 能够有效的保护数据库安全
- 适合多人分工合作
- 极大简化的客户端的开发工作,能够有效弥补C/S,B/S开发过程各种的优缺点.取长补短
- 统一Web和客户端的开发风格,实现界面代码复用
- 统一web开发接口,简化开发流程
缺点
- 技术复杂,门槛高, 需要使用到客户端内嵌webkit和后台web的技术支持
- 客户端打包体积较大, 不利于客户端发行
总结
- 读写分离方案使用小团队,小公司开发. 技术入门简单,客户端界面数据显示定制无需修改服务器. 短期内能够适合敏捷开发的需求
- B/S C/S混合开发目前已经成为主流大公司的首选技术标准(andriod首推). 此类应用适用于长期与用户保持接触, 有着极高的用户活跃度和较大内容输出的场景