1 / 23

从WPS到Wps on Web

从WPS到Wps on Web. 大型应用软件架构的变迁. WPS V6项目介绍. www.wps.cn 项目介绍 2002年至今, 100-200 人 Windows平台,C++,界面采用Delphi 特点 规模大、周期长、耦合度高 完全自有整体架构 几乎不用第三方框架、库. Wps on Web项目介绍. 开发中 项目介绍 2009年立项,现处于开发期,目前50多人 前端:Flex平台 后端:核心C++,服务总线Java,整合应用Python 特点 从客户端到服务端计算的变迁 从桌面应用到浏览器(RIA)的变迁

meghan
Download Presentation

从WPS到Wps on Web

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 从WPS到Wps on Web 大型应用软件架构的变迁

  2. WPS V6项目介绍 www.wps.cn 项目介绍 2002年至今,100-200人 Windows平台,C++,界面采用Delphi 特点 规模大、周期长、耦合度高 完全自有整体架构 几乎不用第三方框架、库

  3. Wps on Web项目介绍 开发中 项目介绍 2009年立项,现处于开发期,目前50多人 前端:Flex平台 后端:核心C++,服务总线Java,整合应用Python 特点 从客户端到服务端计算的变迁 从桌面应用到浏览器(RIA)的变迁 从完全自有架构到混合(Hybrid)架构的变迁

  4. WPS架构团队的演化 核心程序员 个体架构师 架构组 多架构组

  5. 关于本报告 • 不适合做理论性讲解 • 大型工程的规模效应使得问题复杂化 • 任何一个实践的推行都需要大量时间和辅助工作 • 没有一个实践能完美解决大型工程问题 • 不适合面面俱到 • 整个工程管理体系比较复杂,涉及的点非常多 • 以后会在个人博客中与大家探讨 • 选择几个有趣的点与大家分享 • 不多,就三个

  6. 关于开发语言

  7. C++语言 • WPS使用最多语言 • 具有最大的底层控制能力 • 具有最大的优化潜力 • 具备用于构建大型系统的能力 • 大型复杂应用系统需要 • 缺陷 • 语言体系复杂,难以精通 • 容易犯错,底层错误难以调试 • 开发效率低

  8. 多语言开发 • WPS V6方案 • C++与Delphi • 使用效果 • 接口语义复杂 • 交互频率高 • 有效率要求 • 紧耦合边界不适用跨语言方案

  9. C--工程 • 使用于Wps on Web项目 • 提供RAD语言的代码风格 • Java/C#风格支持 • 类库 • 部分动态语言特性 • 完全使用标准C++构建 • 无需更换开发工具 • 原生C++代码,和普通C++无缝交互 • 获得开发效率和执行效率的平衡 • 准备作为开源项目发展

  10. void DeleteFiles(string dir) { string[] files = Directory.GetFiles(dir); foreach (string s in files) File.Delete(s); string[] dirs = Directory.GetDirectories(dir); foreach (string s in files) DeleteFiles(s); } void DeleteFiles(stringx dir) { Array<stringx> files = Directory::GetFiles(dir); foreach (stringx, s, files) File::Delete(s); Array<stringx> dirs = Directory::GetDirectories(dir); foreach (stringx, s, dirs) DeleteFiles(s); } Sample: C#和C++

  11. 关于整体框架

  12. WPS V6整体框架

  13. Wps on Web设计框架

  14. 在线表格部分细化

  15. 框架设计的变化 • 部署模型 • 不再是整体一块 • 即使在服务端,也可能分布在不同的环境(设备)上 • 通信模式 • 直接函数调用转变为基于网络协议的调用:REST、SOAP、基于Socket的RPC框架等 • 根据通信需求,以及双方的构建技术决定 • 耦合度降低 • 尽可能可插接 • 不能依赖另一个模块总是正确工作

  16. 关于质量保证

  17. 与质量保证相关的开发实践 • 单元测试 • TDD与单元测试 • 面向契约 • C++ / AS中的契约框架 • 内核扫描 • 持续集成系统 • 代码覆盖率工具

  18. 内核扫描技术 • 内核扫描是广义的DbC • 一个经过规划的时刻触发,对更大范围数据进行检查的诊断过程 • 更大尺度的目标数据集,更复杂的规则集合 • 扫描时机受控 • 内核扫描在WPS电子表格开发中的应用 • 细节设计不完善问题 • 不符合设计的隐患(对于测试有很大的辅助作用) • 在在线表格中引用内核扫描 • 服务端 • 客户端

  19. 代码覆盖率工具 • 语言支持 • C/C++, Python, Flex(AS3) • 覆盖统计 • 代码行、函数、类 • 动态覆盖统计 • 运行时统计覆盖率 • 代码高亮 • 代码有效和无效高亮 • 执行频率统计 • 代码执行频率计算

  20. 谢谢大家 www.gridbear.com blog.wps.cn

More Related