用Teams Live Share构建协作式应用程序

用Teams Live Share构建协作型应用

微软正在通过为Teams开发者提供一个新的应用平台来扩大对其Fluid Framework实时协作工具的访问

Teams一直是微软生产力平台的一个重要组成部分,但COVID-19的大流行将它推到了雷德蒙议程的首位。它的重要性变得很明显,因为微软和它的大部分客户群首先从办公室转移到突然在家工作,现在正在适应一种更有计划的方法,成为家庭/办公室混合工作。

尽管对Teams的关注主要集中在它的会议和协作功能上,但它与竞争对手的主要区别是建立在微软作为平台公司的传统上。从一开始,它就是一个构建应用程序的地方,也是沟通和协作的地方,它提供了提供协作、近乎实时的应用程序所需的大部分支架和管道,并作为业务线系统的另一个终端,作为低代码工作流程的一部分,主持许多小任务,这是现代工作的一部分和组成部分。

[也在InfoWorld上:如何管理软件开发人员而不进行微观管理]

介绍一下Teams Live Share

一旦你认为它是另一个平台,看到Teams在微软的Build大会上获得自己的轨道就不奇怪了。今年的活动也不例外,有几个重要的公告,包括新的JavaScript SDK的普遍可用性和一些重要的API发布。然而,最有趣的也许是一套新的工具,它将团队自身的协作和会议功能与微软的Fluid Framework实时应用开发平台合并。

其结果是Live Share SDK,这是一种建立协作应用的方式,将会议与应用混合在一起,可以在许多不同的用户和设备上共享状态。我们已经通过Visual Studio的Live Share协作编码看到了这种方法所提供的功能。不同平台上的不同编辑可以共享一个编辑空间,将结对编程扩展到办公室之外。

Teams的Live Share SDK让你可以使用微软的Fluid Framework在多对多的网状结构中的实例之间传递状态。然后,你可以将你的代码和会议包裹在一个Fluid容器中,用最少的代码增加协作功能。这样你就可以把Teams的工具和你自己的工具一起使用,例如,在混合会议审查中分享代码和线框,让会议室里的人在大屏幕上进行注释,而家里的人则使用自己的屏幕。互动是近乎实时的,并在所有用户之间共享,由Teams控制会议的语音和视频部分。像微软最近的许多工具一样,它是开源的,可以在GitHub上找到

从Fluid到Live,然后再回来

如果你一直在尝试使用Fluid框架,那么Live Share SDK的大部分内容都会很熟悉。Live Share是一套JavaScript包,通过npm或Yarn进行安装,同时依赖Teams JavaScript和Fluid Framework包。如果这些都没有安装,安装SDK会安装它们。如果你已经有了它们,你将需要确保你有正确的版本以避免问题。目前,您需要2.0.0-experimental.0版本的Teams JavaScript包和0.59.0的Fluid Framework。

在预览的这个阶段还有其他限制。最大的限制可能是实时共享只适用于预定的会议;你不能在其他类型的会议中以临时的方式加入。所有与会者都需要参加邀请;在他们获得访问实时共享应用程序之前,他们必须接受会议邀请并将其添加到他们的日历中。希望这只是一个预览问题,因为使用Visual Studio Live Share进行自发协作的能力是其优势之一,而且很容易看到类似的方法可能有助于将电话变成一个共享的工作空间。

构建一个实时共享应用程序

Teams Live Share应用程序与其他Team应用程序一样。由于它还不是Teams开发者工具的一部分,你需要在应用程序清单中手动添加额外的权限,以便使用新功能,首先是你的应用程序的主机URL的范围和上下文,支持带有会议面板和舞台的群聊。然后你需要为即时分享会话和应用程序的会议阶段添加委托权限。随着平台的成熟,它应该成为Teams SDK的一部分,并支持自动生成清单。

你现在可以开始在你的代码中添加Live Share功能。应用程序需要加入一个会议,所以应用程序的每个实例将从每个用户的Teams会话中的会议开始。代码将需要初始化Teams SDK,然后创建一个Fluid Framework容器来处理客户端之间的同步,设置同步内容所需的分布式数据结构。Fluid Framework有许多不同的数据结构,请选择您的应用程序所需的结构。

最有可能的是SharedMap,它是一个基本的JSON对象的键值存储。使用SharedMap,你要发送,比如说,在共享图像上绘制的坐标。这可以与SharedString结构相结合,用于协作式文本编辑。这些流体框架的数据结构可以在会议之间持续存在,构建会后报告,并为与会者提供离线使用的内容。

Live Share带来了一些Fluid Framework中没有的新功能,它称之为Ephemeral Objects。这是一种新形式的共享对象,不存储在Fluid容器中,但仍可在您的应用程序中访问。你可以用这些对象来管理用户的存在,或者添加演示工具,比如一个指针到一个会话。这些共享对象使用相同的实时Fluid工具,但它们在会议之后并不存在,除非你明确地将其内容保存到Fluid数据结构中。

一个有用的功能是EphemeralEvent数据结构。它可以在会议中的客户端之间发送消息,例如,显示是否有人加入或离开。请确保添加代码来监听通知并异步运行。事实上,用于Fluid数据结构和Live Share的短暂结构的大部分代码都需要异步运行,因为你的代码是对会议中随时可能发生的事件的来源和响应。

在Live Share中处理媒体

尽管Live Share也许最适合用来包装基于文本的内容,使用Fluid Framework的协作工具,但它在一个单独的包中提供了一组扩展,支持媒体同步。这增加了一个单独的短暂对象来支持媒体控制和状态,以及在HTML媒体元素中同步播放的方式。如果你在会议上做视频演示,你可以有一个Live Share应用,让被批准的用户暂停播放,以进行讨论或对视图进行注释。

Live Share还可以给我们提供一种有用的方式,使用Teams来广播现场活动,因为它有工具让用户暂停流媒体,并在必要时跳过。如果你使用Live Share来主持培训,这里有一个有趣的选项。你可以让用户暂停回答问题或发表评论,只有在所有用户恢复时才恢复播放。像这样的协调是一个很方便的功能,因为它可以确保没有人被落下,每个人的意见都能被听到。

Visual Studio中的实时共享是一个强大的工具,所以很高兴看到类似的功能出现在Teams中。然而,重要的是要认识到,建立实时协作工具并不容易,虽然Teams Live Share简化了创建和管理共享数据结构,但你仍然需要建立一套异步事件处理工具,以确保共享数据的变化反映在用户体验中。有了像Fluid Framework这样的工具,我们很想全身心地投入,但这可能会导致复杂和无法管理的事件解析代码。

那么,你应该如何去使用Teams Live Share?最好从一个简单的应用开始:共享一个易于理解的数据结构的工具,比如一个看板,带有文字和音频聊天以及基本的编辑功能,供一个混合团队运行每日站立会议,以项目经理可以快速看到和了解项目进展情况的方式管理项目积压。

一旦你了解了Live Share是如何通过单一的共享数据结构工作的,你就可以开始扩展你的应用程序,增加新的功能来支持新的需求并响应用户的要求。其结果应该是在会议室屏幕和个人桌面上运行良好的代码,帮助弥合混合工作的鸿沟。现在是微软推出这种工具的正确时机。现在我们需要建立利用这些新功能的团队代码。

猜你喜欢

转载自juejin.im/post/7126527312832495653