因此,正如我在上一篇文章中所问的那样,我希望能够制作用不同语言编写的程序或函数以在它们之间进行通信。
我最近遇到过Zeromq,我试图弄清楚这是否对我有帮助,因为它提供了一些套接字。例如,zeromq是否可以在以python编写的程序与以C ++编写的程序或函数之间交换数据(或传递参数),或者它的功能完全不同?
最佳答案
答:哦,是的,正是ZeroMQ
或nanomsg
框架的强大功能
这两个都不是套接字,而是在零-*的上下文中创建的行为-零担是可缩放的形式化通信模式框架的设计,开发和微调以满足要求的勇气。
这将使您能够组装自己的快速和智能消息传递层。
问:下一步最好的方法是什么?
尽管有第一印象,但请不要忘记有关套接字和多线程同步技巧的任何知识。
是的,宁愿忘记并在“绿色领域”上建立新的理解。
以Pieter HINTJENS的书“ Code Connected,第1卷”(可在PDF中访问)为例,花了几周的时间来了解动机和典型错误,Pieter已将其扎入这个ZeroMQ必读的圣经中。
如果您没有或完全错过大图的整个上下文,那么代码段将很危险。
相信我。我不能给你更好的建议。您可以查看我在ZeroMQ和nanomsg上发表的其他文章,以了解两者之间的区别。
您肯定会从这本书中受益,并且ZeroMQ将为您提供许多您永远不会(并且相信我永远不会)准备从头开始进行编程的功能。功率是如此之大(如果充分利用)。nota bene
对于现实世界中的进程间通信,有一个小问题需要注意。各种ZeroMQ版本的互操作性。是的,ZeroMQ的功能是巨大的,但是,有必要保持消息传递层中内置的版本控制,以解决某些平台没有可用的“较新”版本更新路径的情况。通过将交易系统与某个组件重新集成而遇到了此问题,该组件必须早于zmq.__version__ == 2.1.11
,而最近的版本远高于14.x.y
,以确保端到端100%向下兼容。
尽管如此,整体潜力仍然巨大,坚持不懈并完成工作是有意义的。总帐。