我应该使用服务还是只轮询数据库

时间:2018-09-19 04:33:40

标签: c#

我对服务了解不多,因此,如果我尝试做一些不适合他们的事情,请原谅我。

我正在尝试为家庭成员分发软件。他们计划从3个或4个调度员开始,但是将来可能会扩展。我需要该软件不断(至少每5或10秒一次)检查一次,以查看不在通话中时是否放置了新的未处理呼叫,或者在通话中,是否有其他调度员更新了通话(由于致电并提供其他信息)。

对于上述情况,哪种选择更好?

A)在数据库中有一张表,该表跟踪呼叫/新呼叫的更新,并每5-10秒从该软件的每个实例轮询一次。

B)在具有数据库的机器上运行服务,并让该服务处理所有SQL。在服务中为每个呼叫创建一个实例,然后仅询问服务是否有任何更改或未处理的呼叫。

如果为B,是否可以在另一台(联网的)计算机上的软件可以订阅的服务中创建委托?如果可以,我在哪里可以找到有关此操作的信息,我在Google上找不到任何内容。

2 个答案:

答案 0 :(得分:2)

这很宽泛。

但是,您可以使用以下

  • DB触发器监视插入等,然后在触发时执行和执行类似的db操作。

  • 创建一个用于轮询的 Windows服务,这根本不是问题。

    • 您甚至可以使用其他软件订阅的 Duplex Contract 自行托管 WCF 服务器,然后可以通过该通道发送通知等。

    • 或使用 SignalR 进行通知,在这种情况下也可以正常工作,并且需要5分钟才能完成工作。

尽管这里有很多方法,但您确实需要进行一些研究以找到最适合您的方法

答案 1 :(得分:1)

解决方案B更好。

  

如果为B,则可以在服务中创建一个委托   另一台(联网)计算机上的软件可以订阅吗?如果是这样的话   我可能会找到有关此操作的信息,但我找不到任何信息   谷歌。

这取决于您的需求和项目类型。

  • 您可以在ASP.Net中使用SignalR
  • 如果您使用套接字,则可以保持连接活动并将客户端上下文存储在列表中并通知主题