本文于2017年3月19日首发于LinkedIn,原文链接在这里

上一篇 文章,我给大家回顾了Office发展过来的一些主要的版本(XP,2003,2007,2013等),以及在Office客户端中进行扩展开发的手段(主要提到了VBA和VSTO,这里没有提及SharePoint等服务器端开发,因为后续会有专门的四篇文章介绍)。承蒙大家抬举,我的这个系列文章除了首发在LinkedIn上面,同时会在Githubcnblogs以及以下两个公众号进行每周连载,如果有兴趣的朋友,请按需关注。

  1. 微软中国Office 365官方公众号,mschinaoffice365
  2. Excel之家ExcelHome,iexcelhome

言归正传,这一篇主要有两个话题,首先我会谈一谈在Office 365这个平台上面,支持的扩展开发手段以及应用场景;其次我会介绍一下我自己理解的Office 365所提供的全新的生态环境。

Office 365开发概述

我想从下面几个角度来讲讲Office 365开发

  1. Office 365是什么
  2. Office 365的开发包括哪些场景
  3. Office 365的开发有哪些技术手段

Office 365并不是Office的简单升级版本,我们以前的Office版本通常都是按照年份来编号(这个还将继续存在),而Office 365他提供了一个全新的服务模式——基于云的生产力平台。简单地说,他(永远)包含了最新版本Office,同时还包括了在线及移动版的Office以及其他很多创新性的云服务,来真正帮助组织或者个人释放生产力,改善工作体验。

Office 365的名称不会随着时间而变化,也就是说,不会有Office 366或者Office 360之类的叫法,他就叫Office 365(当时取这个名字,大意是希望让Office服务于我们的每一天)。据不完全统计,世界上大约有1/7的用户在使用Office,我们有这个荣幸。

从最基本的层面来看,Office 365可以像下面这样理解

与此同时,Office 365还在不断地创新,推出新的服务,很多都是免费提供给现有Office 365用户的。下面是目前国际版的截图。

Office 365是一个全球运营的服务,目前我们在全球38个不同的地区都有Office 365的数据中心,请参考 http://o365datacentermap.azurewebsites.net/

与此同时,在中国我们有两个完全独立的数据中心(分别位于上海和北京),由世纪互联负责运营。请参考 http://www.21vbluecloud.com/office365

除了全球统一的那个国际版之外,在世纪互联运营的这个版本,我们内部称之为Gallatin,大部分中国的客户都是购买这个版本,但也有一部分有海外业务的中国客户,会购买另外一个代号为Yellowstone的海外版本(特指数据中心在香港或新加坡的版本)。

最后,Office 365是基于订阅进行授权的,用户可以按需订阅组件,按照具体使用的时间付费,而无需一次性购买。针对不同的组织或个人,Office 365提供了丰富多样的订阅选项。详情请参考 https://products.office.com/zh-cn/business/compare-more-office-365-for-business-plans

教育版和非营利组织版订阅费用极低,甚至免费。

世纪互联的授权计划大抵上跟国际版类似,但也有些细微的区别,有兴趣的请参考 http://www.21vbluecloud.com/office365/pricing.html。从功能角度来说,核心的功能都已经落地到Gallatin,但是确实有些新推出的服务,会有一定的部署周期。本系列文章后续提到这些服务的时候,会做出一定的说明

那么,在了解了Office 365的这些背景之后,我们再来看一下在Office 365 这个全新的生产力云平台上面,对于开发人员来说有哪些机会。

平心而论,Office 365 本身提供的功能和服务已经非常丰富,甚至强大到让我们的客户都觉得目不暇接,日常用到的功能可能也只有全部功能的一小部分。但是,Office 365毕竟是一个基础性的平台,我们的客户不会为了用Office 365而用Office 365,而肯定是为了解决他的业务需要而使用的。打个比方说,客户用Word,并不会是仅仅因为Word是一个世界一流的字处理软件,而是因为他(她)要编写一份自己想要的方案或者论文,而Word正好可以帮助到他。从这种层面上来说,客户的业务需求肯定是千奇百怪的,而且永远不会被完全满足,尤其不可能靠微软一家之力、靠Office 365的标准功能就能完全满足。

