4

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

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

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

4

2 回答 2

5

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

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

于 2009-01-12T12:05:19.950 回答
0

您应该实施CallBackcontract

这是一个例子

于 2009-01-12T04:42:52.370 回答