1. 程式人生 > >史上最全面的SignalR系列教程-1、認識SignalR

史上最全面的SignalR系列教程-1、認識SignalR

SignalR 是什麼?

SignalR 是一個面向 ASP.NET 開發人員的庫,可簡化將實時 web 功能新增到應用程式的過程。 實時 web 功能是讓伺服器程式碼將內容推送到連線的客戶端立即可用,而不是讓伺服器等待客戶端請求新資料的能力。

SignalR 是一個整合的客戶端與伺服器庫,基於瀏覽器的客戶端和基於 ASP.NET 的伺服器元件可以藉助它來進行雙向多步對話。 換句話說,該對話可不受限制地進行單個無狀態請求/響應資料交換;它將繼續,直到明確關閉。 對話通過永久連線進行,允許客戶端向伺服器傳送多個訊息,並允許伺服器做出相應答覆,值得注意的是,還允許伺服器向客戶端傳送非同步訊息。是一個完全基於客戶及伺服器端解決方案,它是以JS作為客戶端和ASP.NET作為服務端來建立這類的應用。

傳統HTTP採用的是大家熟知的“拉模式”,即客戶端發出的每次請求,服務端都是被動處理。此場景下客戶端是老大,很顯然只有一方主動,操作與處理起來就沒那麼完美。為了能讓服務端也能主動,html5的出現讓這種變得可能,大家知道html5中有兩種主動模式。第一種叫做websockect,WebSockets是Html5提供的新的API,可以在Web網頁與伺服器端間建立Socket連線,它是基於tcp模式的雙工通訊。還有一種叫做SSE,也就是客戶端來訂閱伺服器的一種事件模型。在html5出來之前,如果要做到伺服器主動,我們只能採用變相的longpool和iframe流勉強實現。這就相當於要實現服務端的主動就有了4種方案。SignalR的出現是我們每位開發者的福音。它對上面四種方案進行了高度的封裝,也就是說signalR會在這四種技術中根據瀏覽器和伺服器設定採取最優的一種模式。

對於.NET開發者的福音,.NET平臺為我們提供了一種簡潔高效智慧的實時資訊互動技術->SignalR,它集成了上述數種技術,並能根據配置自動或手動選擇其最佳應用。

可以用SignalR做什麼?

  • SignalR可用於將任何型別的"實時"web 功能新增到 ASP.NET 應用程式。 比如最常用的即時訊息、聊天。 只要使用者重新整理 web 頁面以檢視新資料或頁面實現長輪詢若要檢索新資料,可以考慮對它使用 SignalR。 包括儀表板和監視應用程式,協作應用程式 (如同時進行編輯的文件),作業的進度更新到並實時窗體。

  • SignalR還可以用於需要高頻率從伺服器中更新的全新型別weB應用程式,例如線上聊天、實時遊戲、天氣、股票資訊更新等實時應用程式。

  • SignalR 提供一個簡單的 API,用於建立從伺服器端.NET 程式碼中呼叫 JavaScript 函式在客戶端瀏覽器 (和其他客戶端平臺) 的伺服器到客戶端的遠端過程呼叫 (RPC)。 SignalR 還包括連線管理的 API (例如,連線和斷開連線事件),並對連線進行分組。

  • SignalR自動處理連線管理,並允許您同時將訊息廣播到所有連線的客戶端,如聊天室。 還可以將訊息傳送到特定的客戶端。 客戶端和伺服器之間的連線是永續性的。

  • SignalR與常用的Web瀏覽器上請求-響應模式不同,它支援"伺服器推送"功能,可以呼叫遠端過程呼叫 (RPC)。

  • SignalR應用程式可以橫向擴充套件到數千個客戶端使用服務匯流排、 SQL Server 或Redis。

最重要的是SignalR 是開放原始碼,有興趣的朋友可以研究SignalR

SignalR 和 WebSocket

前面對SignalR已經有了一個非常全面而清晰的認識,對於SignalR 和 WebSocket關係,我們需要看下什麼是WebSocket?

WebSocket是HTML5提供的一種在單個 TCP 連線上進行全雙工通訊的協議,目前chrome、Firefox、Opera、Safari等主流版本均支援,Internet Explorer從10開始支援。另外因為WebSocket 提供瀏覽器一個原生的 socket實現,所以直接解決了 Comet 架構很容易出錯的問題,而在整個架構的複雜度上也比傳統的實現簡單得多。

