wpf - 响应式 WCF 客户端的双工回调或客户端线程

标签 wpf wcf multithreading duplex

我有一项服务,其中特定功能的调用时间比其他服务长,有时它们可​​能需要几秒钟才能返回。为了防止客户端的 UI 在发生这种情况时被阻止,首选解决方案是:

  • 使用双工 channel 并在接收到数据时简单地使用回调来更新 UI。
  • 使用单独的线程调用服务,简单的使用request-reply操作,然后在数据返回时更新ui线程。

  • 哪种解决方案更好,尤其是在互操作性受到青睐但并非绝对必要的情况下,在您看来,哪个解决方案实现和维护起来更快(更干净)?

    最佳答案

    如果您实现回调契约,那么您就不需要客户端实现多线程代码。在使用 .Net 客户端时,这可能不是一个显着的优势(因为 VS 会自动为您生成异步代理代码),但在与其他平台/语言的客户端一起使用时可能会证明是有益的。

    哪个更干净?好吧,这取决于您是客户端开发人员还是服务器开发人员。如果,正如我在您的情况下怀疑的那样,您是两者,并且您可以将 .Net 用于客户端和服务器,那么我可能会暂时避免回调。如果您暗示服务调用需要 45 秒,那么我会说回拨契约(Contract),这确实是主观的,但是如果我伸出脖子,那么我会说如果响应时间超过 5 秒那么是时候转向回调了。

    关于wpf - 响应式 WCF 客户端的双工回调或客户端线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434443/

    相关文章:

    WPF 实现 INotifyPropertyChanged

    c# - 小型 3D 应用程序的最佳框架

    c# - .NET 4 上的 WCF 流式文件传输

    c# - WCF 配置服务器以记住数据

    Java线程问题

    wpf - 如何在 Helix Toolkit ViewPort 中设置不反光的 Material ?

    .net - 使用真实 IP 加密发送到托管在服务器上的 WCF 服务的消息

    php - 用PHP编写线程安全的文件

    c - 如何使用它来杀死线程数组?

    wpf - 在wpf中使用gridsplitter分割宽度设置为*的两列