http://www.perlmonks.org?node_id=90601


in reply to Client-Server system

That's a very interesting problem you are looking to solve. There is an open source instant messaging platform called Jabber. It works similar to AIM or ICQ, but is free, and you don't need to use any one company's server, you can set one up on your own.

What is intriguing about this is that the same way you and I can talk to each other via instant messages, so could any two given applications. A way some are looking to use Jabber is very similar to what you are looking for -- to allow multi-tier applications to talk to one another.

You would simply have your client and server log in to the Jabber server using a particular ID. Once they know each other's Jabber ID (JID), they can speak to one another.

There are several advantages to this approach. First, you don't have to worry about any of the message passing details. Client libraries have been developed already for many popular languages, including Perl, Python, PHP, C, etc (the Perl library is known as Net::Jabber). You simply make use of various API calls to send and receive messages. Also, since there are so many supported languages, it doesn't matter what language you write your programs in. Of course, we all prefer Perl here.. but in some cases, life isn't that easy, and for one reason or another we need to use another language. With Jabber, no problem. It also has an open API, uses XML for message passing, and has a company backing it, showing that it won't be going out of style any time soon.

For communicating between your applications, you could use SOAP::Lite or something similar, and embed those within the Jabber XML messages.

There are two versions of Jabber -- an open source an commercial version. The commercial version has a few extra features, and is more scalable. You could choose between the two, depending on your needs.

One big problem you may run into then, is that you said you are running on Windows 2000/Mac. Jabber only runs on UNIX/Linux. Now, with Jabber, you could set up a Linux box in the corner to run the Jabber server on, and keep everything else on your Windows and Mac boxen. But if you are unable to do that, you'd have to wait until the Windows port is finished, which is supposedly under way.

At one point in time, there had been a project under way known as JAM -- Jabber as Middleware. It was designed to take Jabber to the next level as far as Middleware goes. Unfortunatly, the people working on it just haven't had time to put into it, and it appears to be on hold at the moment. If you're interested in pushing, check out the Jam Dev Mailing List. Do be sure to look through the archives first to get a better idea what it is (and dizzyd is the ring leader), but you can also send a message to see if anyone is still alive :-)

Good luck!
-Eric