从Microsoft Teams技术栈看前端技术发展趋势

在前不久的微软美国一年一度的Ignite大会上,微软宣布Microsoft Teams是微软历史上发展最快的应用。它将取代Skype for business,成为语音视频协作的主打产品。

我也有幸在上个月微软中国年度技术大会Tech Summit 2018上被邀请作为讲师讲解基于Teams平台的app开发。会上时间有限,没有太多展开Teams的前端技术栈,会后有很多人来咨询,希望进一步了解。我这篇文章就对比一些Teams的2017年和2018年技术的变化,让我们看看业界领跑的软件巨头是采用什么技术的。

手机客户端

手机客户端架构对比

可以看到几个明显的变化:

  • Windows Phone平台没有在2018年再提到了(大家都懂的)
  • 之前都是使用手机平台的原生语言开发的,Android使用Java,iOS使用Swift。可以看到微软在2017之前就已经在使用swift
  • 到2018年,Teams手机客户端已经大量使用React Native。好处十分明显,可以在两大手机平台重用代码,提高研发效率。

桌面客户端

桌面客户端架构对比

  • 三大桌面端:Web,Windows,Mac。技术栈基本统一
  • 使用TypeScript,大牛Anders Hejlsberg的力作啊,此语言在web开发上快要一统江湖了
  • 之前使用Angular,但目前正在慢慢的转成React,原因也很简单,一旦全部转成React,就可以和手机客户端的React Native重用大量代码,进一步降低研发成本。代码重用、重用、重用!重要的事讲三遍。
  • Windows和Mac桌面端使用Electron作为外壳,提供原生系统的调用能力。并且使用C++和ObjectiveC来处理音频视频编码和桌面共享等功能。Electron目前使用很广,微软的Visual Studio Code,Azure Storage Explorerd等,凡是需要跨系统的桌面应用,基本都能看到electron的身影。

看一下你目前使用的前端技术栈,对比一下微软的Teams,你get到什么了吗? :)

以上技术栈的所有图片都来自于微软2017年和2018年两次ignite大会上的PPT。 2017技术栈2017技术栈,来源Ignite 2017,课程编号BRK3071 2018技术栈2018技术栈,来源Ignite 2018,课程编号BRK3118

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

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

相关文章

LeetCode 最大正方形

在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0输出: 4解法:判断以某个点为正方形右下角时最大的正方形时,那它的上方,左方和左上…

solidity字符串拼接

如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战开发入门去中心化电商DApp实战开发当你开始学习使用solidity开发以太坊智能合约之后,很快你会碰到一个问题: 在solidity中该如何拼…

Confluence Cloud的Teams Message Extension

Confluence Cloud的Message Extension现在正式登入Microsoft Teams。 它可用于团队频道和私人聊天,使您的对话更具描述性和信息性。 从Microsoft Teams应用商店获取Confluence Cloud应用程序并连接到Confluence Cloud实例。 连接后,您将能够搜索Conflue…

45 | 打蛇打七寸:精准测试

转载于:https://www.cnblogs.com/lmx0621/p/10614966.html

Teams App统计

