1
votes

I want to dive into the whole diversity of tools which provide connection between programs over the network.

To clarify the question, I divide it on subquestions:

  • Why some groups of programs (or specific tools/frameworks/approaches with programming languages where this frameworks can be used) were popular in each period of time? (I expect description of problems which were solved, description of tools, why those tools are considered as best solution to those problems at that time, why some tools lost popularity)
  • What is the entire history of software communication over the network? (tools/approaches popularity precisely to decades)
  • What are the modern solutions to this problem?

I can distinguish only two significant approaches.

  1. RPC, RMI and their implementations (I saw this, but it is about concrete problem and specific tools to solve this problem, I want to see the place of this problem in the whole picture of interconnection programs over the network. I heard about implementations: ONC RPC, XML-RPC, CORBA, DCOM, gRPC, but which are active now? which are reasonable to use? which are preferable and why? I want answers not to be opinion based, so I accept answers like "technology A better than technology B for problem X because ..." only if there is reliable research/statistics or facts). I heard that RPC and RMI were popular 10 years ago. Are they still?

  2. Web services: REST, SOAP.

Am I miss something? Maybe there are some technologies which solve problem completely new way? Maybe there are technologies which can be treated as replacement to RPC(RMI) and Web Services? Can we replace RPC(RMI) by REST for any task? Can we replace RPC(RMI) by REST only for modern tasks? Should I separate technologies not as RPC and Web Services, but in some other manner?

3
Robert Orfali's book "The distributed objects survival guide" from the mid nineties will give you some background on the history of the older technologies. It is also fun reading :-)Wolfgang Fahl

3 Answers

0
votes

As a partial answer, I can give you my feedback on the use of RabbitMQ. As explain here, it provides a lot of different ways to use it :

  • RPC by implementing a "callback" queue
  • One to one, one to many routing strategy to propagate your events through your whole infrastructure and target the right destination.

It comes with the ability to persist messages to avoid loosing data when a crash appears but also with some plugins to increase possibilities (e.g x-delayed plugin)

This technologie written in Erlang is powerful and is a must try in term of communication between programs.

0
votes

To your question „Am I missing something“: yes.

Very popular communication patterns are the so-called Event-Driven or Message-Driven protocols. This type of protocols are often used in distributed systems such web applications, microservices and IoT-Environments. The communication is complete asynchronously and allows building scalable and loosely coupled systems.

There are many different frameworks and methods for Event-Driven systems like WebSockets, WebHooks, Pub-Sub and Messaging-Librarys like AcitveMQ, OpenMQ, RabbitMQ, ZeroMQ and MQTT.

Hope this info helps for your research.

0
votes

Try finalmq, it is easy to use and supports plain TCP protocols, HTTP and MQTT together with Google's Protobuf or JSON encoding. The communication is bidirectional. Also the server can send requests to its clients. Check the examples helloworld and timer and also the readme. You will love it. You can find it at https://github.com/bexoft/finalmq