所以,Office 365继承了Office的一贯的优良传统,从设计的一开始,从架构上面来说就支持开发人员在其基础上,按照业务的需求进行定制和扩展,官方的Office开发中心清晰地展示了这方面的能力,具体来说可以有下面四个主要的场景

Microsoft Graph

通过Microsoft Graph,可以让你的自定义应用系统(不管是Web 应用,还是桌面应用,抑或是移动App)通过统一的、RESTful的接口访问到授权用户的Office 365的资源。稍微深入地展开一点来说,一方面你的应用可以使用Office 365提供的Identity 服务,简化和统一身份验证环节;第二方面,你将直接将Office 365的能力无缝地集成到你的应用中去,免费享受到微软强大的基础投资带来的好处。

下图提到的这个随办的应用,是目前国内做得很完善的与Office 365应用集成的成功案例,有兴趣可以参考

关于Microsoft Graph,我在本系列文章的第三篇将详细展开探讨,如果有兴趣的朋友,请先了解 https://developer.microsoft.com/en-us/graph/

Office Add-ins

Add-ins对于Office开发人员来说并不是新事物。上一篇文章我已经提到了VBA可以做Add-in(通常是通用的功能,不跟具体的文档有关,并且需要保存为特殊的格式——例如xlam或者xla这种才算,称之为Excel Add-in),VSTO也可以做Add-in(称之为COM Add-in)。

这两种Add-in,请姑且允许我将其称之为传统的Add-in。他们将需要在本地安装和部署,并且将出现在Office应用的如下界面中,可以按需要启用或者禁用。

这两种Add-in的优势和劣势在上一篇文章已经有详细的说明,这里不再赘述。Office 365的Add-in指的是基于新一代的Web技术推出的Add-in开发能力,我可以将他们称之为Web Add-in。

我这里同样不会过分地展开细节,因为本系列文章后续有五篇文章专门讲解这个内容。我只希望大家能够明白,为什么会推出Web Add-in这种新的开发模式?其实很简单:

第一我们希望提供给开发人员更好地分发Add-in的能力,如果要首先这一个目的,就最好不要依附在文档内部,不要在本地安装,不要再为版本更新操心费力,对用户来说实现一次订购处处可用。

第二,我们希望能够在移动设备也能使用这些Add-in,不必要为移动设备又单独做一次开发。

下面这个同样由随办团队出品的iOffice Add-in,可以安装在Outlook或者OWA中,这个目前是免费的Add-in,可以让随办的用户之间在Outlook中进行很多有意思的互动,包括查看联系人,分配微任务等。

SharePoint Add-ins

之所以单独将SharePoint 的Add-ins拿出来,区别于Office Add-ins,是因为SharePoint指的是服务器端开发,在开发模式及要求的能力上面是不太一样的。但以我看来,SharePoint的开发人员,向Office 365转型会比传统Office开发人员向Office 365来的容易,原因在于,SharePoint的开发,虽然也经历过几种不同的历史阶段(例如最早的WSP,到后来的Farm Solution,到后来的Sandbox Solution,再到SharePoint 2013时代横空出世推出了App的模型),但本质上来说,其核心还是Web开发,所以有这种经验和基础的开发人员,在如今这种“移动优先、云优先”的大背景下,有着一些先天的优势,何况说,新的Add-in开发模式进一步标准化了,从逻辑上说应该还可能会更加容易一些。

目前在Office Store中有超过1163个SharePoint Add-in,占到全部Add-in的将近58%,足见其市场潜力。

Office 365 Connectors

Connector(直译过来是连接器)是一个全新的事物。它目前在Outlook Modern Groups以及最新发布的Microsoft Teams中起到连接外部应用系统或者信息源的作用。

