ACE+TAO Opensource Programming Notes/Tying it all together
Over the last 10 years, my usage of CORBA technologies has included [Orbit], [JacOrb], and [ACE+TAO]. Of the three technologies, ACE+TAO has been the most useful as it has been the most portable among platforms, and the most feature rich. The promise of CORBA of course is that you put in some IDL, run it through the IDL compiler, and out comes a mostly written client server application. As you've seen with the previous examples, this is mostly a stretch goal for the existing spec. The only area where this applies is for the RPC style applications. For everything else, you, the programmer, are responsible for doing quite a bit of non-network related CORBA internal programming. Perhaps, some day in the distant future, this spec can be widened to the point that many of the desired features can be accessed from the IDL. That being said, it is quite nice not to have to worry about the networking aspect of programming. It's also nice to be able to rely on the POA to manage objects, even if this is only a slight improvement over modern C++ template patterns such as those found in the STL and Boost.
The warts of this particular implementation of a committee designed spec should in no way detract from its substantial advantages, most notably, its performance in relation to other technologies, and relative ease of programming, again in relation to comparable technologies. For example, a white paper available from the ACE+TAO website details the performance advantage in using TAO's CORBA to [Microsoft's .Net protocol] as being 40x faster, and a comparison of [to J2EE performance and features] (if a bit dated) is generally favourable to CORBA.
As the examples in this Wikibook illustrate, using TAO's CORBA to implement a programming environment to distribute objects and events demonstrates, performing most tasks in a distributed manner isn't that hard. Using TAO's CORBA for a robust, configurable, error free implementation makes it that much more desirable, and when you consider the performance advantages of using this technology as glue for your various programming projects, CORBA may well start to appear as the preferred middleware technology for most of your needs.
To make the examples in this book, I used [KDevelop] as the programming IDE. I used this on Linux, and then used Microsoft's Visual C++ for the MS environment. Generally, I'd do all my development first under Linux as developing and deploying services under Linux is much easier. This is not to say that testing out the examples shouldn't be done under Ms Windows. Problems you will run into under Windows include the usual issue with lack of support for server based applications. If you look under the ACE directory in the TAO distribution, there is an example of a Microsoft server which I believe I've gotten to work in the past.
If you're going to use [KDevelop], or a similar [autotools] based IDE, then, you'll want to put the appropriate libraries in the LDFLAGS line of your project. If your IDE doesn't support a GUI field to set this, then edit your Makefile.AM file so that the <your project name>_LDFLAGS variable has the following items in it: -lTAO_PortableServer -lTAO_CosNaming -lTAO_AnyTypeCode -lACE -lTAO , plus any database libraries you might need.