拥抱开源,Office 365开发迎来新时代

前言

做为全球最大的开放源代码托管平台,Github在上周迎来了它的十岁生日。自从2008年正式上线以来,Github上面汇聚了数以千万计的开发人员和各类项目,它几乎成为了开源的代名词和风向标,各大软件巨头都纷纷支持,在广大程序员心目中,也更是精神图腾通常的存在,坊间戏言它是最大的同性交友平台。html

github 十周年

我本身对开源了解很少,而且能力也有限,一直没有在这方面有所贡献,但我确定和你们同样都是Github的受益者。今天这篇文章一方面是但愿借此为Github庆生(原本是上周想写,但一直没有时间),另外也是由于最近有开源社区的朋友邀请我有机会谈一谈这些年Office 开发(尤为指Office 365开发)中对开源平台的支持,这方面我多多少少知道一点,就斗胆写出来,也算是向“开源”精神致敬吧,请你们参考。git

本文以及这个系列文章都是托管在Github上面,用markdown这种自由奔放的轻量级标记语言写成,使用的工具Visual Studio Code也是开源的,欢迎到https://github.com/chenxizhang/office365dev 上面来提issue,欢迎给我star以鼓励,欢迎fork这个repo而且经过pull request提交你的看法。程序员

微软的开源行动

微软这几年内部进行了深入的转型,为外界所熟知的除了有业务方向的变化、组织的调整、股价的飞涨以外,时不时会有一些让业界“看不懂”的新动做,过去的很少说,今天最新的一个劲爆新闻是微软也要推出本身定制版本的Linux,不由让人感慨这世界到底怎么了。github

但要论起微软在开源方面的努力,其实在多年前就开始了。2006年先后,微软发布了Codeplex网站,当时也是规模不小的开源代码托管平台,微软本身有不少著名的项目,都是在这个平台上面开放源代码,包括ASP.NET等,但后来的故事你们也差很少知道,随着Github的崛起而且成为事实上的标准,微软将几乎全部项目迁移到了Github,而且于2017年12月份正式封存了Codeplex(目前继续提供只读查询,和下载服务)。docker

2014年4月,微软宣布成立.NET基金会,同时宣布释出.NET编译器平台Roslyn,做为开放源代码软件。11月释出在服务器上运行的.NET Core源代码,交由.NET基金会管理,鼓励自由软件社群参与将.NET软件平台移植到Linux与Mac OS上。基金会由开源社区的大神Miguel领衔,管理着55个正式的项目,很多业界的知名公司也是基金会的重要成员,包括Google,三星等。npm

.net 基金会

值得一提的是,.NET基金会的源代码也是托管在Github上面的,地址是 https://github.com/dotnetgulp

回到Github上面来,据不彻底统计,目前微软员工参与Github的人数是全世界最多的,全部项目得到Star总数组织排名全世界第三。下面我有一个不彻底的统计,能够看出近四年来,微软在Github上面的贡献稳步攀升的表现,目前的Repository数量至少有 2054 个。数组

microsoft at github

目前在Github上面,微软最受欢迎的40个项目以下服务器

top 40

Office 365开发拥抱开源