这个要讲起来,最根本的一点是大家要理解在企业内部协作的时候,最重要的是一个团队的概念,而在团队的一个共同的工作区中,我们称之为Group。在Group(Teams中称为Team)的日常协作过程中,可能有链接外部的应用系统或者信息源,以便在这些系统或者信息发生变化的时候,团队能以一种透明的方式得到通知。Connector就是做这个的。目前已经默认提供了超过50个标准的Connector,但开发人员可以根据自己需要进行定制。

介绍完了Office 365开发的典型四大场景(Microsoft Graph,Office add-ins,SharePoint Add-ins,Office 365 Connectors),这里快速给大家提一下,作为开发人员可以使用哪些平台或工具来开展工作。

从下图可以看到,目前支持的开发平台除了ASP.NET,还有Android+iOS这种Native App平台,也有完全基于Javascript以及NodeJS的开发支持。这是一个开放是世界,Office 365的开发掀开了崭新的一页;对于开发人员来说,会有一定的挑战,但我相信机遇更加大。

Office 365生态环境介绍

我很喜欢生态环境这个词,而且我自己对这个词很有感触是前些年看电视节目说到某些地区由于某个物种的恶意捕杀,导致了食物链上其他一批物种也相应地灭绝,让人触目惊心。从当前的经济全球化和扁平化的大背景来看,几乎所有的公司都不可能完全靠自己赢得一切,而如果是失败,也不可能仅仅是自身能力不够这么简单。我不是什么大领导,只是结合自己的经验来谈一下Office 365相关的生态环境及其建设。

我在“风起云涌:西雅图技术培训见闻分享” 这篇文章中提到,我理解微软的成功法则是通过紧密团结和帮助客户和合作伙伴成功来获得成就。

这可能看起来有点抽象,我们谈点实际的。Office 365作为一个逐渐完善和成熟起来的全球性生产力云平台,他已经取得的一些成绩,以及将要进一步的发展,都完全离不开客户和合作伙伴的参与。

从客户这个角度来说,我们看到越来越多客户认识到Office 365所带来的全新价值,在自身的数字化转型过程中,利用Office 365提供的生产力解决方案(而不仅仅是产品)取得先机。

Facebook的选择让我们看到这种级别的科技企业的决断力,也许这正好是他能专注于业务创新的动力之一。

合作伙伴体系一直是微软的重要资产,在全球有数以百万计的各种规模的合作伙伴,这一点都不夸张。每年都有一次规模盛大的全球合作伙伴大会,今年的大会将在华盛顿举行,有意思的是,这一届又与时俱进地改了名字,希望进一步激励和启迪所有人在数字化转型的道路上锐意创新吧。

开发人员是Office 365生态中的重要力量,在微软内部研发工程师仍然占了大部分的比例,至少包括基础架构的开发团队,Office 365功能开发的团队,以及为Office 365设计接口的团队,还有一些特殊版本本地化的研发团队等。

对于合作伙伴的开发团队,最重要的是结合自身业务或者客户需求,选择合适的切入点和自己熟悉的技术,优势互补,利用Office 365平台提供的基础能力快速开展创新。

为了更好地建设围绕Office 365的中文用户社区,微软有多个部门都在积极努力,下面这篇文章我详细地介绍了这方面的信息,如果有兴趣的朋友请参考

介绍Office 365 中文用户社区 4.0

