套接字,轮询,无插槽结果?

时间:2014-08-22 23:23:01

标签: c# winforms sockets azure polling

我正在开发一个Windows窗体应用程序,该应用程序在由Microsoft Azure开发服务托管的云SQL服务上运行。由于我的应用程序很大程度上依赖于专用数据库,因此无法在物理上拥有允许我使用套接字的接收应用程序这是一个必不可少的陷阱,因此我更愿意能够不断检查数据库根据符合条件的行条目更改并提醒当前用户。

我已经在一些博客/帖子上看到,民意调查(可能的解决方案)是一件坏事。那么,考虑什么方法呢?

1 个答案:

答案 0 :(得分:2)

为了澄清问题,您希望客户端在数据库中的某些数据更改时接收更新。

SQL Server 2005和2008 do 支持在数据更改时通知客户端的概念(MSDN)。但是,this SO问题似乎表明此时此SQL功能中不存在此功能。这意味着您有几个选择:

  1. 轮询数据库本身

    • 此选项可让您降低成本,因为您已拥有所需的一切。当然,缺点是你以相对频繁的间隔进行(可能很大的)查询。有足够的客户端,由于涉及负载,这将大大减慢。如果你有价格/转让计划,它也可能成本很高。
  2. 围绕数据库包装服务并与之交谈

    • 这可以与轮询一起使用,但在使用推送技术(如套接字或WebSockets)时更好。这当然有额外的前期成本,但允许您控制接收的更新和时间。理想情况下,此服务将保留数据库内存的副本,用于为客户端请求提供服务,同时自行更新实际数据库。这样可以至少对数据库(速度很慢)进行查询。
  3. 只有你知道正确的答案,但我会选择第二个。当您需要超越简单查询的功能时,它将更高性能,更好地扩展,并且证明更具可扩展性。