用Teams Live Share構建協作式應用程式

語言: CN / TW / HK

用Teams Live Share構建協作型應用

微軟正在通過為Teams開發者提供一個新的應用平臺來擴大對其Fluid Framework實時協作工具的訪問

Teams一直是微軟生產力平臺的一個重要組成部分,但COVID-19的大流行將它推到了雷德蒙議程的首位。它的重要性變得很明顯,因為微軟和它的大部分客戶群首先從辦公室轉移到突然在家工作,現在正在適應一種更有計劃的方法,成為家庭/辦公室混合工作。

儘管對Teams的關注主要集中在它的會議和協作功能上,但它與競爭對手的主要區別是建立在微軟作為平臺公司的傳統上。從一開始,它就是一個構建應用程式的地方,也是溝通和協作的地方,它提供了提供協作、近乎實時的應用程式所需的大部分支架和管道,並作為業務線系統的另一個終端,作為低程式碼工作流程的一部分,主持許多小任務,這是現代工作的一部分和組成部分。

介紹一下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是如何通過單一的共享資料結構工作的,你就可以開始擴充套件你的應用程式,增加新的功能來支援新的需求並響應使用者的要求。其結果應該是在會議室螢幕和個人桌面上執行良好的程式碼,幫助彌合混合工作的鴻溝。現在是微軟推出這種工具的正確時機。現在我們需要建立利用這些新功能的團隊程式碼。