【发布时间】:2012-07-01 17:31:44
【问题描述】:
我有一个 WCF 服务,所有客户端都连接到该服务以获取通知\提醒(使用他们实现的 CALLBACK 接口)。目前 WCF 服务是自托管的,但计划是将其托管在 Windows 服务中。
WCF 服务具有“发布”、“订阅”和“取消订阅”操作。
我需要有一个类似的后台工作线程 [每 XXX 分钟] 不断地轮询 SQL Server 数据库表,并查找某些“提醒”行。一旦找到它们 - 它应该通知所有连接的客户端。
我想到了两种方法来实现这一点。
.
方法一:
有一个单独的 EXE 项目(不希望它成为控制台,那么它应该是什么 - Windows 服务?),它将启动并运行一个后台线程。后台线程将作为其客户端之一连接到“提醒”服务。后台线程将轮询数据库,一旦发现某些内容 - 它将向 WCF 服务发送“发布”消息,这将使 WCF 服务向所有订阅的客户端发送提醒。
.
方法 B:
以某种方式使后台线程运行 WCF 服务项目,并且当它检测到数据库中的新提醒行时,以某种方式使其向 WCF 服务发出“信号”使用该信息,然后 WCF 服务会将此信息发送给所有订阅的客户端。
.
哪种方法更好?还有其他建议吗?
【问题讨论】:
标签: wcf backgroundworker