2

我正在构建一个 ASP.NET 服务(一个简单的 aspx),它需要对 ZeroMQ REP 节点进行 REQ 调用。

所以我必须使用 REQ/REP 模式,但我无法找出在 ASP.NET 管道中初始化 ZeroMQ 上下文的正确方法。

此外,我可以在不同的 ASP.NET 线程之间共享一个连接吗?如果可以,如何?

编辑:经过一些研究,在我看来,专用线程中的inproc路由器应该是可行的方法,因为它可以处理sincronization。

但更多的问题出现了:

  1. 这种inproc节点的另一端应该是DEALER?如果是这样,它应该连接到 REQ 节点吗?或者它应该绑定到一个 tcp 端口,我应该编写 REP 服务器节点来连接它(后者会有点麻烦,因为我可以让不同的服务器公开服务)?
  2. 作为替代方案,在一端构建一个绑定到 ROUTER 套接字的 inproc 节点并在另一端与 REQ 连接是否正确?如果是这样,我是否应该对节点进行编码,以便它处理每条消息的手动信封,以便能够将响应发送回正确的请求线程?
  3. Application_Start 是正确的管道点来初始化处理此类路由器的线程吗?

目前,连接到 REQ 服务器的 ROUTER/DEALER inproc 节点看起来是最好的选择,但我不确定是否可以从 DEALER 套接字连接。但这仍然只是一种猜测,可能是完全错误的。

4

1 回答 1

0

zmq_socket手册指出:

ØMQ 套接字不是线程安全的。应用程序不得使用来自多个线程的套接字,除非将套接字从一个线程迁移到另一个具有“全栅栏”内存屏障的线程。

于 2013-03-20T10:34:53.120 回答