天天看點

Azure提高ASP.NET Web 事件引擎吞吐量

Windows Azure 團隊架構設計師,Clements Vasters,在最近一篇博文中介紹了一個新的 GitHub 項目——SignalR。該項目使用 Windows Azure 服務總線(Service Bus)在伺服器和用戶端之間進行雙向分發資訊,它的出現讓異步 ASP.NET Web 事件引擎具有向外擴充以及高吞吐消息傳送能力成為可能。

  SignalR 類似與 JavaScript 實時架構,如 Socket.IO。SignalR 能夠完成用戶端向伺服器的異步通信,并同時支援伺服器向浏覽器用戶端推送事件。雖然沒有直接綁定在 ASP.NET 中,但是 SignalR 項目由微軟 ASP.NET 團隊打造,用作為 ASP.NET Web 應用程式提供持久連接配接機制。SignalR 的連接配接通過日益流行的 WebSockets API 完成,而如果 WebSockets 無法使用,它會透明地回落為長輪詢技術(long-polling technique)。如果開發人員想使用 Signal,需要在用戶端層使用像 jQuery 的 JavaScript 架構,并在服務端層使用 .NET 代碼編寫應用和服務。SignalR 具有多種程式設計模型(PersistentConnections 和 Hubs),它為開發人員提供了連接配接、消息接收群以及事件處理器的不同層次的通路。

  雖然 SignalR 顯示已經可在單台機器上擴充至上萬個連接配接,但是開發人員還沒有辦法跨越多台 Web 伺服器進行服務端元件部署。這會帶來單點故障,而且限制應用程式可支援的并發連接配接數。Vasters 說他使用 Azure 服務總線解決了這個問題:

  上周,我為 SignalR 建立了一個 Windows Azure 服務總線底闆(backplane),它能夠部署 SignalR 解決方案到多個結點上,并可以跨越這些結點進行消息分發,確定每一個發送端擁有合理的順序,以及光标 cookie 中結點到結點的正确性和一緻性。

繼續閱讀