Office 365开发概述及生态环境介绍(一)
原文于2017年3月13日首发于LinkedIn,请参考这个链接
离上一篇文章,很快又过去了两星期的时间。今天抓紧晚上的时间,开始了Office 365开发系列文章的第一篇,我会帮助大家回顾一下过去Office开发的一些场景,目前提供的一些能力,最后展望一下生态环境建设和未来的发展。
关于Office 365开发,这里的定义并不是指开发Office 365平台,或者接口(这两部分由微软数以万计的研发工程师们在负责),而是基于Office 365平台及其提供的接口,独立开发商(ISV)或者有一定能力的开发人员、高级用户针对Office 365的定制、扩展、集成等方面的开发。
回顾过去Office开发的基本情况对于Office开发,我应该算起来是接触比较早的一批中国用户之一,所以如果大家愿意听,我很乐意分享一些Office开发的基本情况以供参考。
从Office 97开始,我使用过后面几乎所有的Office 版本,但是印象最深刻的有几个版本
1.Office XP这个版本没有用年份来编号(实际上应该是Office 2002),原因估计是为了配合Windows XP的整体市场宣传定位。它的特殊之处在于有一个所谓的开发版(2000也有开发版,但在2002这个版本更加完善),有怀旧情结的同学,请移步这里进行围观。值得一提的是,虽然同样带有XP的光环,但Office XP远没有Windows XP那么风光(服役超过13年,甚至直到现在都还有用户对其念念不舍),因为它很快就被Office 2003取代了。
2. Office 2003这是一个非常重要的版本,它代表中Office产品技术的一个巅峰时代——这个版本的Office功能非常强大,可以说是无所不包。我敢大胆地推测,正在看这篇文章的读者中绝大部分的朋友都用过这个版本吧。如果说Office XP是我用得比较全的一个版本(除了Outlook没有怎么用,其他组件基本都对照帮助文档摸了一遍,还用FrontPage做出了人生第一个奇丑无比的网站,但其实对那些所谓的开发完全是一知半解,半生不熟),那么Office 2003是我真正意义上开始较为深入使用的版本,尤其以Excel和Access这两个组件,结合当时的实际工作需要,我使用VBA开发了从简单到复杂的各种小应用。
学习Excel的VBA,我是完全认真的,一个佐证就是我在那个年月愿意花五十美金托人从国外辗转买来下面这样一本足有1000多页的书过来啃,而师从Mr.Spreadsheet——John Walkenbach,也算系出名门了。这本书以及John本人对我影响之大,很难用一两句讲清楚——在那个相对单纯的年代,我一头扎进Excel VBA的世界里,收获的可不仅仅是写代码带来的乐趣,还有在微软技术社区(那会儿叫新闻组)中认识的一大批朋友。事到如今,如果说我有什么遗憾的话,一是还没有见过John的真人,另外一个就是我虽然有心想把这本书传承给一位有缘人,但一直没有找到——它太厚了。
3.Office 2007前面提到Office 2003是一个巅峰之作,那么Office 2007毫无疑问就是一个转型精品。表面上看,2007带来了全新的UI风格——Ribbon,这是一次大胆地尝试,因为谁都知道2003的菜单已经非常多了,以至于对于不少新手来说,经常发生找不到功能所在的位置。这种界面的创新带有一定的冒险(颠覆自己成熟的产品确实需要勇气),但事实证明是非常成功的。
除了界面上看到的变化,其实Office 2007的另外一个重要创新,是重新定义Office文档的格式——除了继续支持Office 2003及早期版本的二进制文件格式之外,还有一种全新的基于XML的文件格式(通常在默认的文件扩展名后面添加一个x以示区分,如Word 2003的格式是doc,而Word 2007虽然依然支持doc,但更推荐用户使用docx文件格式)。这个后来被正式命名为OpenXML的技术,微软在经过实践后将其贡献给ECMA,并被ISO和IEC等组织认定为开发文档格式的国际标准。如果对OpenXML的标准感兴趣,请参考https://en.wikipedia.org/wiki/Office_Open_XML 。
在开发的层面,Office 2007也有新的变化。首先,它当然继续支持VBA,但却规定所有包含代码的文件,与不包含代码的文件,从文件格式上就明确有所区分。例如,Excel 2007的标准文件格式为xlsx,而包含VBA代码的文件则必须重命名为xlsm(这里的m是指macro的意思,我后续会介绍这个概念)。其次,它开始支持使用Visual Studio 2005以及.NET Framework对其进行开发定制,这就引出了一个全新的开发工具VSTO——Visual Studio Tools for Office,这个传统也一直沿用至今。
针对.NET开发人员,微软还专门提供了OpenXML SDK,支持从自定义程序中通过OpenXML的标准操作Office文档(不要求本地安装有Office)。
4.Office 2013Office 2010相较2007来说,我感觉主要是一些界面细节的优化。但Office 2013是一个向云而生的版本,它有很多重要的创新,例如增强了与云端服务整合的能力、跨平台和设备的能力、协同编辑的能力等,还有一条对开发人员来说至关重要——它带来了一个所谓的App开发模式,而且这个模式是涵盖到了客户端和服务器端以及云端完整的产品线的。首先,这从根本上解决了开发人员部署应用程序的困扰,其次,它将通过Office Store建立一个全新的生态环境。
毫无疑问,我接下来要谈的将是Office 365。这样说,其实并不是说Office 2016不重要,虽然未来还将有Office 20xx这样按照年份编号的版本(我们称为本地版本),但Office 365将代表着微软对于广大Office用户的最终承诺,它已经有并且还将不断有各种创新,用技术的变革来推动生产力的进步。但在展开Office 365之前,请让我对此前的两种开发技术/模式——VBA和VSTO——进行一个归纳,向经典致敬。
1.VBA