2016-07-24 37 views
1

我有一個網頁,只要數據庫中的值發生更改,就需要刷新該網頁。我看到很多反向AJAX功能可以使會話保持運行。檢查SQL數據庫以查看ASP.NET中的更改的最佳實踐

我的主要問題是,你認爲我應該用什麼?

我的另一個問題是......我不能只是在JavaScript中做一個無限循環,只是調用一個webmethod來檢查數據庫?爲什麼我需要彗星套接字或Web服務或類似的東西?

+0

問題的意見。您可以。性能。 – Quentin

回答

1

老派的解決方案是實現一個「心跳」,每15秒左右(這可以明顯改變)一個輕量級的AJAX「HEAD」請求,並且服務器端控制器會在回覆標題,表明有內容需要接收。

該應用程序可以進一步請求數據。請注意,您可以在一個請求中執行此操作,而且這種方式也可以正常工作 - 尤其是在數據可能經常更改的情況下。

這實質上就是你所說的「無限循環」,但這是一個誤導性的術語。通常使用重複的setTimeout()調用來實現 - 不要使用setInterval()。您希望在發送其他請求之前等待響應或超時,否則事情可能會變得複雜並令您頭痛。

考慮到對服務器的請求將很快與此應用程序獲得的通信量相乘。每個請求應該是安全的,但重量輕。處理請求的服務器應該實現緩存的形式,您不希望每個心跳請求都進行數據庫調用。

這種古老的方法的工作原理,我見過它到處都是。有提供給開發新的技術,但:

一個較新的方法是使用WebSockets,但因爲你使用asp.net,我建議你看看Microsoft's SignalR,它結合了多種技術,並確保對舊的瀏覽器/設備的兼容性。