周末闲来无事,统计了一下Teams的app商店里的app ( Teams App Store )。截至到现在(2018年11月)一共有145个app。要注意一点:如果app不是公开的(即单独安装到Office365租户里,并没有提交到office store&…

你必须要懂的APK瘦身知识

随着业务复杂度的逐渐增加,代码、资源也在不断的增加,此时你的APP大小也在增加。从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要下载,不下载你就可能因此失去了一个用户。从公司层面来讲,流量…

DHT网络

(基础技术) 现在有一种方法,可以通过磁力链接,例如magnet:?xturn:btih:0482e0811014fd4cb5d207d08a7be616a4672daa,就可以获取BT文件。 这个是通过DHT网络来实现的。 DHT网络是一个去中心化的,分布式信息存储系统。 存储的信息就…

Java基础 Day04(个人复习整理)

分支结构 2、switch语句 因为if语句的级联式最多只会处理三种情况,如果出现多情况 1>可以继续使用if语句的级联式,但是可能代码的可读性就会变差。  2>采用switch语句来解决。 switch语法格式: switch (存在多种情况的变量) {case 值…

java如何获取一个double的小数位数

前言 看标题是不是觉得这是一个很简单的问题,我一开始也是这么认为的,但是实际情况下,在各种情况下我们都进行了测试,发现很多实际情况是无法不尽如人意的。 方法分析 当前能想到的比较容易有下面几种 1、直接使用double处理 2、将…

Node文件模块

在上一篇文章中有提到,Node模块分为核心模块和文件模块,接下来就简单总结一下文件模块。 文件模块则是在运行时动态加载,需要完整的路径分析、文件定位、编译执行过程、速度相比核心模块稍微慢一些,但是用的非常多。这些模块需要我…

PHP GD库解析一张简单图片并输出

这里只演示一下2种颜色值的图片&#xff0c;简单描述下概念。 首先要安装下GD库。否则下面的代码运行不了。 $size getimagesize(2.png); // 获取图片大小 $res imagecreatefrompng(2.png); // 获取指定图片的资源对象for ($i 0; $i < $size[1]; $i) {for ($j 0; $j &…

Permutations CodeForces - 736D (矩阵逆)

对于删除每个对(x,y), 可以发现他对答案的贡献为代数余子式$A_{xy}$ 复习了一下线代后发现代数余子式可以通过伴随矩阵求出, 即$A_{xy}A^*[y][x]$, 伴随矩阵$A^*|A|A^{-1}$可以通过高斯消元$O(\frac{n^3}{\omega})$求出 #include <iostream> #include <algorithm> …

开发Teams的messaging extension

什么是Messaging Extension Messaging Extension是微软Teams的一种十分有用的扩展方式。可以让用户发送adaptive cards。具体的说明不在这里展开了。可以阅读微软官方的详细说明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/messaging-e…

归并排序(转)

转载自&#xff1a;https://www.cnblogs.com/chengxiao/p/6194356.html 归并排序&#xff08;MERGE-SORT&#xff09;是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治&#xff08;divide-and-conquer&#xff09;策略&#xff08;分治法将问题分(divide)成一些…

Site24x7 为Teams提供可智能 DevOps

我们生活在一个云的时代, SaaS 应用程序每天都在推动我们的生产力。作为一个消费者, 很难想象如果你最喜欢的应用无法访问&#xff0c;即使只是一秒钟无法访问。作为 SaaS业务, 更难以想象您的服务面临停机, 每一分钟停止服务都会花费大量的资金, 当然还损失客户的信任。Site24…

XUbuntu22.04之跨平台容器格式工具:MKVToolNix(二百零三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

redis集群搭建踩坑笔记

推荐参考教程&#xff1a;https://blog.csdn.net/pucao_cug/article/details/69250101 错误&#xff1a; from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require from /usr/local/redis-3.0.6/src/redis-trib.rb:25:in <main> 解决&#xff1a; g…

Docker 创建镜像

文章首发自个人网站&#xff1a;https://www.exception.site/docker/docker-create-image 本文中&#xff0c;您将学习 Docker 如何创建镜像&#xff1f;Docker 创建镜像主要有三种&#xff1a; 基于已有的镜像创建&#xff1b;基于 Dockerfile 来创建&#xff1b;基于本地模板…

hdfoo站点开发笔记

为了安全,也要兼顾编辑器切换管理 开发时不必管目录名称的事, 只是在部署的时候,才修改应用目录和tp目录的名字就行了. 为了提高tp的加载效率, 始终给app和tp以绝对路径.就是以 realpath来定位 realpath返回的就是 一个绝对路径, 在lx中是以 斜杠 根树开始的. 参数可以是文件名…

论文致谢

这篇致谢语&#xff0c;是我论文的最后一节&#xff0c;也是我放在最后的最后写的内容。之所以拖到最后&#xff0c;是因为我不知道该用怎么的方式来结束我的论文。我想&#xff0c;要结束的不只是文章&#xff0c;还是研究生生涯&#xff0c;是我在厦门大学三年来的一切&#…