我有一项服务,其中特定功能的调用时间比其他服务长,有时它们可能需要几秒钟才能返回。为了防止客户端的 UI 在发生这种情况时被阻止,首选解决方案是:
哪种解决方案更好,尤其是在互操作性受到青睐但并非绝对必要的情况下,在您看来,哪个解决方案实现和维护起来更快(更干净)?
最佳答案
如果您实现回调契约,那么您就不需要客户端实现多线程代码。在使用 .Net 客户端时,这可能不是一个显着的优势(因为 VS 会自动为您生成异步代理代码),但在与其他平台/语言的客户端一起使用时可能会证明是有益的。
哪个更干净?好吧,这取决于您是客户端开发人员还是服务器开发人员。如果,正如我在您的情况下怀疑的那样,您是两者,并且您可以将 .Net 用于客户端和服务器,那么我可能会暂时避免回调。如果您暗示服务调用需要 45 秒,那么我会说回拨契约(Contract),这确实是主观的,但是如果我伸出脖子,那么我会说如果响应时间超过 5 秒那么是时候转向回调了。
关于wpf - 响应式 WCF 客户端的双工回调或客户端线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434443/