我有一个 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/