亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

您當前的位置是:  首頁 > 資訊 > 國內(nèi) >
 首頁 > 資訊 > 國內(nèi) >

企業(yè)實時信息分享,Azure SignalR 全包了!

2020-03-03 10:14:50   作者:   來源:CTI論壇   評論:0  點擊:


  HR在各辦公室門口張貼公告,
  要求員工掃碼填問卷上報健康狀況;
  各團隊負責人花式發(fā)送各種郵件,
  將疫情期間的工作安排告知有關(guān)成員;
  高管助理三天兩頭打電話給不同部門,
  轉(zhuǎn)達老板的最新指示;
  員工們用不同排列組合建了N多個群,
  討論疫情、八卦,以及午飯吃啥。
  特殊時期,各種消息滿天飛,
  大家關(guān)注之余都感覺好累……
  抗“疫”+有序復工的關(guān)鍵時期,企業(yè)如何在管理層面實時了解所有員工的健康信息,怎樣第一時間獲得員工報告的異常信息,又如何將最新戰(zhàn)疫政策發(fā)布到各層級……這些都是企業(yè)目前最關(guān)注的問題,當然也有不少企業(yè)正在考慮將這樣的功能集成到公司內(nèi)部辦公系統(tǒng)中。
  微軟一直致力于通過技術(shù)助力“戰(zhàn)疫”,為了幫助企業(yè)在疫情期間及時高效地傳遞信息,前不久我們組織技術(shù)專家基于Azure 云原生技術(shù)搭建了“一站式防疫信息實時互動開源項目” (即刻查看文章回顧活動詳情)并詳細解讀了項目功能和應用場景。
  今天我們邀請微軟應用開發(fā)解決方案專家,從技術(shù)層面實力解讀,這個開源平臺如何實現(xiàn)企業(yè)所需的信息實時互動服務。
  開源項目架構(gòu)
  本次開源項目主要基于Azure SignalR服務搭建,該服務可以幫助我們輕松地為Web應用添加實時通信能力。高頻數(shù)據(jù)更新(如游戲、投票、輪詢)、儀表板、監(jiān)視、聊天、地圖實時定位、實時定向廣告,甚至IoT和互聯(lián)設備,以及基于事件的實時觸發(fā)器等場景,都是這個服務可以大展拳腳的舞臺。
  同時該服務還可以與其他Azure服務無縫集成,進而擴展出很多實用功能。
  具體可參考微軟官方文檔:https://azure.microsoft.com/zh-cn/services/signalr-service/
  本次項目主要實現(xiàn)了基于兩類用戶的應用場景:
  • 企業(yè)員工:員工在企業(yè)自己的網(wǎng)頁、小程序、移動應用上日常辦公時,可以實時接收企業(yè)針對疫情信息的實時推送;
  • 企業(yè)管理用戶:管理者可以自定義消息將疫情管理信息,并實時發(fā)送到每個員工的客戶端上,同時還可以在監(jiān)控臺實時看到員工針對疫情信息的反饋和員工疫情的統(tǒng)計信息。
  實際上在這個開源項目中,還包含了很多有趣的功能實現(xiàn),例如對公司對疫情信息的語音播報、針對疫情視頻評論的實時廣播、員工對疫情信息的反饋統(tǒng)計的實時統(tǒng)計報表等。
  開源項目架構(gòu):
  • 員工/管理員界面:員工功能頁面,包含視頻、視頻彈幕、消息實時統(tǒng)計柱狀圖、疫情信息通知欄;管理員管理頁面,包含了信息的發(fā)布文本框。
  • 管理員發(fā)送的信息通過Azure SignalR服務廣播到客戶端。
  • 員工通過PC、移動設備訪問功能頁面時,可以實時接受管理臺發(fā)送的消息。同時也可以在視頻中發(fā)送彈幕,彈幕會實時廣播到所有訪問該頁面的用戶客戶端中。實時消息的接收和發(fā)送都是通過Azure SignalR服務完成的。
  • 針對管理員發(fā)送的實時疫情信息,可以直接調(diào)用Azure認知服務API來實現(xiàn)對文本的語音播報。
  在這個Demo代碼中,如果企業(yè)想應用這個疫情實時通知能力,只需在現(xiàn)有功能頁面(可能是一個網(wǎng)站或微信小程序,或者使用了JS技術(shù)的移動應用)中增加非常少的代碼改動,就可以快速在現(xiàn)有功能上增加實時疫情通知功能。
  為何選擇Azure SignalR 服務
  接下來,我們一起看看本次開源項目為何選擇Azure SignalR 來實現(xiàn)項目核心功能。
  Azure SignalR 作為實時消息通知的核心,用戶只需創(chuàng)建實例,就能在程序中進行調(diào)用。當然,企業(yè)也可以選擇Azure SignalR 之外的實時通訊服務,但會增加以下問題:
  • 實時消息通知時,需要后臺一有消息前端就立即體現(xiàn),如何保證信息可以實時發(fā)送?
  • 客戶端網(wǎng)絡不穩(wěn)定,如何保證客戶應用體驗,即:如何解決在網(wǎng)絡中斷又恢復后的信息可達?
  • 如何實現(xiàn)流式數(shù)據(jù),如疫情視頻流實時同步的需求?(不同于處理塊狀文本消息,處理流式數(shù)據(jù)還需要考慮如何分片打包的問題)
  • 用戶可能采用了各種不同設備或瀏覽器,如何完美適應不同客戶端?
  • 公司現(xiàn)有應用已經(jīng)微服務化,不同團隊用了不同的語言平臺,如何讓不同服務可以順暢對接實時通訊模塊?
  • 系統(tǒng)實現(xiàn)時沒有考慮實時通訊,業(yè)務部門突然要求一兩天就要上線實時通訊功能,怎么快速實現(xiàn)?
  • 如果用戶訪問暴增,如何做到讓實時通訊模塊彈性可擴展,而且還能保證會話狀態(tài)?
  • 服務器出現(xiàn)軟硬件故障時,如何保證高可用性?
  換句話說,如果沒有這樣一個實時通訊服務,開發(fā)者就不得不自己用基礎的通訊技術(shù)(如WebSocket)來實現(xiàn)高性能、高并發(fā)、靈活擴展、穩(wěn)定運行的實時通訊服務。而 Azure SignalR 服務正是這樣一個為企業(yè)級實時通訊而生的服務。
  用過。Net SignalR或。Net Core SignalR的用戶可能會了解,SignalR(已在GitHub上開源)是一個專門用來完成實時通訊的組件,它已經(jīng)幫開發(fā)者解決了很多實時通訊需要考慮的問題。但這種情況下開發(fā)者依然要考慮與擴展性、高可用性、跨平臺性等有關(guān)的細節(jié),而 Azure SignalR 作為一個 Serverless 服務,從最大程度上簡化了實現(xiàn)實時通訊場景的難度。
  服務器端的實現(xiàn)
  Azure SignalR服務實際上是對SignalR的PaaS實現(xiàn)。SignalR(以。Net Core SignalR為例,實際上。Net SignalR和。Net Core SignalR略有區(qū)別)是一個組件,包含了服務器端和客戶端,它在服務器端和客戶端之間建立長連接,并提供了從服務器端調(diào)用客戶端JavaScript函數(shù)的API。SignalR通過這種方式來保證服務器端一旦收到信息的更新就會及時傳遞給客戶端。
  為此,SignalR提供了以下能力來滿足實時通訊的場景:
  • 服務器和客戶端的連接管理,包括連接的創(chuàng)建和斷開等,以及自動連接管理。
  • 同時向所有連接的客戶端發(fā)送消息,這些消息可能來自某個客戶端或服務器接收自第三方。
  • 向特定客戶端或客戶端組發(fā)送消息。
  • 可以通過縮放處理不斷增加的流量。
  考慮到客戶端使用的不同瀏覽器特性或設備特殊性,SignalR提供了三種實時通訊技術(shù):WebSocket、服務器發(fā)送事件(Server Sent Event)以及長輪詢(Long Polling)。開發(fā)者可以根據(jù)目標客戶端選擇固定的通訊方式,也可以交給SignalR根據(jù)特定規(guī)則自動選擇當前客戶端最合適使用的方式。這一點對于要做一款兼容各種瀏覽器的應用來說,可以極大節(jié)省開發(fā)者的時間和精力。
  SignalR在使用時依然要開發(fā)者自己處理在多節(jié)點部署時粘滯會話(Sticky session)的問題,例如:
  客戶端1如果想和客戶端3實時通訊,需要在Server1和Server2之間實現(xiàn)粘滯會話。此外,開發(fā)者也需要考慮如何管理服務器端TCP資源的問題(SignalR 優(yōu)先采用長連接,如果用戶訪問量大,則很快會消耗完單服務器的TCP連接數(shù)),在連接數(shù)出現(xiàn)瓶頸或空閑時如何彈性擴展和收縮服務器數(shù)量,是開發(fā)者需要花大量精力來處理的問題。而Azure SignalR 服務完美的解決了這兩個問題。
  Azure SignalR服務可以讓開發(fā)者在新應用或現(xiàn)有應用中快速實現(xiàn)實時通訊能力。使用Azure SignalR服務,每個客戶端的實時通訊連接都將與Azure SignalR服務相連接,Azure SignalR服務作為一個PaaS服務,可以根據(jù)客戶端數(shù)量靈活實現(xiàn)彈性擴展和收縮,并實現(xiàn)粘滯會話能力。需要實現(xiàn)實時通訊的應用只需維持和Azure SignalR服務少量的固定連接,通過這種方式即可實現(xiàn)實時通訊模塊和應用服務器的解耦。Azure SignalR服務內(nèi)置故障轉(zhuǎn)移能力,保證了服務穩(wěn)定性,并承諾99.9%的SLA保障。

 
  客戶端的連接
  客戶端在建立實時通訊連接時,會在應用端做重定向,進而完成和Azure SignalR的連接:
  1. 客戶端連接到應用服務器。
  2. 應用服務器向Azure SignalR服務請求令牌。
  3. Azure SignalR服務驗證服務器的請求后返回令牌。
  4. 應用服務器獲得Azure SignalR服務授權(quán)后,將客戶端的連接請求重定向到Azure SignalR服務,并附加Azure SignalR服務的令牌。
  5. 客戶端使用獲得的Azure SignalR服務令牌,連接到重定向的Azure SignalR服務地址。
  這種情況下,添加實時通訊模塊只需要對應用進行很少量的改動,并且對開發(fā)者而言,也不需要從頭構(gòu)建一個完整的實時通訊服務框架。
  在對不同語言的支持方面,Azure SignalR服務提供了基于ASP.Net Core、ASP.Net、JavaScript、Java的客戶端以及REST API,方便開發(fā)者使用自己熟悉的開發(fā)語言進行實時通訊的開發(fā)。
  更多應用場景
  借助Azure SignalR服務,企業(yè)不僅可以在戰(zhàn)疫過程中快速構(gòu)建實時消息通訊平臺,還可以在很多需要實時通訊的業(yè)務場景中快速構(gòu)建實時通訊的能力。例如:
  進行一對一、一對多、多對多的實時消息通信場景,典型場景包括聊天室、游戲?qū)崟r聊天、游戲?qū)崟r積分榜、團隊協(xié)作(如會議白板)、在線教育場景下的實時交互(包括文本、語音和視頻)。
  實時狀態(tài)通知和事件更新,典型的場景包括金融市場變動信息、金融產(chǎn)品價格提醒、物流實時位置共享、物聯(lián)網(wǎng)設備狀況實時更新、智慧家居(城市)等。
  需要低延遲的實時流媒體,例如實時游戲、在線拍賣、股票推薦、視頻直播等。
  最后需要特別說明:Azure SignalR服務除了支持各種開發(fā)平臺的集成和使用,還支持各類客戶端類型,如瀏覽器、桌面應用、移動應用、服務器端進程、物聯(lián)網(wǎng)設備、游戲主機等。
  福利時間
  今天的技術(shù)干貨就介紹到這兒,關(guān)于 Azure SignalR 服務的更多信息和使用方法,歡迎查看官方文檔或者留言與我們交流。當然,我們更加鼓勵還沒有嘗試過“防疫開源項目“的小伙伴們,點擊文末閱讀原文,查看 GitHub 開源項目文檔,與我們一起交流探討,更有百萬 Azure 福利暖心贈送噢。
  最后,我們?yōu)楸敬雾椖可暇了免費技術(shù)課程,歡迎大家掃描下方二維碼,于本周三觀看學習。
【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

專題

CTI論壇會員企業(yè)