2012-12-21 35 views
0

我的任務是創建一個網頁(認爲Twitter),該網頁在將新郵件添加到數據庫時進行更新。從數據庫中刪除消息時,還必須從客戶端刪除消息。多個客戶端可能同時訪問相同的消息是可能的。可能會發生其他操作,例如在服務器上發出停止命令。一旦發生這種情況,服務器上的所有消息都將停止顯示。使用瀏覽器更新郵件從服務器提取郵件

我在尋找的是解決這個問題的體系結構。

我使用的技術是.Net 4.5,ASP.Net MVC和KnockoutJs。可以使用Nodejs,但我需要知道使用nodejs使用SignalR的好處。

我目前的實現是使用一個javascript計時器,它每30秒輪詢一次服務器以查找新消息。它有效,但投票感覺很髒。

+0

我同意它感覺髒,但它應該作爲一個聽衆。我已經嘗試了Knockout&NodeJS(只花了幾個小時),但是我並不在乎這些。用aspx你可以使用updatepanels嗎? – EricG

+0

@EricG我正在研究nodejs和socket.io。我對這個或那個決定不太瞭解。使用webforms不是一種選擇。 –

回答

1

無法對ASP.NET進行評論 - 但是爲此使用了Node.js和Knockout。我已經使用WebSockets(通過socket.io庫)和Server Sent Events(SSE)將更新推送到客戶端模型。

聽起來像SSE會很適合這種情況。關鍵是無論您的數據庫技術應該支持如何將更改事件發送到您的節點中間件,以便您可以將其發送到瀏覽器。

+0

我在後端使用MSSQL。哪個數據庫與Nodejs協同工作並支持發佈變更事件? –

+0

你可以使用大多數任何數據庫與節點(看這裏:https://github.com/joyent/node/wiki/modules#wiki-database),但我已經使用支持更改通知的兩個NoSQL DB是CouchDB(_changes提要)和Redis(PubSub)。我確定還有其他人。 – 7zark7

0

經過更多研究,輪詢方法是所涉及技術的最佳解決方案。

問題的關鍵是沒有通知新的消息,這會提示系統發生變化。目前,當它被提交給數據庫時收到一條新消息。 SQL Server沒有通知機制(這不是100%真實的,但它不是我想要的依賴項)。在長期運行中,最佳系統將是使用SignalR或nodejs實現發佈/訂閱汽車旅館,這將向客戶端傳遞實時消息。要發生這種情況,需要對應用程序進行完整的重新架構。