簡體   English   中英

將數據從ASP.NET MVC控制器推送到View

[英]Pushing data from an ASP.NET MVC Controller to a View

我正在構建一個站點的后端,該站點將在前端有多個“小部件”,需要實時更新。

現在我只是有一個加載方法,用於在頁面加載時用數據填充所有小部件。 我的問題是如何處理進一步更新的實時方面。

我想過只有多個ajax調用,它可以每隔一秒左右查詢一次服務,並返回最新的數據,但這似乎效率低下。

有沒有辦法從控制器“ 推送 ”數據到視圖?

也許你可以看看這個項目: https//github.com/SignalR/SignalR

ASP.NET SignalR是ASP.NET開發人員的新庫,它使得為應用程序添加實時Web功能變得異常簡單。 什么是“實時網絡”功能? 它能夠讓您的服務器端代碼實時地將內容推送到連接的客戶端。

SignalR還提供了一個非常簡單的高級API,用於在ASP.NET應用程序中執行服務器到客戶端RPC(在客戶端的瀏覽器中從服務器端.NET代碼調用JavaScript函數),以及為連接管理添加有用的鈎子,例如連接/斷開事件,分組連接,授權。

(摘自http://signalr.net/

希望能幫助到你。

我認為最好的辦法是定期輪詢服務器:

$(document).ready(function() {

    setTimeout("getUpdate()", 30000);

    function getUpdate()
    {
        // Make an ajax call here
    }
});

這將要求每30秒更新一次。

如果Web套接字在支持HTML5的瀏覽器中運行,也可以使用它

這取決於前端數據需要更新的頻率。 大多數頁面不需要不斷更新。 我不知道有一個“最佳實踐”門檻,但我認為一個好的起點是使用Ajax進行15-20秒的更新。 快速,精簡地進行Ajax調用 - 如果沒有更新,可能只返回空白。 如果您需要更快的更新,請查看稱為long polling 長輪詢基本上是您觸發對服務器的ajax調用的地方,並且連接處於打開狀態,直到有數據要發送。 長輪詢將占用更多服務器資源,因為在等待數據准備就緒時,您將打開連接和線程。 使用ASP.NET,您還必須擔心殺死長輪詢線程,因為默認情況下,當瀏覽器關閉連接時,這些線程不會被殺死(例如,如果某人導航離開頁面。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM