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的文件数据库中。