MsgConnect is a software component for transparent data transfer between applications running in heterogeneous environment or parts of a single application. MsgConnect offers cross-platform protocol-independent communication framework, which takes implementation of data transfer, multithreading, data compression, encryption, packet integrity and other operations off developer's hands.
Common way to exchange data in modern systems is to use sockets. While being quite flexible, sockets are stream-oriented and provide only very basic service. You have to split the stream of data into packets yourself, and you have to deal with data compression, security, checking data integrity, timeouts and other low-level things. One more problem with sockets is that it is not always reasonable to use such complicated thing as sockets for simple task of sending a couple of bytes to the process residing on the same computer.
MsgConnect (read Message-Connect) simplifies your job significantly by solving all those low-level tasks for you. It was designed to be small, fast and effective and at the same time provide complete service. With MsgConnect you won't have to write and painfully test multithreaded server code, you won't need to split the data stream into messages and dispatch these messages. You will work with your business logic and won't go into details of data transfer.
MsgConnect belongs to the class of software called "Message-Oriented middleware" (MOM). As any message-oriented middleware MsgConnect is based on the concept of messages - blocks of data that have a fixed part with predefined fields and optionally have a data part. Using messages you can send commands to other processes and receive replies, transfer the data across multiple processes and do plenty of other useful things.
MsgConnect was born as an attempt to emulate Windows Messaging subsystem and support sending messages across the network. The idea appeared to be successful and was extended. Now MsgConnect can be used to transfer data between processes running on the same computer or across network.
While utilizing the same concept of message queue that was used in Windows, MsgConnect provides identification, on-the-fly compression, encryption and integrity checking of the message being sent. With MsgConnect you don't transfer data, instead you send messages (which can contain generic data).
You use methods similar to Windows' messaging subsystem - SendMessage to send a message and wait for result, PostMessage to just send data, SendMessageCallBack to send a message and be notified when result arrives.
Having taken the concept from Windows Messaging subsystem, MsgConnect however is not limited by Windows only. There is nothing in MsgConnect that prevents it from being ported to different platforms.
Implementations are available for Windows, .NET, Android, MacOS X, iPhone/iPad, Java™ (SE/EE, ME), Linux, FreeBSD, QNX, Windows CE / PocketPC platforms. For details check the list of supported platforms and development tools.
With MsgConnect you will be able to build heterogenous systems and networks ranging from Unix servers to handhelds and cell phones.
MsgConnect is not limited to TCP protocol to work. MsgConnect utilizes pluggable transports scheme, where you can add one or more transports to single Messenger object and send messages via any of those transports almost transparently. The transport is chosen based on the destination address of the recepient (the address includes the name of the transport to use).
Currently MsgConnect includes TCP and UDP socket, HTTP and MemoryMappedFile transports.
Peer-to-peer and client-server modes
Most of current middleware libraries are based on client-server scheme, where the client initiates connection, sends commands to the server and receives replies from the server. Such scheme is not suitable in cases where there are no servers and clients in the distributed system or when the server needs to send a command to the client. In such cases the developer needs to create another client-server connection in opposite direction or change the conversation scheme.
Unlike those client-server solutions each node in distributed system that uses MsgConnect can act as both client and server. MsgConnect can use single connection to transfer messages independently in both directions. This approach keeps classic client-server scheme available and also allows building peer-to-peer networks, parallel and distributed systems.