• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于ASP.NETSignalR的實(shí)時(shí)Web功能的實(shí)現(xiàn)

      2016-11-14 00:43:31李燕
      電腦知識(shí)與技術(shù) 2016年24期
      關(guān)鍵詞:數(shù)據(jù)總線

      李燕

      摘要:傳統(tǒng)Web網(wǎng)站中客戶端獲取服務(wù)器數(shù)據(jù)只能刷新頁(yè)面或使用Ajax輪詢才能實(shí)現(xiàn)實(shí)時(shí)顯示數(shù)據(jù),微軟開(kāi)發(fā)的SignalR服務(wù)端可主動(dòng)向客戶端推送數(shù)據(jù),實(shí)現(xiàn)了客戶端與服務(wù)器實(shí)時(shí)數(shù)據(jù)通信。該文介紹了SiganlR技術(shù)及在Web網(wǎng)站中的應(yīng)用。

      關(guān)鍵詞:實(shí)時(shí)通信;實(shí)時(shí)Web功能;數(shù)據(jù)總線;SignalR

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)24-0062-02

      1 概述

      在網(wǎng)站開(kāi)發(fā)中經(jīng)常需要實(shí)現(xiàn)實(shí)時(shí)Web功能,即當(dāng)所連接的客戶端變得可用時(shí)服務(wù)器代碼可立即向其推送內(nèi)容,而不是讓服務(wù)器等待客戶端請(qǐng)求新的數(shù)據(jù)。在以前的Web網(wǎng)站技術(shù)中,客戶端要獲取服務(wù)器數(shù)據(jù)需通過(guò)不停地發(fā)送請(qǐng)求來(lái)輪詢服務(wù)端數(shù)據(jù)。這種發(fā)送Ajax請(qǐng)求給服務(wù)器的方式,在用戶量很大的情況下給服務(wù)器帶來(lái)很大的壓力,而定時(shí)刷新很多時(shí)候滿足不了對(duì)實(shí)時(shí)性要求較高的需求,比如聊天室應(yīng)用,管制現(xiàn)場(chǎng)流控信息傳遞等,都要求實(shí)時(shí)更新。ASP.NET SignalR是這一問(wèn)題比較好的解決方案。

      2 SignalR概述

      SignalR是微軟對(duì)Web開(kāi)發(fā)技術(shù)棧的擴(kuò)充,是一種可用來(lái)簡(jiǎn)化交互式實(shí)時(shí)多用戶Web應(yīng)用程序開(kāi)發(fā)的框架,利用SignalR,可以真正實(shí)現(xiàn)了Web客戶端和服務(wù)器之間雙向通信。服務(wù)器可以將內(nèi)容推送到已連接的客戶端。

      SignalR提供一個(gè)簡(jiǎn)單的API用于創(chuàng)建服務(wù)器端到客戶端的遠(yuǎn)程過(guò)程調(diào)用,以便從服務(wù)器端.Net代碼中調(diào)用客戶端瀏覽器中的JavaScript函數(shù)。SignalR還包括用于管理連接(例如連接和斷開(kāi)連接事件)和為連接分組的API。SignalR會(huì)自動(dòng)管理連接,允許向所有連接的客戶端同時(shí)發(fā)送消息,也可以向特定客戶端發(fā)送消息。客戶端和服務(wù)端的連接是持久性的,不像傳統(tǒng)的HTTP連接——每次通信都需要重新建立一個(gè)連接。

      SignalR是對(duì)一組在構(gòu)建客戶端和服務(wù)器之間的real-time功能所需要使用的傳輸技術(shù)的抽象。SignalR連接首先以HTTP發(fā)起請(qǐng)求,然后如果WebSocket可用的話,則升級(jí)到WebSocket連接。WebSocket是SignalR的理想傳輸方式,因?yàn)樗軌蚋咝У氖褂梅?wù)器的內(nèi)存、有最低的延遲,而且有最主要的功能(客戶端和服務(wù)器之間的全雙工通信),但它也有最嚴(yán)格的環(huán)境要求:WebSocket要求服務(wù)器是Windows Server2012或Windows8以及.NET Framework4.5。如果不滿足這些要求,SignalR將嘗試使用其他傳輸方式來(lái)建立連接??傊琒ignalR以一種相對(duì)于開(kāi)發(fā)者透明的方式確定服務(wù)器和客戶端之間最佳的通信技術(shù)方案(長(zhǎng)輪詢、forever frame、Server-Sent Events、WebSocket),然后使用這種技術(shù)創(chuàng)建一條底層的連接并保持該連接的永久開(kāi)放,并對(duì)連接的斷開(kāi)和重連接進(jìn)行自動(dòng)管理,如圖1所示:

      SignalR在用來(lái)保持和服務(wù)器連接的傳輸層之上還存在著兩個(gè)不同的抽象層,它們構(gòu)成了使用所建立虛擬連接的兩個(gè)API或兩套規(guī)則。其中一個(gè)被稱作持久連接(Persistent Connection),這是一個(gè)較低的層,因此離真實(shí)的連接較近,提供了一個(gè)非常類似套接字編程的開(kāi)發(fā)API。第二個(gè)抽象層基于一個(gè)稱為Hub的組件,是一個(gè)建立于連接API的高級(jí)管道?;贘avascript的靈活性和C#的動(dòng)態(tài)特性,Hub消弭了客戶端和服務(wù)器這兩個(gè)獨(dú)立物理環(huán)境之間的界限,它使得客戶端調(diào)用服務(wù)端的方法簡(jiǎn)單得猶如調(diào)用本地方法一樣,反之亦然。使用Hub還可以將強(qiáng)類型參數(shù)傳遞給方法,并且可用綁定模型。這兩個(gè)抽象層之間的關(guān)系如圖2所示:

      SignalR允許我們透明地在客戶端和服務(wù)器之間直接進(jìn)行方法調(diào)用,是如何做到的呢?這并沒(méi)有什么神奇之處,為了實(shí)現(xiàn)這樣的功能,SignalR將借助服務(wù)器Hub類在客戶端自動(dòng)創(chuàng)建代理對(duì)象,并在它們的方法中輸入對(duì)它們實(shí)際方法的遠(yuǎn)程調(diào)用。相反,當(dāng)服務(wù)器調(diào)用客戶端某個(gè)方法時(shí),它將被一個(gè)在服務(wù)端“打包”這些調(diào)用的動(dòng)態(tài)類型的特殊協(xié)議所解析,并使用底層傳輸通過(guò)推送(push)將它們發(fā)送到其它端點(diǎn)。然后它們將到達(dá)客戶端,并在這里進(jìn)行解析和執(zhí)行。過(guò)程如下圖所示:

      4 結(jié)束語(yǔ)

      SignalR是實(shí)現(xiàn)實(shí)時(shí)通信功能的有效解決方案,利用SignalR可以創(chuàng)建對(duì)消息實(shí)時(shí)性要求比較高的應(yīng)用,如在線協(xié)作工具、多用戶游戲、實(shí)時(shí)信息服務(wù)等。在Web應(yīng)用方面,如果有通過(guò)刷新頁(yè)面來(lái)查看數(shù)據(jù)或者是通過(guò)頁(yè)面實(shí)現(xiàn)長(zhǎng)輪詢來(lái)檢索數(shù)據(jù)等需求,那么就可以考慮使用SiganlR了。

      參考文獻(xiàn):

      [1] Patrick Fletcher. [EB/OL]http://www.asp.net/signalr/overview[E B/OL].

      [2] 張占嶺.SignalR實(shí)現(xiàn)服務(wù)器與客戶端的實(shí)時(shí)通信[Z].

      猜你喜歡
      數(shù)據(jù)總線
      一汽-大眾速騰轎車行駛中為何偶發(fā)多個(gè)故障燈點(diǎn)亮
      2012年產(chǎn)上汽大眾斯柯達(dá)明銳轎車空調(diào)不制冷的故障排除
      淺談航空電子數(shù)據(jù)總線技術(shù)
      基于智能電網(wǎng)調(diào)度控制的系統(tǒng)數(shù)據(jù)總線技術(shù)
      數(shù)據(jù)總線技術(shù)在制造門(mén)戶集成中的應(yīng)用
      軟件(2017年9期)2018-03-02 00:21:28
      SQLite嵌入式數(shù)據(jù)庫(kù)在自動(dòng)化生產(chǎn)車間中的應(yīng)用
      智能電網(wǎng)調(diào)度控制系統(tǒng)中的數(shù)據(jù)總線技術(shù)研究
      科技資訊(2017年27期)2017-11-24 10:06:06
      企業(yè)信息化建設(shè)之我見(jiàn)
      如何在中技汽車維修專業(yè)中開(kāi)展車載數(shù)據(jù)總線教學(xué)
      考試周刊(2015年28期)2015-09-10 23:41:43
      現(xiàn)場(chǎng)總線技術(shù)在電廠自動(dòng)化控制中的應(yīng)用
      正定县| 伊金霍洛旗| 彭水| 德昌县| 昌吉市| 伊川县| 和平区| 钦州市| 台中市| 两当县| 桦甸市| 连江县| 海安县| 德阳市| 舞钢市| 台北县| 石泉县| 慈利县| 莆田市| 沈丘县| 玛多县| 五大连池市| 雷山县| 黄大仙区| 射阳县| 重庆市| 新河县| 淮安市| 徐州市| 襄汾县| 白朗县| 邵东县| 苍山县| 南充市| 台湾省| 含山县| 公安县| 肃北| 女性| 台北市| 新河县|