那么,咱们来看看Office 365的开发,到底跟开源有什么关系呢?在Github上面,微软除了有一个最大的组织(https://github.com/microsoft)外, 还有两个跟Office 365开发直接相关的组织,他们分别是markdown

  1. SharePoint 开发 :https://github.com/sharepoint
  2. Office 365 开发 :https://github.com/officedev

SharePoint开发十大最受欢迎项目以下所示

sharepoint project

Office 365开发中star数量超过100个16个项目以下

office project

以上是微软产品组不断贡献出来的一些项目。接下来,我还要谈一下在Office 365开发的不一样层面是如何支持开源平台的。目前来讲,咱们通常将Office 365的开发分为以下几个领域

  1. 使用Microsoft Graph将你的业务应用与Office 365无缝整合。
  2. 经过Office Add-in的技术扩展你熟悉的Office应用程序。
  3. 经过SharePoint Add-in的技术打造基于SharePoint的业务应用。
  4. 基于Microsoft Teams开发智能机器人或者业务选项卡、链接器应用。

Microsoft Graph对于开源平台的支持

使用 Microsoft Graph API 轻松链接到可加快工做效率的数据 – 邮件、日历、联系人、文档、目录、设备以及在这些数据中发现有价值的信息 —— 不夸张地说,若是说员工和知识是企业的两大无形资产的话,那么Microsoft Graph就是一个宝藏,它不只表明着如今,也意味着将来极大的可能。

graph

为了让Microsoft Graph可以极大地方便开发者调用,从一开始的设计理念,就是要支持全部的开发平台 —— 不论是开源的,仍是不开源的。这一点是由Microsoft Graph的工做机制来保证的 —— 它就是一套标准的REST API。

list Messages

这些API都是返回Json数据格式,并且彻底基于OData的规范设计,支持标准的查询参数。

odata query

除了REST API ,微软也有针对主流的平台提供了SDK,能够加快开发的速度。

sdk

使用Visual Studio Code快速开发Office Add-in

我此前有过一篇文章专门介绍这个主题,这里简单地整理几个要点。

要开发Office Add-in,你如今有多个选择

  1. 若是你是Visual Studio的资深用户,你的经验能够很好地复用,Visual Studio 2017提供了开箱即用的Office Add-in模板,几回点击就能够建立一个项目,而且能够一键进行调试。
  2. 与此同时,你可使用Visual Studio Code这个开源的编辑器,结合 NodeJS、 Typescript、React、JQuery 等开源平台和框架来构建你的Office Add-in,在设计你的UI时,你还开源直接使用微软开源的Office Fabric UI呢。

下面我演示一个基本的步骤

  1. 安装环境(NodeJS,Visual Studio Code)

  2. 安装Office Add-in项目生成器 npm install -g yo generator-office

  3. 建立项目 yo office

    create office project

  4. 在Visual Studio Code中编辑和调试项目

    visual studio code

Visual Studio Code的话题也许三天三夜都讲不完,但经过上述的介绍,你们能够看到如今开发Office Add-in是一种全新的体验,你可使用你最熟悉的编辑器,搭配你最喜欢的框架来工做。

全新的SharePoint Framework,全新的组件式开发体验

与Office Add-in同样,我此前也已经有专门的文章介绍和演示了SharePoint Framework的开发体验,这里也仅仅是将与开源相关的内容重点整理给你们参考,SharePoint Framework开发的最便捷步骤以下:

  1. 安装环境(NodeJS,Visual Studio Code)

  2. 安装模块 npm install -g yo gulp

  3. 安装SharePoint Framework 项目模板 npm install -g @microsoft/generator-sharepoint

  4. 建立项目 yo @microsoft/sharepoint 推荐使用React

    sharepoint project

  5. 运行和调试项目 gulp serve

    sharepoint workbench

  6. 在Visual Studio Code中编辑项目(图略)

  7. 部署项目 gulp bundlegulp package-solution

Microsoft Teams的扩展开发体验

Microsoft Teams是Office 365中一个重要的创新,它能够将团队协做提高到一个新的层次。从另外一方面,开发人员也能够在这个平台上面拥有全所未有的能力,例如:

  1. 为Teams定制智能会话机器人 (Bot),以全新的交互方式为用户提供服务
  2. 将业务应用,以选项卡(Tab)的方式集成到Teams的频道中来
  3. 定制消息扩展(Message Extension)及链接器(Connector,Webhook),与外部系统进行松耦合式的对接

听起来有点复杂,但其实作起来真的不难,请参考下面的步骤

  1. 安装环境(NodeJS,Visual Studio Code)

  2. 安装Teams项目模板 npm install yo generator-teams -g

  3. 建立Teams项目 yo teams

    yo teams

  4. 在Visual Studio Code中编辑项目

    vscode teams

你能够经过上面的步骤快速建立一个Microsoft Teams应用,可是要作出来一个真正可用的App,你毫无疑问还须要更多的时间,请参考官方的文档 https://docs.microsoft.com/zh-cn/microsoftteams/platform/

上面提到的Office Add-ins、SharePoint Add-ins、Teams App开发,你能够看到针对NodeJS都提供了第一优先的支持,这是实实在在地爱开源啊。但我也必须说明的是,Office Add-insSharePoint Add-insTeams App 的开发支持任何的开发平台,由于他们说到底就是一个标准的Web应用,只不过尚未像NodeJS这样上升到工具和模板层面(这个能够经过开源社区你们努力来实现),因此你可使用ASP.NET CorePythonPhp等进行开发,而且能够很方便地经过 docker 等一系列技术来实现devops。对,你没有听错,Office 365的开发固然也能够实现devops

关于如何在docker中运行ASP.NET Core跨平台应用程序,我此前有一个文档能够参考 http://www.cnblogs.com/chenxizhang/p/7148657.html, 本书的范例是用ASP.NET Core编写,而且部署到了Azure的docker环境中。

结语

本文带领你们回顾了一下开源及社区的发展、微软在开源方面的努力,以及具体在Office 365开发的四个领域如何张开双手拥抱开源。一千我的的心目中有一千个哈姆雷特,但开源的精神应该只有一个,它不只仅是开放源代码,它是一种开放的心态;同时开源须要更多的人参与、去贡献,只有这样,咱们的“源”头活水才会生机勃发,愈来愈"开"阔。笔者今年的小目标是除了维护以前的一个小的开源项目外,争取参与到微软官方的几个大的Office 365开源项目中去作一点贡献,也但愿看到更多的开发人员参与进来。

相关文章
相关标签/搜索