Wednesday, June 27, 2007

cURL breaths life to old system

In my previous post I hinted that I would next write about how to get several legacy systems to send data to a modern .Net based application when the legacy systems only know how to talk to each other. This problem is based once again on the aged Progress applications that company A uses.

The Problem: The native language lacks the ability to make any network based connections, unless it is to a database that is of the same flavor. So what is a person to do when they want to integrate with more modern systems, many of which are being built using WCF or plain old web services? You could pack your bags and go home or better yet, start injecting more custom C code into the old dog and teach it a few new tricks.

Possible Solution (Option 1): If you need to talk to plain old web services that operate on GET's and POST's then cURL,or more specifically libcurl, is a very logical choice. cURL is just amazing; a command line tool that can do everything that a web browser can do but without the GUI. libcurl gives you the ability to put this power into your own applications. So with option 1 a libcurl based API was introduced into the legacy language.
This initial introduction of libcurl was actually done by a previous employee a while ago but it was time to update the API and support some new features. One feature that was desperately needed was support for SSL based connections (provided by the OpenSSL libraries). The next feature which we needed was the ability to pass authentication credentials with the POST requests; specifically credentials to access Windows domain systems. (I didn't mention it, but the legacy applications all run on HPUX.)
So now we have the ability to POST data to any standard web service via http/https including optional login credentials. This works very well for situations where the communication can withstand or requires being synchronous.

Next time... Possible Solution (Option 2): A JMS based messaging infrastructure...

No comments: