我正在开发一个主从命令模型由某些应用“主”的命令发送到被称为“从站”做一些任务,然后用状态完全或过程失败响应回均质处理。他们也应该暴露于请求一些数据到主可用。

将这个模型是什么样的WCF?

能够掌握和从属主机thier自己的服务每个实例?只会主主机?只有奴隶?我应该使用回调契约?数据合同?或只是服务合同。

作为附带说明,这是一个低带宽,强度低,内部只分布项目用于产品测试,并且不应当被看作是一个“大高需求”的项目。

有帮助吗?

解决方案

您肯定还会有服务合同 - 一绝 - 在某些形状或形式。这只是定义了你的服务,并在其上的操作(方法)(OperationContract的)。

如果它是一个内部“背后的防火墙”的系统,你可以看一个双螺旋结合,例如有法师召唤奴隶,而从报告回当它完成一个双工信道。开箱即用的,有只支持全双工的WsDualHttpBinding,但因为你是内部的,背后的防火墙,你可能想看看在创建自己的基于TCP的双螺旋结合(这并不难,因为它听起来在第一!)。

在这种情况下,既参与应用确实是服务器和客户端在同一时间。

您必须以某种方式,形状DataContracts或形成定义被Master和Slave之间搬来搬去的数据 - 。如此反复,是的,你必须有数据合同

编辑: 当然,另一种方法可能是使用两个MSMQ消息队列;大师放下他的“工作”的要求到一个队列,其中从侦听并拿起作业请求。当从机完成,它反过来落入响应队列到的Master是收听者的响应,并且得到通知的作业正在做的方式。

马克

其他提示

我同意杰里米这里..你描述并不需要回调合同的复杂性是什么。工作节点可以简单地暴露一个WCF服务(甚至是WSDL或REST Web服务为此事...),然后控制器将只需要知道每个子节点的URL和发送消息给工作节点。

如果您希望控制器能够播出一条消息,并拥有所有的工人(我真的不喜欢的主/从比喻......我早就切换到叫它控制器/工人)节点做一些响应并张贴他们的进步回组,那么你可能想使用WCF内提供的往往被低估的P2P通道。这允许一组写在WCF服务来互相对话一下子作为同行与所用几乎就像话题/谈话分隔的URL。

因此,举例来说,你可能发出的 net.p2p命令://实验室/命令频道。只有控制器发送命令该通道上,但所有工作节点的听。当他们完成异步做自己的事情,他们可以在 net.p2p回来汇报进展://实验室/状态频道。这种方法的好处是,(如果你需要这个功能),职工个人将获得知道其他所有的工人都在做的能力。

请记住,但是,如果你使用P2P,那么你就必须处理争 - 你可能最终有2个节点接受相同的命令。如果这是好的,那么P2P是您的工具。如果你需要发出命令,只有拿起串联各个节点,因为他们(告诉远程节点时,运行单个测试脚本等一个更可能的情况)成为自由,那么你可以使用MSMQ结合,而不是P2P。然后所有的工人的成为其从队列中接收消息的客户端和可以更容易地抵消多个工人的情况接受同样的要求。

有关的附加参考: 甲博客帖子我写了一段时间后在Peer频道

MSDN上等信道方案 - 这是好事,因为你可以从这里到对等信道的概念来的参考指南。

等信道队博客

如果副系统处理需要相当长的时间,那么回调契约可能是为了。否则,你可能只是阻止法师等待从站完成(你可能需要调整您的WCF客户端配置,使其不会超时)。

根据您的描述,我觉得你真的只需要举办从属节点上的WCF服务和法师可能只是一个客户端消耗由奴隶暴露的WCF服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top