PC客户端的互联网化设计
伴随着手机,平板电脑为代表的移动互联网的不断发展,云计算和云服务的兴起,更是推动着传统企业不断地往互联网方向转型。作为Windows客户端程序员,自己也在时刻地警醒着:要抛弃传统软件开发思维,努力学习互联网思维。互联网+,这一个充满着机遇的经济新形态,让所有传统企业都感觉到挑战和希望。而最后能否突围成功,则在于是否能用互联网思维去解决问题。
好的,大层面讲完,该聚焦到具体的细节上。传统PC客户端开发都采用C/S架构,即服务器/客户端。例如在用户电脑上安装客户端和本地数据库,客户端与服务器端进行通讯;又或者是直接把数据库安装在数据库服务器上。其开发采用的数据库无外乎是MS sql2000和Oracle等等,而数据库安装和维护是一个难题。
一般的PC客户端软件几乎集成了所有的功能,界面人机交互和业务处理逻辑都包含其中,这样由于代码质量,现场环境和用户使用习惯等等,往往会容易出现不同的错误。这些都需要技术支持去帮助客户,甚至要到客户现场去。一旦产品用户数量到了一个大数量级,呵呵,公司的运维成本会显著提高。不仅如此,传统软件开发周期冗长,流程繁琐,已经不适应现今的互联网节奏了。
因此,为了更加清晰地说明客户端的互联网化设计,现举例公司新产品采用的新型架构设计模式:互联网模式。
双进程模式:
1、主进程主要是用于界面展示,用户业务数据输入和人机交互等等,采用C++界面库来实现;
2、副进程是一个http服务器,它负责数据处理、数据存储和云端交互,是一个数据引擎(跨平台编译,支持Windows、Android和IOS平台);
3、它们之间的请求交互通过http协议来进行通讯,并采用Json数据格式进行传输。
本地数据库:
采用了sqlite3,它是一款轻型的数据库,占用资源小,并且经常用在嵌入式设备中。不用安装,十分方便。
客户端架构图:
系统架构图:
优点:
1、业务逻辑不写死在客户端,放到服务器端操作,统一版本,减少碎片化,增强灵活性。
如果把业务逻辑写在客户端上,一旦它变化,客户端就必须要修改代码,版本就要升级。而我们是不强迫用户升级的,这样就不能全网覆盖,造成版本碎片(这里也是浏览器端和客户端的一种区别);
2、分工清晰,高效开发,聚焦细节,更能实现敏捷开发的快速迭代;
客户端只负责界面实现,网络核心通讯和基本业务数据处理;服务器端负责数据库创建,处理,存储和通讯交互,每个人聚焦的点不大,但是却能更让开发者有更多精力和时间设计开发。
3、有了云端的交互,云同步功能可以支持多终端,多地点了,并且支持本地脱机数据,真正做到了随时随地看数据了。
除了架构模式,开发流程管理也要做到互联网化:快速迭代,小步快跑,快速试错,大目标拆分为小目标。其中最有名的是Scrum敏捷开发,现介绍其开发模型,如下图所示。
什么是Sprint?
Sprint是短距离赛跑的意思,这指的是一次迭代,而一次迭代的周期是4个星期。
流程讲解:
1、PM确定Product Backlog(按优先顺序排列的一个产品需求列表),然后做工作量的预估和安排;
2、通过 Sprint计划会议中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后再进行细化,形成一个Sprint Backlog;
3、每个Scrum Team成员根据Sprint Backlog再细化成更小的任务(工作量能细化到2天内完成);
4、每次Daily Scrum Meeting(每日站立会议)须控制在15分钟左右,每人都要发言。要汇报你昨天完成了什么,并承诺你今天要完成什么,同时可以提出一些难以解决的问题,然后在白板上更新自己的 Sprint burn down(Sprint燃尽图);
5、每天都要有一个可以成功编译、并且可以演示的版本;
6、当一个Sprint Backlog被完成,我们要进行 Srpint Review Meeting(演示评审会议)。产品负责人和客户都要参加,每一个Team成员都要向他们演示自己完成的软件产品;
7、最后是 Sprint Retrospective Meeting(回顾会议),以轮流发言方式进行,总结改进的地方,然后放入下一轮Sprint的产品需求中。
互联网是一个充满神奇和希望的地方,无论你是开发移动APP端或者windows客户端,都不应妄自菲薄。我们应该用心去做好产品,时刻站在用户的角度,跟随时代潮流,把用户体验和产品体验做到极致,那么我们就是成功的。
加油吧,蛋炒饭!