C#关于这个设计的想法

时间:2009-05-08 14:36:22

标签: c# wcf

我有这个问题域我需要能够运行后台进程:

  • 运行过滤器以获取obj集合(耗时的操作)
  • 通过一组规则传递obj coll ...可能通过规则界面
  • 能够将规则所引起的任何更改暴露给任何感兴趣的听众。

每个过滤器可能有许多规则,并且可以有多个过滤器。

这是实际的方法吗?我在想:

  • 在Windows服务中托管一个WCF应用程序,该应用程序将公开规则更改的回调
  • 让服务执行运行filter->规则的繁重工作。这需要一个单独的线程工作吗?

欢迎任何对现有框架,设计模式等的想法或参考。

感谢 苏尼特

3 个答案:

答案 0 :(得分:1)

如果您的后台进程需要立即(24/7/365)从远程计算机访问,Windows服务对我来说很有意义。假设您熟悉C#,创建Windows服务是微不足道的。您可以按照分步here进行操作。一旦你开始使用Windows服务,通过在Windows服务的OnStart回调中创建System.ServiceModle.ServiceHost实例,可以很容易地托管WCF服务。至于WCF模式和良好实践,我会将您推荐给Juval Lowy的网站IDesign.net。只需提供您的电子邮件地址,该网站就有很多免费的WCF相关下载。

答案 1 :(得分:0)

您有两个选项,最明显的两个选项是客户端调用启动作业的方法并轮询服务器的状态,或者设置回调。

无论哪种方式,作业都应该在一个单独的线程上运行,因此它不会阻止服务。

如果您使用状态路线的轮询,请将实际结果置于返回状态。 如果您使用回调,请使用WSDualHttpBinding并设置回调。这看起来有点可怕,但实际上并没有那么糟糕。

我会让其他人为实际的模式或框架而插入,我只是不确定。另外,结账MSMQ,这可能是另一个可行的解决方案。

答案 2 :(得分:0)

您可以使用WWF来处理规则。您应该能够将WWF托管为服务。