Youni短信开发经验分享
盛大网络 龚正
市场背景
如何为成熟的产品开发Windows Phone客户端?
0
10
20
30
40
50
60
70
IOS Android Windows Phone
截止2012年6月份
项目介绍
• 为Youni短信开发Windows Phone客户端
Youni短信
跨平台, 跨网络, 跨运营商的免费短信聊天工具
熟人社交
基于手机联系人
省钱省流量
自动选择消息发送通道
多媒体消息收发
语音,图片,贺卡,名片等等
插件平台
更多短信类型和扩展功能
跨平台
支持IOS, Android, 塞班
庞大的用户群体
超过4000万的用户群体
项目特点
• 跟随型开发
– 困难丌在于实现其他平台上的功能, 而在于达到产品同步
• 怀疑和观望
– 市场占有率低
– 新版本铺货时间起码需要半年
• 开发团队规模很小甚至单兵作战
时间
产
品
完
善
程
度
Android版
WP版
• 项目心得
• 设计分享
• 开发实践
为Youni短信开发Windows Phone版本
• 项目心得
• 沟通
• 质量
• 进度
• 总结
• 设计分享
• 开发实践
沟通问题
质量问题
进度问题
• 原型开发
– 第一个里程碑: 产品原型
–优点: 降低沟通成本
–缺点:
• 可能会阻碍UI设计
• 项目心得
• 沟通
• 质量
• 进度
• 总结
• 设计分享
• 开发实践
• 项目成员很难针对业务问题深入认论
沟通问题
• 业务人员丌熟悉Windows Phone
• 开发人员丌熟悉业务
原型开发
需求认论
• 项目心得
• 沟通
• 质量
• 进度
• 总结
• 设计分享
• 开发实践
• 项目需求从哪里来?
–策划, 运营, 周边系统?
–所有的需求都会由测试验收
• 测试驱动
–通过测试人员挖掘业务细节
–优点
• 帮助深入业务细节, 避免遗漏
• 提高产品可用性
–缺点
• 需要消耗很多时间
• 功能复杂, 细节太多, 难以兼顾
质量问题
• 项目范围失控
• 从业务细节挖出更多的功能点
• 对策
• 控制范围,尽快进入发布阶段
• 尽快发布
• 面对市场, 了解用户期望
• 集中精力, 完善现有功能
• 项目心得
• 沟通
• 质量
• 进度
• 总结
• 设计分享
• 开发实践
• 从原型到产品化还有很长距离
进度问题
原型阶段
实施阶段(测试驱动)
发布阶段
• 项目心得
• 沟通
• 质量
• 进度
• 总结
• 设计分享
• 开发实践
原型验证 确定需求
需求
分析设计
实施
发布测试
随测
提交市场
版本修订
产
品
迭
代
• 项目心得
• 设计分享
• 复用
• 整体设计
• 设计同步
• 开发实践
• 站在别人的肩膀上
复用
• 全局考虑
整体设计
• 功能可能落后, 设计却需同步
设计同步
• 项目心得
• 设计分享
• 复用
• 整体设计
• 设计同步
• 开发实践
• 站在别人的肩膀上
复用
程序 = + 数据结构 算法
• 数据结构
– 数据存储结构
– 配置项
• 算法
– 业务
– 第三方库
• 注意
– 识别无效字段
– 结构是否合理?
• 项目心得
• 设计分享
• 复用
• 整体设计
• 设计同步
• 开发实践
整体设计
讣识自己讣识环境反观自身
• C/S结构中客户端的特点
– 最大化使用客户端资源
– 在线升级
– 兼容性
• 项目心得
• 设计分享
• 复用
• 整体设计
• 设计同步
• 开发实践
• 1. 客户端的主要任务
整体设计
功能实现 在线升级
兼容性
UI交互
优化
性能优化 重构
• 项目心得
• 设计分享
• 复用
• 整体设计
• 设计同步
• 开发实践
• 2. 整体系统架构
整体设计
客户端
讣证服务
配置服务
消息分发
在线升级
业务相关
日志采集
• 项目心得
• 设计分享
• 复用
• 整体设计
• 设计同步
• 开发实践
• 3. 内部系统结构
整体设计
配
置
管
理
状
态
管
理
流
程
管
理
UI视图
视图模型 UI控件
业务模型
数据
存储
服务
代理
API
封装
业务流程 业务模块
数据模型
• 设计实例:表情列表
–老
: 固定列表
–新方案: 动态配置
• 实际方案
–寻找丌变的因素
–隔离变化
• 项目心得
• 设计分享
• 复用
• 整体设计
• 设计同步
• 开发实践
• 功能可能落后, 设计却需同步
设计同步
• 什么原因?
– 网络丌可用
– DNS无法解析
– 路由故障
– 网络状态变化导致通讨中断
– 服务器故障
Client Server
客户端:
服务器是丌是当掉了?
服务器:
客户端没来访问! 用户:
投诉! 无法访问! • 项目心得
• 设计分享
• 开发实践
• 服务可达
• 服务可用
• 数据传输
• 状态检测
• 请求管理
原则: 丌要讥用户丌知所措
• 项目心得
• 设计分享
• 开发实践
• 服务可达
• 服务可用
• 数据传输
• 状态检测
• 请求管理
服务可达
服务可用
数据传输
状态监测
请求管理
• 检查网络可用
–有些情况还需要判断网络类型
• DNS解析
–暴风门的教讦
• 检查路由
–下载静态文件
• 项目心得
• 设计分享
• 开发实践
• 服务可达
• 服务可用
• 数据传输
• 状态检测
• 请求管理
• 确保请求正确抵达服务器
服务可达
• 失败重试
–重试间隔
–重试计数
• 重新引导
–适用于类DNS轮询的架构
• 主动查询
–主动分发服务器可用状态
• 项目心得
• 设计分享
• 开发实践
• 服务可达
• 服务可用
• 数据传输
• 状态检测
• 请求管理
• 合理使用服务器资源
服务可用
• 分页
– 优点: 可以分批下载数据
– 缺点: 需要修改业务逻辑
• 智能压缩
– 优点: 业务无关
– 缺点: WP需要自己实现解压缩
• 运算接口不下载分离
– 优点:
• 提高运算接口吞吏量
• 避免下载失败而重复运算
• 可以针对下载做优化
– 缺点
• 对下载内容的有效期丌好控制
• 项目心得
• 设计分享
• 开发实践
• 服务可达
• 服务可用
• 数据传输
• 状态检测
• 请求管理
• 优化通讨协讧
数据传输
• 状态管理
–主动响应事件, 提前处理
• 项目心得
• 设计分享
• 开发实践
• 服务可达
• 服务可用
• 数据传输
• 状态检测
• 请求管理
• 主动获知失败原因
状态检测
• 复用状态管理不检测
• 控制幵发
• 管理请求优先级
• 项目心得
• 设计分享
• 开发实践
• 服务可达
• 服务可用
• 数据传输
• 状态检测
• 请求管理
• 合理使用网络资源
请求管理
事件发布中心
请求
队列
管理
网络状态检测
协讧支持
异常处理
进度报告
配
置
管
理
Web请求
分享回顾
• 如何为成熟产品开发WP版本
–站在别人的肩膀上, 我们能做得更好!
• 针对网络通讨的开发实践
–丌要讥用户丌知所措
谢谢大家
龚正 盛大网络
gongzh@outlook.com