c# - 轮询的替代方案?

标签 c# asp.net signalr long-polling polling

我有一个 asp.net c# 桌面应用程序,它每 5 分钟不断轮询一次数据库数据。 这会导致服务器承受大量负载,进而降低其效率。

asp.net 中是否有支持独立于所用数据库的发布订阅模型的技术? 我知道长轮询是其中一种选择。但我一直在寻找事件驱动的东西,而不是长时间轮询数据。 任何帮助将不胜感激。

最佳答案

如果您实际使用的是 ASP.net,您可以添加 the SignalR framework建立到您的桌面应用程序的推送 channel 。

在服务器端,添加 Microsoft.AspNet.SignalR nuget 包 (Install-Package Microsoft.AspNet.SignalR);在客户端上,添加 Microsoft.AspNet.SignalR.Client (Install-Package Microsoft.AspNet.SignalR.Client)。

这样,只要对数据库进行了更新,您就可以通知所有客户,如下所示:

public void AddCustomer(Customer customer)
{
    using (var db = new CustomerContext)
    {
        db.Customers.Add(customer);
        db.SaveChanges();
    }

    var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
    hub(customer.Id);
}

关于c# - 轮询的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27799859/

相关文章:

c# - 使用 Webbrowser C# 读取 iframe 内容

c# - 反射(reflect)一个列表<T>

c# - Paypal IPN - 返回时自定义为空

c# - 保护共享主机上的连接字符串

asp.net-mvc - 从 Azure Function 调用 SignalR

java - 当 Web 应用程序位于 Azure 上时,Signalr (Android) 无法工作

c# - 为什么这不会导致事件的无限循环?

c# - mono/.Net GC 在收集后将空闲分配的内存释放回操作系统吗?如果不是,为什么?

c# - 电报 :RadAsyncUpload is not firing event OnFileUploaded

jquery - 无法读取未定义 SignalR Hub 的属性 'chatHub'