BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 王文刚 关注 0 他的粉丝 发布于 2014年10月18日. 估计阅读时间: 7 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

电子表格是一种历史悠久的软件类型。近日,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社区编辑团队加盟指南》了解相关信息!

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT