Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对这一设计的思考_C#_Wcf - Fatal编程技术网

C# 对这一设计的思考

C# 对这一设计的思考,c#,wcf,C#,Wcf,我有一个问题域,我需要能够运行一个后台进程,该进程将: 运行筛选器以获取obj集合(耗时操作) 通过一组规则传递obj coll…可能通过一个规则接口 能够向任何感兴趣的侦听器公开规则引起的任何更改 每个筛选器可能有许多规则,并且可以有多个筛选器 这是一种切实可行的方法吗?我在想: 将WCF应用托管在Windows服务中,该服务将公开规则更改的回调 让服务完成运行过滤器->规则的繁重工作。这是否需要单独的线程工作 欢迎对现有框架、设计模式等的任何想法或参考 谢谢 Sunit您有两个选项,

我有一个问题域,我需要能够运行一个后台进程,该进程将:

  • 运行筛选器以获取obj集合(耗时操作)
  • 通过一组规则传递obj coll…可能通过一个规则接口
  • 能够向任何感兴趣的侦听器公开规则引起的任何更改
每个筛选器可能有许多规则,并且可以有多个筛选器

这是一种切实可行的方法吗?我在想:

  • 将WCF应用托管在Windows服务中,该服务将公开规则更改的回调
  • 让服务完成运行过滤器->规则的繁重工作。这是否需要单独的线程工作
欢迎对现有框架、设计模式等的任何想法或参考

谢谢
Sunit

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

无论哪种方式,作业都应该在单独的线程上运行,这样它就不会阻塞服务

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


我会让其他人参与实际的模式或框架,我只是不确定。另外,检查MSMQ,这可能是另一个可行的解决方案。

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

如果您的后台进程需要从远程计算机立即(365年7月24日)访问,Windows服务对我来说非常有意义。假设您熟悉C#,那么创建Windows服务就很简单了。你可以循序渐进。启动Windows服务后,通过在Windows服务的OnStart回调中创建System.ServiceModle.ServiceHost实例,就可以轻松地托管WCF服务。至于WCF模式和良好实践,我将向您介绍Juval Lowy的网站。只需提供您的电子邮件地址,该网站就可以免费下载大量与WCF相关的内容。

最有可能是回调,因为客户端只会监听启动/停止任何进程。谢谢你的评论。输入错误…我的意思是不要停止/开始任何事情。谢谢你的链接。我正在使用win服务和后台工作程序进行筛选->规则操作。因为客户机会要求规则结果,所以我考虑将其存储在类似sqlite的文件数据库中。