23
从 WPS 从 Wps on Web 从从从从从从从从从从从

Yanggang wps

  • Upload
    d0nn9n

  • View
    1.156

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Yanggang wps

从WPS到Wps on Web

大型应用软件架构的变迁

Page 2: Yanggang wps

WPS V6项目介绍

• www.wps.cn• 项目介绍

– 2002年至今, 100-200人– Windows平台, C++,界面采用 Delphi

• 特点– 规模大、周期长、耦合度高– 完全自有整体架构– 几乎不用第三方框架、库

Page 3: Yanggang wps

Wps on Web项目介绍

• 开发中• 项目介绍

– 2009年立项,现处于开发期,目前 50多人– 前端: Flex平台– 后端:核心 C++,服务总线 Java,整合应用 Python

• 特点– 从客户端到服务端计算的变迁– 从桌面应用到浏览器( RIA)的变迁– 从完全自有架构到混合( Hybrid)架构的变迁

Page 4: Yanggang wps

WPS架构团队的演化

• 核心程序员• 个体架构师• 架构组• 多架构组

Page 5: Yanggang wps

关于本报告

• 不适合做理论性讲解– 大型工程的规模效应使得问题复杂化– 任何一个实践的推行都需要大量时间和辅助工作– 没有一个实践能完美解决大型工程问题

• 不适合面面俱到– 整个工程管理体系比较复杂,涉及的点非常多– 以后会在个人博客中与大家探讨

• 选择几个有趣的点与大家分享– 不多,就三个

Page 6: Yanggang wps

关于开发语言

Page 7: Yanggang wps

C++语言

• WPS使用最多语言– 具有最大的底层控制能力– 具有最大的优化潜力– 具备用于构建大型系统的能力– 大型复杂应用系统需要

• 缺陷– 语言体系复杂,难以精通– 容易犯错,底层错误难以调试– 开发效率低

Page 8: Yanggang wps

多语言开发

• WPS V6方案– C++与 Delphi

• 使用效果– 接口语义复杂– 交互频率高– 有效率要求– 紧耦合边界不适用跨语言方案

Page 9: Yanggang wps

C--工程

• 使用于Wps on Web项目• 提供 RAD语言的代码风格

– Java/C#风格支持–类库–部分动态语言特性

• 完全使用标准 C++构建– 无需更换开发工具– 原生 C++代码,和普通 C++无缝交互– 获得开发效率和执行效率的平衡

• 准备作为开源项目发展

Page 10: Yanggang wps

Sample: C#和 C++

void DeleteFiles(string dir){ string[] files = Directory.Get

Files(dir); foreach (string s in files) File.Delete(s); string[] dirs = Directory.Get

Directories(dir); foreach (string s in files) DeleteFiles(s);}

void DeleteFiles(stringx dir){ Array<stringx> files = Direc

tory::GetFiles(dir); foreach (stringx, s, files) File::Delete(s); Array<stringx> dirs = Direc

tory::GetDirectories(dir); foreach (stringx, s, dirs) DeleteFiles(s);}

Page 11: Yanggang wps

关于整体框架

Page 12: Yanggang wps

WPS V6整体框架

平台封装

优化支持

错误诊断与处理

事务管理

存储管理

基础库

文档读写基础服务 绘制系统 国际化支持

表格核心

计算模型 表格应用模型

公式与计算

表格数据

数据交换模块

应用层

高级API集合

兼容API集合

Shell

Office应用

Office中间件

安全与权限模块

Addon平台

Addon社区

用户交互框架

数据分析功能

表格功能

表格交互

排版服务 绘制服务

对象数据

图表数据

对象数据交换

图表数据交换

对象绘制

对象交互

图表绘制

图表交互

对象与图表

VBA

Page 13: Yanggang wps

Wps on Web设计框架在线表格

服务组件调度

Agent调度器

Service Bus

协调度器

表格服务端组件

服务组件

Agent

IO服务组件

Client Proxy

表格前端文档查看功能

外部水平拆分方案(可选)

Page 14: Yanggang wps

在线表格部分细化

服务部件框架*

表格核心

RPC Stub

Socket

Channel

SC Provider

独立客户端框架*

RPC Proxy

Socket

Channel

SC Consumer

表格功能

表格应用

Page 15: Yanggang wps

框架设计的变化

• 部署模型– 不再是整体一块– 即使在服务端,也可能分布在不同的环境(设备)上

• 通信模式– 直接函数调用转变为基于网络协议的调用: REST、

SOAP、基于 Socket的 RPC框架等– 根据通信需求,以及双方的构建技术决定

• 耦合度降低– 尽可能可插接– 不能依赖另一个模块总是正确工作

Page 16: Yanggang wps

关于质量保证

Page 17: Yanggang wps

与质量保证相关的开发实践

• 单元测试– TDD与单元测试

• 面向契约– C++ / AS中的契约框架– 内核扫描

• 持续集成系统– 代码覆盖率工具

Page 18: Yanggang wps

内核扫描技术

• 内核扫描是广义的 DbC– 一个经过规划的时刻触发,对更大范围数据进行检查的诊断过程

– 更大尺度的目标数据集,更复杂的规则集合– 扫描时机受控

• 内核扫描在WPS电子表格开发中的应用– 细节设计不完善问题– 不符合设计的隐患(对于测试有很大的辅助作用)

• 在在线表格中引用内核扫描– 服务端– 客户端

Page 19: Yanggang wps

代码覆盖率工具

• 语言支持– C/C++, Python, Flex(AS3)

• 覆盖统计– 代码行、函数、类

• 动态覆盖统计– 运行时统计覆盖率

• 代码高亮– 代码有效和无效高亮

• 执行频率统计– 代码执行频率计算

Page 20: Yanggang wps
Page 21: Yanggang wps
Page 22: Yanggang wps
Page 23: Yanggang wps

谢谢大家

www.gridbear.com

blog.wps.cn