Client-server architecture gained significant place in current networking due to ease of logical organization and maintenance. The concept of conversation between a client and a server is not hard to design, create and document.
However from the technical point of view creation of effective server software can be a long and painful process. The things can become much worse if the server needs to send the unrequested data to the client, i.e. act as a client itself. On this stage one has to redesign the complete protocol to add such possibility.
MsgConnect simplifies both processes by offering a flexible and efficient server core and by providing an independent bi-directional conversation via single connection (you just split one connection into two). Also MsgConnect provides a way to create event-driven clients and servers, and such scheme is usually more easy to design and much more scalable.
Cross-platform data exchange
Modern applications allow data management and processing not only on desktop computers, but also on PDAs (Personal Digital Assistants) like WinCE / PocketPC, Java 2ME and Symbian-enabled devices. It is very important to provide data transfer capabilities to such applications, so that the user can synchronize the data between desktop and PDA and carry the data with him.
PDA Operating System vendors usually provide a way for synchronizing data between desktop operating systems and their product, however there are serious problems with default solutions. They are caused by design flaws, functional limitations of synchronization modules and other reasons. MsgConnect is a framework that can simplify synchronization between desktop and PDA or between two PDAs (the thing not available with default synchronization solutions). Moreover, MsgConnect can be used in ad-hoc networks, where standard solutions don't work.
Peer-to-peer networks consist of many computers, where each computer can act both as a server and as a client. Some nodes can act as a server, while other nodes are technically able to be only a clients (if they are behind a firewall). Peer-to-peer networks usually have some central server that keeps a list of active nodes, tracks which nodes can act as a server and which can not, and acts as a router for requests that come from the clients to the servers that are behind a firewall.
While use of classic client-server approaches is possible, MsgConnect can be used in accomplishing several tasks:
- provide an effective transport for communications between a node and a server;
- connect two nodes in p2p mode. Note that unless both nodes are behind a firewall, direct connection between them is possible by reversing an initiator and a recipient. In this case p2p nature of MsgConnect simplifies reversed operation significantly.
Use of MsgConnect reduces the number of connections needed to exchange information between nodes.
Distributed systems usually consist of several processes running on the same or different computers and exchanging information during their work. There are no client and server parts in such system. The specifics of such system is that the parts of the system exchange information all the time.
MsgConnect was developed with distributed systems in mind. It effectively utilizes persistent connections and restores them if they are broken, making data exchange completely transparent. There exists only one connection between any two nodes, and it is used for data transfer in both directions.
Split systems usually consist of a service process running in background and the user interface process. If the user interface is not needed all the time, it makes sense to move it to the separate process. Such scheme reminds a client-server system, however in such split system both processes usually (but not always) reside on the same computer, and using network protocols for data exchange is not efficient.
In such cases MsgConnect is used to provide an effective event-driven communication between background and user interface processes. If the systems are running on the same computer, MsgConnect offers fast and simple transport that doesn't add networking overkill to your application.