我有一个特定的服务,其中特定的功能需要比其他功能更长的时间,有时他们可能需要几秒钟才能返回.为了防止在发生这种情况时阻止客户端的UI,首选解决方案是什么:
使用双工通道,只需使用回调即可在收到数据时更新UI.
使用单独的线程来调用服务,只需使用请求 - 回复操作,然后在返回数据时更新ui线程.
哪种解决方案更好,特别是在互操作性受到青睐但不是绝对必要时,并且您认为哪种解决方案更快(更清洁)的实施和维护?
如果实现回调契约,则无需客户端实现多线程代码.在使用.Net客户端时,这可能不是一个显着的优势(因为VS会自动为您生成异步代理代码),但在与其他平台/语言的客户端合作时可能会有所帮助.
哪一个更干净?嗯,这取决于您是客户端还是服务器开发人员.如果,正如我怀疑你的情况,你是两个,并且你可以只使用.Net作为客户端和服务器,那么我现在可能想要避免回调.如果你暗示服务呼叫需要45秒,那么我会说回叫合同,这确实是主观的,但如果我要坚持下去,那么我会说如果响应时间超过5秒那么是时候转向回调了.