Office 365开发概述及生态环境介绍(二)的更多相关文章

  1. Office 365开发概述及生态环境介绍(一)

    原文于2017年3月13日首发于LinkedIn,请参考这个链接 离上一篇文章,很快又过去了两星期的时间.今天抓紧晚上的时间,开始了Office 365开发系列文章的第一篇,我会帮助大家回顾一下过去O ...

  2. Office 365开发环境概览

    本文于2017年3月26日首发于LinkedIn,原文链接请参考这里 本系列文章已经按照既定计划在每周更新,此前的几篇文章如下 Office 365 开发概览系列文章和教程 Office 365开发概 ...

  3. Office 365 开发概览系列文章和教程

    Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...

  4. 《Office 365开发入门指南》上市说明和读者服务

    写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...

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

    前言 作为全球最大的开放源代码托管平台,Github在上周迎来了它的十岁生日.自从2008年正式上线以来,Github上面汇聚了数以千万计的开发人员和各种项目,它几乎成为了开源的代名词和风向标,各大软 ...

  6. [转] KVM虚拟化技术生态环境介绍

    KVM虚拟化技术生态环境介绍 http://xanpeng.github.io/wiki/virt/kvm-virtulization-echosystem-intro.html kvm和qemu/q ...

  7. 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市

      今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...

  8. Python在Office 365 开发中的应用

    我在昨天发布的文章 -- 简明 Python 教程:人生苦短,快用Python -- 中提到了Python已经在Office 365开发中全面受支持,有不同朋友留言或私信说想了解更加详细的说明,所以特 ...

  9. [ Office 365 开发系列 ] Graph Service

    前言 本文完全原创,转载请说明出处,希望对大家有用. 通过[ Office 365 开发系列 ] 开发模式分析和[ Office 365 开发系列 ] 身份认证两篇内容的了解,我们可以开始使用Offi ...

随机推荐

  1. 为 Jenkins 配置 .Net 持续集成环境

    去年年底,得益于公司引入 Jenkins,让我们在持续集成方面迈出了第一步,本文不赘述如何安装 Jenkins,主要关注点在于配置 .Net 环境.另外本文是在 Windows 环境下安装的 Jenk ...

  2. java gc的调用机制 和编程规则

    转载:http://sunzhyng.iteye.com/blog/480148 一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,有一些应用程序对性能要求 ...

  3. Docker 1.13 管理命令

    1.12 CLI 的问题 Docker1.12 命令行接口(CLI)有40多个顶级命令,这些命令存在以下问题: 没有归类组织,这让docker 新手很难学习: 有些命令没有提供足够的上下文环境,以至于 ...

  4. 关于Node.js后端架构的一点后知后觉

    前言 上周有幸和淘宝前端团队的七念老师做了一些NodeJS方面上的交流(实际情况其实是他电话面试了我╮(╯-╰)╭),我们主要聊到了我参与维护的一个线上NodeJS服务,关于它的现状和当下的不足.他向 ...

  5. windows visual studio 2015安装

    下载 首先到微软官方下载在线安装文件 https://www.microsoft.com 运行安装 点击运行后选择 自定义 选择安装功能,把sql server去掉,是数据库插件 点击下一步,中途会提 ...

  6. linux 进程间通信 之fifo

    上一篇博客已经介绍了一种进程间通信的方式,但是那只是针对于有血缘关系的进程,即父子进程间的通信,那对于没有血缘关系的进程,那要怎么通信呢?  这就要创建一个有名管道,来解决无血缘关系的进程通信, fi ...

  7. 三层——vb.net版

    经过不懈的努力,我的vb.net 版的三层登陆终于实现了.下面将我的成果向大家展示一下. 原则          vb.net的三层登陆跟C#的三层登陆的思想是一样的都是将系统分层--U层只负责与用户 ...

  8. 浅谈Activiti Modeler 的扩展

    为什么要扩展         最近项目打算用activiti工作流中activiti modeler来做模块的可视化订阅,但是原生的activiti任务节点,有一些不符合业务需要,比如 配置项多,属性 ...

  9. 读书笔记 effective c++ Item 7 在多态基类中将析构函数声明为虚析构函数

    1. 继承体系中关于对象释放遇到的问题描述 1.1 手动释放 关于时间记录有很多种方法,因此为不同的计时方法创建一个TimeKeeper基类和一些派生类就再合理不过了: class TimeKeepe ...

  10. js文字滚动效果实现

    纯js实现,完整代码如下: <!doctype html> <html lang="en"> <head> <meta http-equi ...