国家  china

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

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

2014.10.16 —— InfoQ访谈: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架构,并对数据存储采用稀疏存储方式,这样的设计特点是极大的节约了内存,可实现大数据处理。
这张图说明了软件架构的对外接口:
Spread报表控件软件架构的对外接口
另外,如果一次性添加大数据,则通过如下的代码调用,减少公式频繁运算导致的性能损失。在Data Model中,类似这样的成对方法,就是为了解决大数据而设计的:
FpSpread1. SuspendFormulaParsing ()
FpSpread1.Sheets[0].DataSource = dbDataSet;
FpSpread1. ResumeFormulaParsing (True)

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

王灵峰:以CellType来说,Spread提供了超过20种CellType,如条形码、二维码、货币、按钮、图形等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的读者们说的?

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

原文首发于InfoQ:http://www.infoq.com/cn/news/2014/10/spread-performance