C/S架构程序应用广泛,比如常见的QQ、微信、Outlook,还有手机上的各种APP都是C/S架构的。C指的是Client,即客户端,S指的是Server,即服务端。

经常听到初学者争论,是学C/S结构还是学B/S结构?而笔者以为,两种架构都要学,不仅要学,而且还要精通。至于用哪种架构解决问题,那就要看工作需要了。在企业管理系统领域,C/S架构的系统占有非常重要的地位,比如ERP、MES系统,C/S架构的居多。对企业而言,只要能提高操作效率,他们并不在意是什么架构。

今天笔者就和大家分享一下如何开发一套稳健、高效的的C/S架构的系统。

笔者认为,一套成熟的C/S框架应该解决好以下核心问题:

服务器端功能定位

C/S中S指的是Server,而不是数据库服务器。很多C/S架构的系统,都是直连服务器上的数据库,这样不仅增加数据库负担,还存在安全风险。有的程序员为了省事,直接将数据库的账号密码以明文形式写在了客户端配置文件,这样很不安全。所以,我们的服务器端应该是一个Web服务器和数据库服务器的组合体,客户端通过Web服务器连接数据库执行各种数据库增删改查的操作。Web服务器还可进行各种业务逻辑的运算。

客户端技术架构选型

客户端选择.NET还是选择Java呢?从开发效率上将,应当毫无疑问的选择.NET的Win Form 或 WPF。对于初学者,建议选择Win Form,易学,上手快,简单的需求拖拉拽就能完成。如果有一定基础,而且项目周期不是太紧张,可以选择WPF。虽然Win Form的UI界面不如WPF美观,但是Win Form有很多第三方的UI组件,效果不比WPF差,还有些效果更炫更酷。

数据库操作

管理信息系统,归根结底就是对数据库表的增删改查,开发工作离不开对SQL语句的操作,所以框架要有一个SQL Helper,简化这些操作。为了提高安全性,应当避免客户端直连数据库,框架可考虑Web Service或RESTful API之类的解决方案。

文件上传和下载

虽然数据库允许存储文件,但是毕竟数据库不是文件服务器,不是用来存储文件的,另外向数据库中存储文件会导致数据库体积过大,影响后期运维,所以要求服务器端有一个Web服务器,可以支持文件的上传和下载。相比Socket或FTP,通过HTTP方式处理文件更容易。

应用程序框架

技术架构、数据库、文件管理搞定后,接下来就要考虑应用层面的需求,比如用户管理、用户登录、权限控制、日志管理、站内消息、菜单管理、多窗体管理、基础数据、表单定义、工作流等模块。这些模块,是每一套应用系统都必须具备且优先解决的基础模块,然后才是如何开发业务模块。既然大家都面临这个问题,何不找一套现成的应用框架呢。在实际工作中,老板并不关心技术问题,对他来说,他交给你的是一件事,如果在限定的时间内保质保量的完成才是他关心的。所以,我们要做的就是整合各种工具、框架,为自己所用。

客户端自动更新方案

估计大家都回答过C/S结构和B/S结构的优缺点,相比B/S架构,很多人都担心C/S架构会增加额外的运维工作量。早期的C/S系统这种问题很突出,一旦客户端程序升级,需要IT管理员到每台电脑上手动更新。而这种客户端更新有成熟方案。

程序开发工作,从零开始,一行一行的垒代码并不是首选,选择一套成熟的框架对项目很关键,用好了框架事半功倍。

最新文章

  1. 基于注解的bean配置
  2. nginx下开启pathinfo模式
  3. 每天一个linux命令(40):wc命令
  4. 十天冲刺---Day6
  5. linux中安装eclipse,安装好之后不能直接建servlet,不能直接在jsp页面中run on server.权限在作怪,我猜的,
  6. iOS评分(给个好评)
  7. CSS3实现文字抹开特效
  8. Oracle数据库习题
  9. sharepoint 删除list里的所有内容
  10. webrc视频数据发送处理流程详解
  11. 面试题:求第K大元素(topK)?
  12. 用Python学分析 - 正态分布
  13. iis+nginx实现负载均衡
  14. TensorFlow学习笔记1
  15. Qt编写输入法V2018超级终结版
  16. cdnbest节点动态ip配置教程
  17. 解决ngui挡住粒子的问题
  18. Hadoop分布式HA的安装部署
  19. NOI 4978 宠物小精灵之收服(二维背包)
  20. HBase学习之路 (三)HBase集群Shell操作

热门文章

  1. JavaScript代码存放位置
  2. day18-事务与连接池 6.事务隔离级别与解决问题
  3. Codeforces 1107G Vasya and Maximum Profit 线段树最大子段和 + 单调栈
  4. 树莓派 Learning 002 装机后的必要操作 --- 03 替换软件源
  5. centos MAC 地址与报错eth0 unknown interface no such device
  6. jquery的命名空间
  7. Codeforces Round #279 (Div. 2) C. Hacking Cypher (大数取余)
  8. 会过vip怎么赚钱?大学生,宝妈创业圈子
  9. 支持Mono的盘古分词(PanGu)
  10. <你的孤独,虽败犹荣> 很喜欢的句子