WebSocket本質上是一個基於TCP的持久化協議,相對於HTTP這種非持久的協議來說,它能夠更好的節省伺服器資源和頻寬,並且真正實現實時通訊。其優點在前面我們已經做了對比,最大的缺點就是對舊版本瀏覽器不支援。至此SignalR的出現,完美的解決了種瀏覽器的問題,SignalR不僅可以實現WebSocket的所有功能,還對舊版本瀏覽器做了支援。SignalR可自動或手動選擇使用WebSocket傳輸還是其他替代方式傳輸,以實現實時Web技術。

SignalR簡化了構建實時應用的過程,它包括了一個Asp .Net伺服器端庫和一個Js端庫,集成了數種常見的訊息傳輸方式,如long polling,WebSocket,並提供相應的Api供開發人員選擇如何呼叫,幫助其可以簡單快速地實現客戶端與伺服器端相互間的實時通訊。

當環境條件合適時,SignalR將WebSocket作為底層傳輸方式的優先實現,當然,它也能很高效地回退到其他技術。同時,SignalR提供了非常良好的Api以供遠端呼叫(RPC) 瀏覽器中的js程式碼。

當WebSockets可用時(即瀏覽器支援Html5)SignalR使用WebSockets,當瀏覽器不支援時WebSockets時,SignalR將使用其它技術來保證達到相同效果。
瀏覽器和客戶端之間想要進行WebSocket通訊的話,從一開始的握手階段,就要從HTTP協議升級為WebSocket協議,這是伺服器根據WebSocket傳送的請求包決定的。

參考文章

  • Real-time ASP.NET with SignalR

  • HTML5 WebSocket

  • WebSocket WebAPI

  • 微信公眾號開發系列-玩轉微信開發-目錄彙總

  • RDIFramework.NET — 基於.NET的快速資訊化系統開發框架 — 系列目錄

  • RDIFramework.NET ━ .NET快速資訊化系統開發框架 ━ 工作流程元件介紹

  • RDIFramework.NET框架SOA解決方案(集Windows服務、WinForm形式與IIS形式釋出)-分散式應用

  • RDIFramework.NET程式碼生成器全新V3.5版本釋出-重大升級


一路走來數個年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過下面的地址瞭解詳情。

RDIFramework.NET官方網站:http://www.rdiframework.net/

RDIFramework.NET官方部落格:http://blog.rdiframework.net/

同時需要說明的,以後的所有技術文章以官方網站為準,歡迎大家收藏!

RDIFramework.NET框架由海南國思軟體科技有限公司專業團隊長期打造、一直在更新、一直在升級,請放心使用!

歡迎關注RDIFramework.net框架官方公眾微信(微訊號:guosisoft),及時瞭解最新動態。

掃描二維碼立即關注

相關推薦

全面的SignalR系列教程-1認識SignalR

SignalR 是什麼? SignalR 是一個面向 ASP.NET 開發人員的庫,可簡化將實時 web 功能新增到應用程式的過程。 實時 web 功能是讓伺服器程式碼將內容推送到連線的客戶端立即可用,而不是讓伺服器等待客戶端請求新資料的能力。 SignalR 是一個整合的客戶端與伺服器庫,基於瀏覽器的客戶端

全面的SignalR系列教程-2SignalR 實現推送功能-永久連線類實現方式

1、概述 通過上篇史上最全面的SignalR系列教程-1、認識SignalR文章的介紹,我們對SignalR技術已經有了一個全面的瞭解。本篇開始就通過SignalR的典型應用的實現方式做介紹,例子雖然簡單,但麻雀雖小五臟俱全。可以以此為基礎,擴充套件到實際應用中。 SignalR 的實現機制與.NET WCF

全面的SignalR系列教程-3SignalR 實現推送功能-集線器類實現方式

1、概述 通過前兩篇 史上最全面的SignalR系列教程-1、認識SignalR 史上最全面的SignalR系列教程-2、SignalR 實現推送功能-永久連線類實現方式 文章對SignalR的介紹,我們對SignalR已經有了全面的認識。SignalR API 客戶端和伺服器端持久連線的通訊方式,一次連線代

全面的SignalR系列教程-4SignalR 自託管全解(使用Self-Host)-附各終端詳細例項

1、概述 通過前面幾篇文章 史上最全面的SignalR系列教程-1、認識SignalR 史上最全面的SignalR系列教程-2、SignalR 實現推送功能-永久連線類實現方式 史上最全面的SignalR系列教程-3、SignalR 實現推送功能-集線器類實現方式 我們對SignalR的概念以及SignalR

全面的SignalR系列教程-5SignalR 實現一對一聊天

