【发布时间】:2012-04-20 01:01:36
【问题描述】:
我有一个为一些客户提供服务的 WCF 服务。 设计是:
- WCF 服务层
- 业务逻辑层
- 数据访问层(LINQ-To-Entities)
我需要有一个工作线程在数据库上执行一些连续工作(查找新记录,如果发现任何记录 - 以“推送”方式向客户端发送信息,这意味着 - 客户端将托管服务所以它可以从这个工作线程接收“推送”通知)。
我将在 Windows 服务上托管 WCF 服务。
问题是:在我的设计中,我应该在哪里安装这个工作线程? 它是否应该与 WCF 服务一起在 Windows 服务的“Program.cs”的“Main()”中生成? (这意味着它应该是 WCF 服务程序集的一部分) 或者它应该是业务逻辑层的一部分 - 因此是“业务逻辑”组件的一部分?
我的想法:
【问题讨论】:
-
您能否澄清“客户将托管服务”的含义?您是说 WCF 服务必须了解所有客户端吗?推送是必需的吗?您能控制客户吗?
-
我会在最顶层生成它,所以在 Main() 中
-
“推送”是一项要求。当客户端连接到服务器时,它会将它的端点配置传递给服务器,服务器也将作为客户端连接到客户端。这样服务器就可以向客户端推送信息(CallBack 支持对我没有好处,因为服务器无法发起自己对客户端的调用)...
标签: wcf worker-thread