写点什么

Spread 全球架构师谈电子表格控件的性能最优原则

2014 年 10 月 16 日

电子表格是一种历史悠久的软件类型。近日,InfoQ 中文站编辑跟 GrapeCity 的电子表格产品 Spread 的全球架构师王灵峰进行了一次沟通,交流了有关电子表格控件的性能优化、定制化、市场需求等方面的内容。

嘉宾简介

王灵峰, 1999 年加入 FarPoint Technologies 主要从事 Spread for ASP.Net 和 Spread for Windows Form 的开发与设计工作。2009 年 GrapeCity 收购了 FarPoint Technologies. 作为构架师, 从 2009 至今, 主要从事 Spread WPF-Silverlight 和 Spreadjs 的开发与设计工作。

InfoQ:请简单做一下自我介绍吧。

王灵峰:我开始是在 FarPoint 公司。2009 年,随着葡萄城(GrapeCity)收购了 FarPoint,我就一直在 GrapeCity 了。另外,我本人一直在 Spread 研发团队,全程参与了.NET 战略下的 Winform、WebForm、WPF 版本的 Spread,以及最近的 JavaScript 版本的 SpreadJs。

InfoQ:Spread 的架构设计在历史上经历过哪些阶段?其设计理念和技术选择的理念是怎样的?

王灵峰:Spread 产品的架构要从 1991 年说起, 我们团队推出了 Drovers Professional Toolbox for Windows (供专业 Windows 程序员使用的开发包),该开发包带有 13 个 DLL,包括功能完备的电子表格控件。第一款 Spread 控件包使的 C 或 C++ 语言的开发人员迅速体验到基于商业开发控件包的好处: 极大的节省了开发时间,并能够专心致志的瞄准自己的精准的核心业务。

Visual Basic 1.0 的出现为 Spread 在专业开发市场带来了新的机遇。我们和微软沟通后,很快便在我们的 Visual Architect 中推出第一款适用于 Visual Basic 的电子表格控件。

如今,我们提供诸如 32 位 ActiveX 控件、 64 位 ActiveX 控件、Windows Forms 和 Web Forms 、WPF、Silverlight、WinRT、SpreadJs 全平台的电子表格控件。

我们的定位理念是高度可扩充、兼容历史版本、性能最优原则,同时易于熟悉 Excel 操作的用户上手,API 调用简单等。

InfoQ:您刚才提到了性能最优原则,能再简述一下性能相关的架构设计吗?

王灵峰:SpreadSheet (电子表格) 不同于 Grid(表格控件),其不仅仅提供了表格控件常用的大数据分析——排序、过滤、导出、导出 Excel 等, 同时电子表格还提供了强大的 Formula (公式) 和图表功能等功能。

为了处理这些高度复杂的模型,我们采用了 MVC 架构,并对数据存储采用稀疏存储方式,这样的设计特点是极大的节约了内存,可实现大数据处理。

这张图说明了软件架构的对外接口:

另外,如果一次性添加大数据,则通过如下的代码调用,减少公式频繁运算导致的性能损失。在 Data Model 中,类似这样的成对方法,就是为了解决大数据而设计的:

复制代码
FpSpread1. SuspendFormulaParsing ()
fpSpread1.Sheets[0].DataSource = dbDataSet;
FpSpread1. ResumeFormulaParsing (True)

InfoQ:高度可定制,能举例说明吗?

王灵峰:以 CellType 来说,Spread 提供了超过 20 种 CellType,如条形码、二维码、货币、按钮、图形等 CellType。

用户可基于以上 CellType 来定制自己的单元格类型,以确定在一个单元格中可以输入什么样的数据、避免程序员不必要的检查和验证,并为用户提供一种自然的输入数据的方式。

比如这篇博客中提到的《 Spread 之自定义对角线 cellType 源码: DiagonalCellType 》, 就是以非常简单的方法实现了新的 CellType,即定制了一个新的单元格类型。

InfoQ:Spread 多个平台——如 Winform、Web Form、SpreadJs 之间,可否实现数据共享?

王灵峰:当然,我们采用的是 Excel 数据格式作为我们多个平台产品之间的数据共享载体,仅采用如下的方法,即可实现多个不同平台之间的数据共享。

复制代码
SaveExcel(String,ExcelSaveFlags)
OpenExcel(String,ExcelOpenFlags)

InfoQ:你在 2014 年的研发重点是什么?

王灵峰:今年我们在 Winform、WebForm 上继续投入, 即将上市的 Spread Studio for .NET 8.0 将是非常期待的电子表格产品。另外 SpreadJs 也会推出新特性。

未来的研发重点是“Mobile first”,如对已经推出 Touch 功能的强化。

InfoQ:最后想问的是,您眼里的美国控件市场和中国控件市场有何不同?

