Binding with ZeroMQ
I have now arrived in the middle of the third week and I can say that I’m getting better at settling into the Irish reality that the Summer of HPC is giving me the chance to live. The initial work was mainly focused on a feasibility study and analysis of the requirements for the development of the project, and now I can claim to have the ideas a little lighter than at the beginning, although the path remains dynamic and open to changes (just like I like it!).
One of the first tools that I began to study was ZeroMQ which, citing the guide, aims to be a connector between different languages in order to convey information within ad-hoc prepared socket. This is quite convenient as it is open-source, it is widespread among many languages (and is easily extensible also to those for which there are no implementations) and through a series of compromises accurately described it allows to realize many communication patterns that don’t overlap code made, but just placed nearby, keeping the reading clear and intuitive.
The example that I want to offer is the classic example of computer kind, a very simple program on the “Hello, World!” style written in C: the server remains in constant expectation of the initial greeting by the client (-> Hello) which receive itself a response (-> World), all iterated for ten requests from the client. The example has been made following the pattern Request-Reply, where the server creates the connection (using bind() function) to which the client connects (via connect() function) to kick off the exchange of messages. Once it finishes its action, the client destroys the resources created (trough close() and ctx_destroy() functions) specifically for communication and ceases to operate.
ZeroMQ was strongly backed by Pieter Hintjens and created by iMatix, can take advantage of a strong network of online enthusiasts and developers created with the passage of time and is now at version 4.1.2, which was released in June. Next to the main there are many branched projects from secondary branches , to try to cover as many languages as possible: to date we can count supports considerable for C, PHP, Python, Lua, C ++, C #, CL, Delphi, Erlang, F #, Felix, Haskell, Java, Objective-C, Ruby, Ada, Basic, Clojure, Go, Haxe, Node.js, ooc, Perl, Scala, and many others.
If reading this article has raised any question, I remain at your disposal through the platform of the comments provided below. Good week to all!