一步一步學習SignalR進行實時通信_1_簡單介紹
標簽(空格分隔): SignalR
前言
本來前幾個月想寫一系列的關於SignalR的文章,但是由於在做項目,時間非常的緊急,花了1天的時間大致了解了下SignalR,並實現了個在線聊天的小功能,本來記錄一系列關於SignalR的文章,沒想到寫了MVC5使用SignalR進行雙向通信(1)之后就停下來了,現在稍微空閑點,抽點時間來完整的學習SignalR。在園子里也有許多關於SignalR的文章,如此篇簡單的介紹了下SignalR,並實現了個實時聊天的功能,但是實際上SignalR還有許許多多的東西能夠被我們挖掘到,我希望能記錄下我詳細學習的過程。
SignalR介紹
SignalR是一個框架,它能夠有助於我們搭建一個實時互動、多用戶的應用程序。它的一個很大的優點是對開發人員是透明的,它會自己決定使用那個技術(長輪詢、持久性框架、WebSockets等)最好,並自動管理連接和斷開連接。詳情請看園子另一篇文章。
SignalR為我們提供了2個不同的抽象級別,分別為_persistent connections
和Hubs
_
長篇大論不是我的風格,我更專注於某個技術能實現怎樣的功能,我在這里簡單的提一下,有這樣2個東西存在,這會有助於對SignalR后續的學習。
支持的平台
在此篇文章講的非常詳細了,這里也沒必要再重復一篇
相關說明
我們使用的是Signal2,與第一個版本可能會有所不同,這里不做討論。
OWIN
在這里我們都是基於OWIN來是實現的。OWIN大致是如下的結構:
實現了SignalR的結構如圖所示:
安裝SignalR后相關的程序集
- OWIN結構
對比起來應該就很好理解了,OWIN實現了一個通用的接口,而SignalR則是根據此接口要求搭建的一套框架,類似的有WebAPI。
看過這兩幅圖片,那么對OWIN的概念應該就很好理解了。
從第一幅圖可以看出,OWIN主要由五部分組成:Host、Server、Middleware、Web framework以及Application
。
2.詳細介紹
在看第二幅圖和第三幅圖,第三幅圖是安裝完成SignalR后,這6個包是與SignalR和Owin相關的
- Host:請求是在哪里執行的,一般來說在IIS上,可以自己搭建在自己控制台應用程序上,具體方法這里有說明。
- Server:即
Microsoft.Owin.Host.SystemWeb
或者Microsoft.Owin.HttpListener
,它的作用是打開一個端口與客戶端進行通信。 - Middleware:即為Misrosoft.AspNet.SignalR.XXX這是我們所安裝的SignalR,如果安裝的WebAPI,則可能為Misrosoft.AspNet.WebApi.XXX,他是實現了Owin的一系列框架。
- Web framework:如我們現在介紹的SignalR或者Web API等。
- Application:即為我們的項目,可以是MVC、web form或者wpf等。
我的理解是這樣的,SignalR有一個核心的服務叫
Microsoft.AspNet.SignalR.Core
,它通過一個類似於適配器概念Microsoft.AspNet.SignalR.SystemWeb
,實現了OWIN的接口,從而進行協同工作。
結束語
本章對於SignalR的大致介紹就到這里,本來不想寫概念性的東西,畢竟我是一個注重實現的人,學習有2種方法一種是深入淺出式的,另一種是先實現在深入,以前我可能是第二種形式,但是對於程序員來說不求甚解也不失為一種好辦法,畢竟接觸一個新的東西,直接深入還是非常困難的。
對着本章有什么不理解也沒有大問題,在后面會一步步通過代碼實現一些功能。
本文發布至作業部落
參考文獻
ASP.NET SignalR系列
SignalR Programming in Microsoft ASP.NET pdf 下載