Office 365也是.NET Core应用开发新战场

最近有幸阅读了陈希章花了一年时间为国内开发者贡献的《Office 365 开发入门指南》。 虽然早期接触过SharePoint的开发,2007年之后就再也没有接触SharePoint的开发,这次阅读这本书让我重新认识了Office的系统开发技术,让我意识到现在的Office 开发也是.NET Core 开发技术的新战场,而且更为有心的是陈希章的范例都是使用.NET Core写的,具体地址 https://github.com/chenxizhang/office365dev。

在新CEO纳德拉的带领下,秉持“云为先”和“一个微软”的方针,微软比任何时候都更加开放和谦虚,内部协作也更紧密。Office 365发展到现在,在经过各种用户看得见和看不见的变迁和进化后,已经成为一套比较成熟的云服务,而各种进步和创新还在继续。 Office 365是一个很好的开发平台,有数以亿计的用户,据不完全统计,地球上1/7的人们在使用Office,Microsoft Graph可以让你的业务系统很容易地和Office 365 集成 起来,立即利用Office 365的强大服务增强业务应用能力。而Office Add-in则是面向所有的Office 365 & Office 开发人员的盛宴,它用来扩展Office 365 & Office的能力,用中国话讲就是“插件”。

本书的内容不仅基本完整覆盖了Office 365开发的四大方向(Microsoft Graph,Office Add-in, SharePoint Add-in,Office 365 Connector),而且还包括了其他一些有意义的话题,例如有针对人工智能的话题,有商业应用平台的话题(Power Apps,Microsoft Flow,Power BI等)。