王灵峰:我的兴趣在于使用最好的技术做出最棒产品,市场方面没有太多的研究。

不过,以我个人的经历看经济越发达的地方,人们对采购成熟商业控件就越积极。例如,我知道的美国的软件公司,对采购最新版、正版控件工具包有着非常强烈的意识,这一点和国内情况不同。 因为在他们老板的理念中,一方面基于知识产权法律的威慑,一方面是创新的理念—基于最新版、最强的功能上迭代自己的产品。从最近公司内公布的国内 Spread 市场数据来看, Spread 产品在北京周边、珠三角、上海周边地区,这些中国经济最发达的地区市场份额占国内 70% 以上。这个势头非常不错,也和最近几年国内的大环境极大改善有关。

InfoQ:谢谢您的宝贵时间!您有什么话对 InfoQ 的读者们说的?

王灵峰:不客气。我想说:“提供创新的工具,助大家在当今充满竞争的软件开发市场上脱颖而出。”

利益相关声明:本次采访的策划编辑王文刚是目前就职于 GrapeCity 的软件工程师。

感谢杨赛对本文的审校。如有意参与 InfoQ 中文站新闻报道、专家采访工作,请查阅《 InfoQ 社区编辑团队加盟指南》了解相关信息!

2014 年 10 月 16 日 22:321261
用户头像
王文刚 Instagram 营销专家

发布了 37 篇内容, 共 18.0 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

维度数据模型建模过程(Kimball)

大数据技术指南

数据仓库 维度建模 4月日更

天哪,没有设计经验的ta,居然掌握着“PS大师级

Adobe国际认证

ps

MySQL性能监控与调优

Sakura

四月日更

Linux df 命令

一个大红包

linux命令 4月日更

在有道 | L同学:一位十五年有道人的成长故事

有道技术团队

分享 访谈录 阅读 网易有道

拍乐云入选 2021 爱分析·产业数字化厂商全景报告

拍乐云Pano

RTC

使用transform制作书本翻页效果

空城机

JavaScript 前端 4月日更 书本翻页

vue2的$refs在vue3组合式API中的替代方法

devpoint

Vue3 $refs vue2 this.$refs

病毒:注册表的认识以及用c语言编写一个“百分之一熊猫烧香”

Machine Gun

网络安全 信息安全 WEB安全 病毒

Gartner免费在线研讨会:安全访问服务边缘(SASE)产品策略

Geek_bacee5

Gartner在线研讨会 SASE技术免费在线研讨会

一周信创舆情观察(4.5~4.11)

统小信uos

聪明人的训练(十六)

Changing Lin

四月日更

征服耶鲁教授的算法大神程序媛,是如何践行“以人为本”开发智慧社区大脑的?

华为云开发者社区

算法 音视频 智慧社区 华为智慧园区数字平台 数字平台

web简易视频聊天室+媒体流插入

anyRTC开发者

前端 音视频 WebRTC RTC

我们真的可以使世界成为无密码的地方吗?

龙归科技

网络 安全性

如何利用ipad随时随地开发代码

有理想的coder

ipad 编程 远程

【有奖征文】WEB前端大作战,走在技术最前端!

华为云开发者社区

node.js Vue 前端 Web Web框架

借助 Serverless 容器服务Cube,筷子科技轻松打造 10 万+ 爆款短视频

UCloud技术

合约跟单系统开发|合约跟单APP软件开发

开發I852946OIIO

合约量化交易机器人系统开发|合约量化交易机器人APP软件开发

开發I852946OIIO

HTTPS双向认证

上海派拉基础研发

https HTTP ssl SSL 连接

让GitHub低头的10W字阿里内部Java面试手册有多强?

周老师

Java 编程 程序员 架构 面试

使用Python映射,过滤和缩减函数:所有您需要知道的

华为云开发者社区

Python 函数 映射 内置函数

很坑的Could not transfer artifact报错

CoderJ

maven Mac IDEA

合约量化机器人系统开发|合约量化机器人软件APP开发

开發I852946OIIO

系统开发

从阿里被罚182亿,看DeCom时代的崛起!

北熊老师

区块链 太空猫公链

5分钟教你学会GaussDB数据分布策略设计

华为云开发者社区

数据库 分布式数据库 GaussDB GaussDB(for openGauss) 数据分布

合约量化交易APP开发|合约量化交易系统软件开发

开發I852946OIIO

系统开发

磁盘快照服务USnap:公有云连续数据保护(CDP)系统升级改造实践

UCloud技术

深入浅出带你掌握线程、多线程和线程池

华为云开发者社区

Java 线程 多线程 线程池 操作系统

13年Java开发经验精华总结!29大核心知识模块,带你直达架构师!

Java架构追梦

Java 阿里巴巴 架构 全栈知识点

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

Spread全球架构师谈电子表格控件的性能最优原则-InfoQ