【问题标题】:WCF right for all cases?WCF 是否适用于所有情况?
【发布时间】:2009-04-24 20:18:36
【问题描述】:

我正在构建一个应用程序,该应用程序将其处理分发到一个场。在我的基本设计中,我有两个服务:

一个“控制器”,它监视新工作、对其进行排队并管理结果。

绑定到特定控制器的“工人”。 Worker 将从其控制器检查工作,并将结果推送回来。

在我对 WCF 的简要了解中,它似乎暗示了 MEST 风格的消息传递 SOA。这种机制似乎与我将要进行的沟通和协调类型不符。

我是否混淆了 WCF 是什么?这个世界上还有 .NET 远程处理的地方吗?或者我是在以侏罗纪、WCF 之前的思维方式思考这个问题。

编辑:
遗漏了一些细节。问题是我需要对工作进行时间限制。如果一个工作项被签出的时间太长,我应该能够把整个事情弄错。我见过的所有例子似乎都对传出的消息采取“发送并忘记”的立场。我需要在合理的时间范围内得到确定性的结果或错误。希望澄清。

【问题讨论】:

    标签: .net wcf architecture remoting


    【解决方案1】:

    我不建议在大多数情况下进行远程处理;它不可移植,有时管理起来有点痛苦,而且BinaryFormatter 很脆弱(版本不兼容)。

    WCF 非常适合大多数情况;如果您在农场工作,您可能希望在没有会话等的情况下运行,但无论如何我都会这样做(为了性能) - 只需使用 http 基本配置文件。

    我不完全理解您所描述的场景。当然,您始终可以使用 xml/json/binary 滚动您自己的 RPC - 或使用任何其他预装通讯堆栈...或 MSMQ 或 BizTalk 等中间件。


    重新编辑; WCF 可以同步使用(阻止响应,(我相信)可配置的超时)。您可以使用分布式事务等做更复杂的事情(回滚等),但它会迅速增加复杂性。您需要权衡死机时间等的重要性。

    如果时间范围比您希望等待调用的时间长,您还可以考虑工作流之类的事情 - 除了 WF 之外,还有一系列工作流产品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多