Microsoft Graph是一套RESTful的接口,所以它的所有接口都是通过标准的http方法(GET, POST, PUT, DELETE)可以直接访问到, 而且还可以通过改变Url的参数来进行筛选、排序、分页等操作,它返回的数据是标准的JSON格式,这种特性决定了Microsoft Graph是跨开发平台支持的,我们可以把它看作是微软Office 365 的API网关,对外提供统一接口层,让我想起我的开源项目Nanofabric(https://github.com/geffzhang/NanoFabric)的API网关Ocelot的角色,我们来看下这张Microsoft Graph的整体架构。

身份认证和授权使用的OpenID Connect和OAuth 2.0,不仅仅是Office 365,Azure上的API验证都是用OpenID Connect和OAuth 2.0,他的实现服务是Azure活动目录(AAD),在Nanofabric 中使用IdentityServer4 来实现身份验证和授权,IdentityServer4 本身已经帮你完成了OpenID Connect和OAuth 2.0 ,而且IdentityServer4 的架构非常优秀,非常容易进行定制开发。

Office add-ins,SharePoint Add-ins,Office 365 Connectors 这三部分是Office 的功能的开发了,包括客户端、服务端和外部系统的交互集成。这是一个典型的微服务的应用系统的架构,值得我们设计应用系统参考。

Office 的扩展开发拥有悠久的历史,相比较之前的VBA(Visual Basic for Application)和VSTO(Visual Studio Tools for Office)开发,我们将这一代的Office Add-in开发技术称为“Web Add-in”,顾名思义,就是使用最普遍的Web技术来进行Office Add-in的开发。如果你已经有Web的开发经验,你将很容易地上手,无需特别学习。反过来说,这也增加了技术的门槛,对于一些早期的Office 插件开发者来说,这是一个不太熟悉的领域,要学的新东西不少,可能会增加大家的转换成本。无论如何,Web Add-in是一个有益的补充(使用它并不意味着要抛弃此前的VBA和VSTO),也是跨平台尤其是移动化的需要。总的来说,Office 365的开发已经全面向开源转型了,使用了大家最熟悉的Web技术,用到了很多开源框架和工具,特别是开源跨平台的.NET 技术.NET Core 在这里扮演了重要角色,这也是.NET Core应用的一个重要战场。

Office 365 不仅仅是无可争议的高效办公第一选择,而且秉持一贯以来的优良传统,它是一个很开放的可扩展平台。除了继续支持VBA和VSTO的扩展方式,新一代Web Add-in 将全面实现“一次编写,处处运行”的目标,发挥你的创意,定制专属的功能,可以在台式机、网页、平板、手机中得到一致性的使用体验,并且还可以与全世界的数以十亿计的Office 365用户分享。Office 365作为一个全新的平台和全新的生态,它本身也足够复杂,这个指南包括目前Office 365所支持的开发模式的全面介绍,并且通过案例带领观众进行实践,这个指南是个入门的好手册,广大的Office开发人员转到我们的.NET Core平台上来吧,让你的Office技能焕发第二春。

相关文章:

  • 《Office 365 开发入门指南》

  • Ocelot——初识基于.Net Core的API网关

  • Ocelot API网关的实现剖析

  • 微服务网关Ocelot

  • 谈谈微服务中的 API 网关(API Gateway)

  • Ocelot网关

  • Ocelot统一权限验证

  • Ocelot监控

原文地址: http://www.cnblogs.com/shanyou/p/8227397.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jzoj4802-[GDOI2017模拟9.24]探险计划【费用流,拆点】

正题 题目大意 一个nnn行的不完全矩阵第iii行有mi−1mi-1mi−1个格子,然后每个格子有危险度。 每次可以从(i,j)(i,j)(i,j)走到(i−1,j)(i-1,j)(i−1,j)或(i−1,j−1)(i-1,j-1)(i−1,j−1) 求 m次,每个格子和路不可以重复走的最小危险度。m次&#xff0…

08-输出类型

输出类型 目录 输出简单类型输出 Map 类型key:列名 value:列名对应的值key:自己指定的列 value:自定义对象resultMap输出简单类型 CustomerMapper.java:返回值为简单类型。 public interface CustomerMapper {/*查询总数*/public Integer getAccountCustomer();…

在Ubuntu 16.04环境下安装Docker-CE(附视频教程)

“ 任何的课程都逃不开理论的支持”久等了各位,上一篇说Docker开始的消息已经过去了一周多的时间,今天推送的消息是告诉大家视频可以学习了!52ABP .NET CORE QQ群 : 633751348大纲Docker的介绍Ubuntu下安装Docker快速体验Docker利用Docker搭…

WebApi client 的面向切面编程

.Net的面向切面编程.Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服务方法“切”为很多面,日志面、验证面、请求方式处理、接口业务实现等多个面,有一些面可以使用过滤器特…

09-一对多关系建表

多表操作 目录 表之间关系一对多关系建表原则表之间关系 一对一关系:一夫一妻。 一对多关系: 一个部门有多个员工,一个员工只能属于某一个部门。 一个班级有多个学生,一个学生只能属于一个班级。 多对多关系: 一个…

10-多对一左连接查询分步查询(查询所有订单及订单对应的客户)

左连接查询(级联查询) 回顾一下:左连接查询,将左边表(order)里的全部内容查出,右边表(customer)查满足条件的。 SELECT * FROM order AS o LEFT JOIN customer AS c on o.cust_id c.cust_id;1那么在 MyBatis 中如何…

入门干货之Grpc的.Net 封装-MagicOnion

0x01、Grpc1、介绍Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具,支持多种语言。在.NET Core “大更新” 之前,也就是目前来说还算是个很不错的选择。2、吐槽a、有很多性能比较的文章拿Grpc开涮.b、搭建困难&#xff0c…

11-分步查询懒加载

分步查询——懒加载模式 目录 懒加载模式示例不使用懒加载使用懒加载aggressiveLazyLoadinglazyLoadTriggerMethods所谓懒加载,也称延时加载,是指不一下子加载完全部资源。需要用到哪些资源才去加载这些资源,用不到的资源,就不去…

利用Service Fabric承载eShop On Containers

从模块化到微服务化从Pet Shop 到eShop on Container都是Microsoft在技术演进的路径上给开发者展示.Net的开发能力和架构能力的Sample工程,Petshop的时候更多的是展现应用的分层架构,设计的抽象与模块间的通讯。到了eShop on Container更多的关注在架构设…

12-多对一添加操作(添加新客户及对应的新订单)

多对一添加操作 场景:现在想要添加一个新客户对应一个新订单,那么要怎么来添加呢? 分析:由于添加订单时,客户对订单是一对多的关系,所以添加订单的时候必须要指明一位客户。 要同时添加新客户以及一个新订…

.NET Core+MySql+Nginx 容器化部署

1. 引言上两节我们通过简单的demo学习了docker的基本操作。这一节我们来一个进阶学习,完成ASP.NET Core MySql Nginx的容器化部署。本文是基于CentOS 7.4环境进行演示,示例项目可以访问Docker.NetCore.MySql进行下载。2. Hello MySQL同样我们还是以循序…

HiveSQL常用优化方法全面总结

转载自 HiveSQL常用优化方法全面总结 Hive作为大数据领域常用的数据仓库组件,在平时设计和查询时要特别注意效率。影响Hive效率的几乎从不是数据量过大,而是数据倾斜、数据冗余、job或I/O过多、MapReduce分配不合理等等。对Hive的调优既包含对HiveQL语…

P3597-[POI2015]WYC【矩阵乘法,倍增】

前言 正题 题目链接:https://www.luogu.org/problemnew/show/P3597 题目大意 问第kkk长的路径长度(非简单路径) 解题思路 先考虑kkk比较小时的情况,我们可以求出长度为111的路径,长度为222的路径,然后以此类推找到第一个与前面的和到kkk就…

13-一对多左连接查询分步查询(查询所有客户及客户对应的订单)

查询所有客户以及对应的订单 目录 左连接查询(不支持懒加载)分步查询(支持懒加载)左连接查询(不支持懒加载) 场景:我们想要查询出所有的客户,并且把每个客户对应的订单也查出来。…

实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作

转载自 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字,预计阅读时间22分钟 导读 本文介绍eBay Carmel团队利用Delta Lake,使Spark SQL支持Teradata的Update/Delete语法。…

14-多对多关系建表

多对多关系建表 目录 多对多关系多对多关系建表原则domain多对多关系 一个老师可以教多个学生,一个学生可以被多个老师教。一个学生可以选择多门课程,一门课程可以被多个学生选择。一个用户可以选择多个角色,一个角色可以被多个用户选择。…

DevOps文档中心的技术实践演进

这应该算是《Git企业开发者教程》的篇外篇,介绍一下这个教程是怎样写出来的。相信每个技术人都有类似下面的文件夹,保存着你辛苦工作的成果。实际的感觉:看着闹心,弃之不舍。一份文档久经修改,不能定稿,循环…

MySQL UPDATE 语句一个“经典”的坑

转载自 MySQL UPDATE 语句一个“经典”的坑 来源:ju.outofmemory.cn/entry/336774 有问题的SQL语句 why? 倒回去再重试验一把 最近好几次有开发同学在钉钉上问我,比如下图: 问题归纳起来就是:在MySQL里面update一条记录&…

jzoj4803-[NOIP2016提高A组模拟9.28]求导【模拟】

正题 题目大意 求一个标准多项式的求导 解题思路 暴力模拟即可,注意细节即可 一下是贴心的坑爹细节样例 (233x)−>(1)而不是(1)(233x)->(1)而不是(1)(233x)−>(1)而不是(1) (1)−>(0)而不是()(1)->(0)而不是()(1)−>(0)而不是() codecodecode …

g4e基础篇#1 为什么要使用版本控制系统

本篇是Git企业开发者教程基础篇的第一篇1. 基础篇:为什么要使用版本控制系统Git 分布式版本控制系统的优势Git 安装和设置初始化Git存储库(Repo)起步 1 – 创建分支和保存代码起步 2 – 了解Git历史记录起步 3 – 拉取请求 Pull Request 工作机制Git是一种版本控制系…