1、概述 通過前面幾篇文章 史上最全面的SignalR系列教程-1、認識SignalR 史上最全面的SignalR系列教程-2、SignalR 實現推送功能-永久連線類實現方式 史上最全面的SignalR系列教程-3、SignalR 實現推送功能-集線器類實現方式 史上最全面的SignalR系列教程-4、Si

全面的SignalR系列教程-6SignalR 實現聊天室

1、概述 通過前面幾篇文章對SignalR的詳細介紹。我們知道Asp.net SignalR是微軟為實現實時通訊的一個類庫。一般情況下,SignalR會使用JavaScript的長輪詢(long polling)的方式來實現客戶端和伺服器通訊,隨著Html5中WebSockets出現,SignalR也支援We

簡單的MySQL教程系列分享專欄

《史上最簡單的MySQL教程》系列分享專欄 《史上最簡單的MySQL教程》已整理成PDF文件,點選可直接下載至本地查閱https://www.webfalse.com/read/207399.html 簡介 整理史上最簡單的MySQL教程,來自csdn的推薦專欄,博主從入門到進階,詳細講

2018最新全面SpringBoot教程

pring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application

2019最新全面SpringBoot教程

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid applicatio

Vue2.0全入坑教程(下)—— 實戰案例

多少 跳轉 border src fff end har second vue 前言:經過前兩節的學習,我們已經可以創建一個vue工程了。下面我們將一起來學習制作一個簡單的實戰案例。 說明:默認我們已經用vue-cli(vue腳手架或稱前端自動化構建工具)創建好項目了 一

簡單的 SpringCloud 教程 | 終章

conf con 知識 實例 feign 地址 聚合 com red 版權聲明:本文為博主原創文章,歡迎轉載,轉載請註明作者、原文超鏈接 ,博主地址:http://blog.csdn.net/forezp。 目錄(?)[+] 轉載請標明出處: http

簡單的 SpringCloud 教程 | 第十四篇: 服務註冊(consul)

配置 資料 源碼下載 擴展性 local sta tar value mark 這篇文章主要介紹 spring cloud consul 組件,它是一個提供服務發現和配置的工具。consul具有分布式、高可用、高擴展性。 consul 具有以下性質: 服務發現:cons

簡單的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)

prope shu 由於 ext master strip div 文件配置 rap 在上一篇文章講述zuul的時候,已經提到過,使用配置服務來保存各個服務的配置文件。它就是Spring Cloud Config。 在分布式系統中,由於服務數量巨多,為了方便服務配置文件統

簡單的SpringCloud教程 | 第五篇: 路由網關(zuul)(Finchley版本)

開頭 proxy 打開 系統 blog 註冊 hub 需要 ews 在微服務架構中,需要幾個基礎的服務治理組件,包括服務註冊與發現、服務消費、負載均衡、斷路器、智能路由、配置管理等,由這幾個基礎組件相互協作,共同組建了一個簡單的微服務系統。一個簡答的微服務系統如下圖: 註

簡單的SpringCloud教程 | 第五篇: 路由網關(zuul)

under 中心 sig ribbon 請求 安全 src htm span 在微服務架構中,需要幾個基礎的服務治理組件,包括服務註冊與發現、服務消費、負載均衡、斷路器、智能路由、配置管理等,由這幾個基礎組件相互協作,共同組建了一個簡單的微服務系統。一個簡答的微服務系統如

簡單的SpringCloud教程 | 第二篇: 服務消費者(rest+ribbon)

image tree 開啟 then rom cat learn 替代 官網 最新Finchley版本:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f2-ribbon/或者http://blog.csdn.n

簡單的 SpringCloud 教程 | 第一篇: 服務的註冊與發現(Eureka)

add 過程 sdn 需要 2.3 boot one ini tail 最新Finchley版本請訪問:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/或者http://blog.csdn.n

簡單的SpringCloud教程 | 第十三篇: 斷路器聚合監控(Hystrix Turbine)

打開 jsb cli fill alt 數據 需要 eap south 當我們有很多個服務的時候,這就需要聚合所以服務的Hystrix Dashboard的數據了。這就需要用到Spring Cloud的另一個組件了,即Hystrix Turbine。 看單個的Hystri

簡單的SpringCloud教程 | 第十二篇: 斷路器監控(Hystrix Dashboard)

詳細 pre 良好的 依次 alt ews 需要 ext 數據監控 最新Finchley版本,請訪問:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f12-dash/或者http://blog.csdn.net

簡單的SpringCloud教程 | 第四篇:斷路器(Hystrix)

技術分享 熔斷器 enable layer get local nsh 12c host 在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以相互調用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來調用。為了保證