响应式 WCF 客户端的双工回调或客户端线程
Posted
技术标签:
【中文标题】响应式 WCF 客户端的双工回调或客户端线程【英文标题】:Duplex Callbacks or Client-Side Threading for Responsive WCF Clients 【发布时间】:2010-09-30 20:54:27 【问题描述】:我有一项服务,其中特定功能的调用时间比其他服务要长,有时它们可能需要几秒钟才能返回。为了防止客户端的 UI 在发生这种情况时被阻止,首选的解决方案是:
-
使用双工通道并在收到数据时简单地使用回调来更新 UI。
使用单独的线程调用服务,简单的使用request-reply操作,然后在返回数据时更新ui线程。
哪种解决方案更好,特别是在互操作性受到青睐但并非绝对必要的情况下,并且在您看来,哪种解决方案的实施和维护更快(更清洁)?
【问题讨论】:
【参考方案1】:如果您实施回调合同,那么您就无需客户端实施多线程代码。在使用 .Net 客户端时,这可能不是一个显着优势(因为 VS 会自动为您生成异步代理代码),但在使用其他平台/语言的客户端时可能会被证明是有益的。
哪个更干净?好吧,这取决于您是客户端还是服务器开发人员。如果,正如我在您的情况下所怀疑的那样,您两者都是,并且您可以将 .Net 用于客户端和服务器,那么我可能会暂时避免回调。如果您暗示服务调用需要 45 秒,那么我会说回调合同,这确实是主观的,但如果我要伸出脖子,那么我会说如果响应时间超过 5 秒那么是时候转向回调了。
【讨论】:
【参考方案2】:您应该实现CallBackcontract。
这是example。
【讨论】:
使用 CallbackContract(又名双工通道)而不是在客户端使用线程有什么特别的原因吗?以上是关于响应式 WCF 客户端的双工回调或客户端线程的主要内容,如果未能解决你的问题,请参考以下文章