正如我在上一篇文章中所问的,我希望能够使用不同语言编写的程序或函数在它们之间进行通信。
我最近遇到了 Zeromq,我试图弄清楚这是否可以帮助我,因为它提供了某种套接字。 例如,zeromq 可以在用 python 编写的程序与用 C++ 编写的程序或函数之间交换数据(或传递参数)吗?或者它的功能是否完全不同?
ZeroMQ
或 nanomsg
框架的力量这两者都不是套接字,而是在零-*的背景下创建的行为——一组勇敢的格言,S可扩展F正常C沟通P阿特恩Framework 的设计、开发和微调以满足。
这将使您能够组装自己的快速且智能的消息传递层。
不管你的第一印象如何,只是忘记你所知道的关于套接字和多线程同步技巧的任何东西。
是的,宁愿忘记并在“绿色领域”上建立新的理解。
拿 Pieter HINTJENS 的书“Code Connected,第 1 卷”(可在 PDF 中访问)并花几周的时间来理解 Pieter 为这本 ZeroMQ 必读圣经所写的动机和典型错误。
代码片段是危险,以防您没有获得或完全错过更大图片的完整上下文。
相信我。我无法给你更好的建议。您可以查看我关于 ZeroMQ 和 nanomsg 的其他帖子,看看其中的区别。
您一定会从这本书中受益,ZeroMQ 将为您提供许多您永远不会(相信我永远不会)准备好自己从头开始编程的能力。 力量是如此巨大(如果重新利用得好的话).
nota bene
对于现实世界的进程间通信,有一个小问题需要注意。各种 ZeroMQ 版本的互操作性。是的,ZeroMQ 的力量是巨大的,但是,有必要在消息传递层中保留内置的版本控制,以便解决某些平台没有可用的“较新”版本的更新路径的情况。通过将交易系统与组件重新集成来解决这个问题,其中旧的
zmq.__version__ == 2.1.11
是必要的,而最近的版本远高于 14.x.y
,以确保 100% 端到端向后兼容。
尽管如此,整体潜力仍然巨大,坚持下去并完成工作是有意义的。总帐对此。