我正在开发一个新的客户端-服务器应用程序 (.Net),并且到目前为止一直在使用 WCF,它非常适合应用程序的请求-响应方法。然而,我被要求用基于套接字的解决方案替换它,部分是为了支持非.Net 客户端,以及未来的 pub-sub/broadcast 需求(我意识到 WCF 是有能力的,但这个决定背后还有其他驱动因素)。在编写自己的异步套接字解决方案时惨遭失败,我现在正在研究 ZeroMQ。
我的客户端应用程序有几个后台线程,它们会定期从服务器请求数据。此外,某些 UI 操作(例如,单击按钮)可以触发向服务器发送消息。WCF 使这变得简单——代码只是在单例 WCF 服务代理上调用了相关方法(实际上我使用 Castle Windsor WCF 工具,它为我提供了异步调用功能,但这可能与我的问题无关)。
我不太确定这种方法将如何转化为 ZeroMQ,尤其是在管理套接字方面——我对 ZeroMQ 非常陌生,并且仍在阅读指南。我是否正确地说每个线程都需要一个单独的套接字(即两个 b/g 线程和 UI)?套接字生命周期怎么样 - 我是在每次想要发送/接收时创建一个(可能效率低下),还是在线程启动时创建套接字并在线程的整个生命周期内重用它?