實現推送服務的ASP.NET開源項目 - SignalR
SignalR 是 ASP.NET 團隊正在開發的一個 Microsoft .NET Framework 庫和 jQuery 插件,可能包括在以后版本的 ASP.NET 平臺中。 它提供了一些前景極為光明的功能,而這些功能正是 .NET Framework 當前不曾具有的,并且是越來越多的開發者所需要的。
SignalR 是一個集成的客戶端與服務器庫,基于瀏覽器的客戶端和基于 ASP.NET 的服務器組件可以借助它來進行雙向多步對話。 換句話說,該對話可不受限制地進行單個無狀態請求/響應數據交換;它將繼續,直到明確關閉。 對話通過永久連接進行,允許客戶端向服務器發送多個消息,并允許服務器做出相應答復,值得注意的是,還允許服務器向客戶端發送異步消息。它和AJax類似,都是基于現有的技術。本身是一個復合體。一般情況下,SignalR會使用Javascript的長輪詢( long polling),實現客戶端和服務端通信。在WebSockets出現以后,SignalR也支持WebSockets通信。當然SignalR也使用了服務端的任務并行處理技術以提高服務器的擴展性。
任何一個技術的出現都是為了解決特定的問題。SignalR也不例外。我們知道網站開發中最長見到的一個功能就是在線聊天室。現在的網上的大部分在線聊天室都是基于2種技術,1.AJAX 2.Flash.
聊天室要解決最大的問題就是 消息的推送。當N個在線用戶 同時加入一個聊天室時,1個用戶發送消息,服務端就要把這個消息轉發給特定的人。
之前的技術都是通過Javascript來不停地發送請求來輪訓 服務端的新的消息。這種定期發送Ajax請求給服務器的方式,在用戶很大的情況下給服務器帶來很大的壓力。
WebSockets這個技術的出現,很好地解決了這個問題,恰恰支持可以主動推送消息,SignalR 支持WebSockets。我們可以看到未來網絡應用中會大量出現自己吃WebSockets的程序,而SignalR應該也會廣泛在ASP.NET 網站中出現。
項目官網:http://signalr.net/
GitHub:https://github.com/SignalR/SignalR
相關文章:
- 使用 SignalR 構建進度欄
- Real time, Asynchronous Web Pages using jTable, SignalR and ASP.NET MVC
- ASP.NET MVC, SignalR and Knockout based Real time UI syncing - For Co Working UIs and Continuous Clients
- Streaming live results to a web site using MSMQ/Duplex WCF/SignalR/jQuery
- Browser Alerts with ASP.NET 4.5 and SignalR
- Building a user map with SignalR and Bing
- Real time, Asynchronous Web Pages using jTable, SignalR and ASP.NET MVC
- Browser Alerts with ASP.NET 4.5 and SignalR
- SignalR - Group Notifications
- Real-Time with ASP.MVC and SignalR
- https://github.com/SignalR/SignalR/wiki/Projects-Using-SignalR