OneWay和Async之间的交易是什么要求向客户广播事件? (WCF)

时间:2009-11-24 09:09:05

标签: .net wcf asynchronous nettcpbinding

我正在编写一个WCF(目前计划的netTcpBinding)客户端/服务器应用程序,它必须支持“少数”客户端,包括向客户端发送事件。

  

我不希望服务器阻止   客户处理事件时。

逻辑上我看不到将回调方法标记为“OneWay”或用“being_MethodName(..)”调用它们之间的匹配差异

那么每种技术的优缺点是什么?


我从读物中发现,OneWay消息的错误处理很复杂,你可能会意外地让频道变坏......例如,不是火,忘了!

1 个答案:

答案 0 :(得分:0)

从抽象合同定义POV,如果服务器不需要客户端的任何响应,则没有理由将其写入与客户的“合同”。

在更实际的层面上,您将产生带宽成本和处理必须发送和接收无关消息的开销。

另一个主要问题是客户端是否在服务器向客户端发送通知的同一TCP通道上向服务器发送消息。如果是这种情况,您肯定希望使用OneWay消息以避免可能的死锁(请参阅此帖子中的评论:WCF duplex channel gets closed when using callbacks)。

另外,要清楚,单向和异步不是独占的 - 您可以并且可能应该使用异步模式发送单向消息。单向消息可以发送到阻止,例如,如果网络缓冲区已满,那么使用async将确保您的服务器事件通知线程保持解除阻塞状态。