Communicate between applications over the network

952 views Asked by At

In our project, we have a number of programs that communicate with each other internal in the computer and over the internal network. To solve this we use today COM/DCOM. We think, however, that DCOM is far too complicated. How to configure the security settings change for each version of Windows.

We are therefore looking for a protocol that enables communication between our different programs on different Windows computers and who do not have as much overhead as DCOM.

The programs are written in C++/MFC and C#

Security is not so important as the system runs on a small local network completely divorced from other networks.

2

There are 2 answers

0
ninjaboy On BEST ANSWER

If you need guaranteed message delivery and support of transactions - the best option would be using any messaging subsystem. If you are completely sure that all your system will be running on Windows machines - MSMQ is your choice. It can be installed easily from Windows components setup. If you expect some nodes to be working on other OS - lurk more about RabbitMQ. There is a variety of messaging subsystems that can be used, i.e. IBM MQ or Tibco Messaging.

As it was mentioned above - I would agree that MassTransit could be a good option to work with MSMQ but will require some initial learning and architectural approaches to be followed. Open source and free to use. NServiceBus is the same beast, probably more polished, but it is not free to use. Very expensive as for me.

If you will decide to use RabbitMQ, have a look at EasyNetQ wrapper.

However, if you don't need guaranteed delivery between apps - why not to use REST services using MVC4. It is far more quick to set up and you will be able to easily support other platforms clients, like iOS or Android devices.

0
Alexey Raga On

Why not make use of NServiceBus or MassTransit? They both can use MSMQ as transport (which is very easy to enable on any version Windows).

With tools like this (or with your own wrapper on top of MSMQ) you will be able to communicate naturally by sending messages and subscribing to messages, which makes your system components nicely decoupled.

Alternatively you can use things like RabbitMQ (or even ZeroMQ if you aim for high-end performance), they both have bindings for almost any popular programming language, so your system may have components written in different languages and working on different OS.

Definitely have a look at ZeroMQ anyway when you consider options :)