Office 365开发概述及生态环境介绍(二)
本文于2017年3月19日首发于LinkedIn,原文链接在这里
在上一篇 文章,我给大家回顾了Office发展过来的一些主要的版本(XP,2003,2007,2013等),以及在Office客户端中进行扩展开发的手段(主要提到了VBA和VSTO,这里没有提及SharePoint等服务器端开发,因为后续会有专门的四篇文章介绍)。承蒙大家抬举,我的这个系列文章除了首发在LinkedIn上面,同时会在Github和cnblogs以及以下两个公众号进行每周连载,如果有兴趣的朋友,请按需关注。
- 微软中国Office 365官方公众号,mschinaoffice365
- Excel之家ExcelHome,iexcelhome
言归正传,这一篇主要有两个话题,首先我会谈一谈在Office 365这个平台上面,支持的扩展开发手段以及应用场景;其次我会介绍一下我自己理解的Office 365所提供的全新的生态环境。
Office 365开发概述
我想从下面几个角度来讲讲Office 365开发
- Office 365是什么
- Office 365的开发包括哪些场景
- 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开发概述及生态环境介绍(二)的更多相关文章
- Office 365开发概述及生态环境介绍(一)
原文于2017年3月13日首发于LinkedIn,请参考这个链接 离上一篇文章,很快又过去了两星期的时间.今天抓紧晚上的时间,开始了Office 365开发系列文章的第一篇,我会帮助大家回顾一下过去O ...
- Office 365开发环境概览
本文于2017年3月26日首发于LinkedIn,原文链接请参考这里 本系列文章已经按照既定计划在每周更新,此前的几篇文章如下 Office 365 开发概览系列文章和教程 Office 365开发概 ...
- Office 365 开发概览系列文章和教程
Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...
- 《Office 365开发入门指南》上市说明和读者服务
写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...
- 拥抱开源,Office 365开发迎来新时代
前言 作为全球最大的开放源代码托管平台,Github在上周迎来了它的十岁生日.自从2008年正式上线以来,Github上面汇聚了数以千万计的开发人员和各种项目,它几乎成为了开源的代名词和风向标,各大软 ...
- [转] KVM虚拟化技术生态环境介绍
KVM虚拟化技术生态环境介绍 http://xanpeng.github.io/wiki/virt/kvm-virtulization-echosystem-intro.html kvm和qemu/q ...
- 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市
今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...
- Python在Office 365 开发中的应用
我在昨天发布的文章 -- 简明 Python 教程:人生苦短,快用Python -- 中提到了Python已经在Office 365开发中全面受支持,有不同朋友留言或私信说想了解更加详细的说明,所以特 ...
- [ Office 365 开发系列 ] Graph Service
前言 本文完全原创,转载请说明出处,希望对大家有用. 通过[ Office 365 开发系列 ] 开发模式分析和[ Office 365 开发系列 ] 身份认证两篇内容的了解,我们可以开始使用Offi ...
随机推荐
- [随笔]利用云虚拟机和学校VPN实现校外访问校内站点(反向代理)
探究背景简介: 大学校内站点一般不对外开放,个人认为原因有二: 一是站点内容受众就是大学师生: 二是站点基本无防御措施,在公网环境下容易发生意外情况. 至于为何不对外开放,不是这篇随笔探讨的重点,利用 ...
- ssh配置文件及问题解决
一 ssh的配置文鉴模板 Host AAA User gitolite3 HostName IP地址 IdentityFile ~/.ssh/key 二 下载代码的方法 1 ssh git2 git ...
- 离职了,在家温故而知新----1 设计模式 & 开头
工作四年有余,编写的代码都是业务代码.不涉及低层. 目前离职在家,过年完了,准备找工作了. 决定温故而知新,复习也是学习. 本着随遇而安的原则,随便从之前设计的众多条目中选择了一条开始复习. 设计模式 ...
- C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)
译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# 6 ...
- webservice_模拟报文测试
一.WebService测试小工具STORM 二.利用MyEclipse的WebService视图调用webservice Ø 除了客户端生成代码编写程序调用之外.还可以用MyEclipse提供 ...
- 修改本地配置远程连接oracle数据库
当我们需要查看数据库信息时,我们更愿意通过客户端来查看,这样不仅操作方便,而且查看更精准.那么需要远程连接数据库需要在本地修改那些配置呢?以下是我个人的经验,希望大家都指正. 1.在oracle安装目 ...
- testNG实现test失败后重复执行,
test失败自动执行大大提高测试结果的准确性, 1.修改testNG源码实现test失败自动执行, 首先获取testng的源码, 获取源代码,构建过程: $ git clone git://githu ...
- linux下apache 的安装
1.进入work目录下:cd /usr/local/work(如没有则自己新建,命令:mkdir /usr/local/work) 2.在woke目录下从网站下载apache并解压:wget http ...
- js文字滚动效果实现
纯js实现,完整代码如下: <!doctype html> <html lang="en"> <head> <meta http-equi ...
- java数组、泛型、集合在多态中的使用及对比
我们在使用数组,泛型集合的过程中不可避免的会碰到多态,或者说什么情况下能如何使用父数组引用子数组(集合.泛型)呢? 数组在多态中的使用 元素为父类型的数组引用可指向元素为子类型的数组对象 当数组被调用 ...