[英]What is the trade of between OneWay and Async calls for broadcasting events to clients? (WCF)
我正在编写一个WCF(目前计划中的netTcpBinding)客户端/服务器应用程序,该应用程序必须支持“少量”客户端,包括向客户端发送事件。
我不希望服务器在客户端处理事件时阻塞。
逻辑上,我看不到将回调方法标记为“ OneWay”或使用“ being_MethodName(..)”调用之间的匹配差异。
那么每种技术的优缺点是什么?
从我的阅读中发现,OneWay消息的错误处理很复杂,您可能会意外使通道变坏……例如,不要着火而忘记!
根据抽象合同定义POV,如果服务器不需要客户端的任何响应,则没有理由将其写入与客户端的“合同”中。
从更务实的角度来看,您将不得不承担带宽成本和必须发送和接收无关消息的处理开销。
我还要担心的另一个主要问题是,客户端是否在服务器向客户端发送通知的同一TCP通道上向服务器发送消息。 如果是这种情况,则您绝对想使用OneWay消息,以避免可能的死锁(请参阅我在此线程中的注释: 使用回调时,WCF双工通道会关闭 )。
另外,要明确一点,单向和异步不是唯一的-您可以并且很可能应该使用异步模式发送单向消息。 例如,如果网络缓冲区已满,则有可能将单向消息发送为阻塞,因此使用异步将确保您的服务器事件通知线程保持不受阻塞。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.