Alternatives to COM+
_wintermute writes "For various reasons, I have been examining M$ COM+ Services under Windows 2000. It all seems rather impressive (which smacks of heresy, obviously). COM+ basically integrates COM with Microsoft's Transaction Server, and handles concurrency & threading, security, transaction management, object pooling, and queuing (very handy for a whole range of Internet services). Everything is integrated into W2K and it all seems to work very well. Which seems too good to be true. I have been grinding away at it for months without even a single failure. I was wondering if similar services exist on other platforms and what they were like? Are there other platforms that capture this much functionality? Do we actually need all this COM+ stuff anyway?"
http://www.kegel.com/linux/mslinuxinde x.html
This was from last year I believe, so maybe there were some integrations since, but I doubt it. (Search for COM in the article, it's not stricly about COM.)
As for who needs COM... Certianly nobody I know of. :-) But if neccersay we can
COM on Microsoft is just crap IMHO... Why bother with it...?
------- What exactly is real?
A good software developer uses the tools and platforms that best fit the task at hand, much as a good architect would use the materials that best suited the specific area of the building that he was designing. The person who posed the question stated that COM+ worked well and possessed many positive attributes; it considerably simplified the programming task, while not extracting any cost in stability. Obviously, COM+ works well for the application that the person was using it for. It is blatantly unprofessional to use an inferior product or tool when one already exists that performs the required task superbly; to do so smacks of bias and illogical prejudice based solely on the origin of a product that does not do justice to the needs of the consumer.
As far as I know at least, CORBA is the competition to DCOM, now COM+.
Not having used either technology I can't say for sure...
The official CORBA FAQ has a feature list that is similar to COM+ in key areas:
http://sisyphus.omg.org/getting started/corbafaq.htm
Yes I develop for Windows. I enjoy it too.
--
I'd install FreeBSD before I'd install Linux.
You might want to look at CORBA which is the open standard equivalent of COM(+). The newer versions have stuff about services in. Remember it's only a standard though, so finding a suitable implementation for you is where the real problem lies.
Your're using it, right? Do you need it?
Concerning the alternatives, depending on what you need, there's things like RPC and CORBA, or take a look at the KParts Components of KDE (Gnome apparently has something similar). If you need COM functionality on a non-M$ Plattform, Iona's Orbix/OrbixWeb Corba has an adapter from COM to Corba and I would assume other vendor's ORBs have similar functionality.
Get an open source CORBA implementation:
1. MICO (Mico Is CORBA): An implementaion in C++ with a nice & very "easy to use API". But it is sloooow. From another point of view you surely can't say that COM+ is fast.
2. ORBit: The GNOME CORBA implementation. The best implmentation around. It is the one which is used in the GNOME project (e.g. Bonobo which is based on CORBA). It is fast and nice. The only thing is that it is written for C (not C++), using the OO model of GTK+. Now, there is also an ORBit C++ project, check it on the GNOME CVS, I don't know the development status of this one.
COM+ SUCKS!!!
CORBA's great stuff, but the specs were so sloppy that different ORBs from different companies usually didn't work together, making it a real pain to build extranets or complicated intranet apps that spanned multiple technologies across an enterprise. CORBA 2.3 finally provided the Internet Inter-ORB Protocol (IIOP), which tries to codify a standard way for different ORBs to communiate together. The major vendors have been a little slow to adopt it, but they're coming around.
However, if you're thinking about getting into CORBA you should be aware that the OMG (CORBA's parent organization) is moving towards adopting the Java 2 Enterprise Edition's communications method, i.e. RMI over IIOP. They realize that there are already far more Java programmers than there are CORBA programmers, even though CORBA's been around much longer. So, they're embracing some of the Java standards in order to build their market.
In short, if you're going to make a serious commitment to CORBA you should get ahead of the game and learn Java 2, including the Java IDL and EJB packages. By the time you've grokked these technologies the CORBA marketspace will have caught up with you and you'll be sitting pretty!
There is no free implementation of CORBA that
does all the things that com+ does. For message
queueing, use IBM MQSeries, for transaction mgmt,
use BEA Tuxedo, for connection sharing, use any
commercial CORBA implementation. Thus, MS is
very good at providing superb services on their
own platform (which is probably going to be stable
as the "datacenter edition" where only certain
hardware and drivers are allowed). CORBA et al
are a similarly good solution in a cross-platform environment
Actually, what you described is very standard stuff in the application server market. It may sound like new coming from Microsoft, but it's not. Most CORBA ORB's will provide you with all this, but you'll find the fastest growing market for this technology is Java2 Enterprise Edition servers like Weblogic and iPlanet Application Server.
Of course, there's the secondary matter about how easy any of these platforms is to actually get something done, and I'd have to say, J2EE wins hands down here. You can download a trial edition of Weblogic from their website. Give it a try.
sigs are a waste of space
This is too easy, use XPCOM - it stands for Cross-Platform COM (Component Object Model) XPCOM Documentation. XPCOM is binary compatible with COM, and uses XPIDL - Cross platform Interface Definition Language. XPCOM is everything COM is plus Cross Platform. Don't let anyone tell you to forget about anything like COM for Linux! Mozilla uses (created) XPCOM and is used on all sorts of Unic variants - and the same component can be used on any computing system that the core XPCOM architecture has been ported to. Currently this consists of the main computing platforms - Mac, Windows, Unix and possibly OS/2, Be and others I don't keep track of.
Joseph Elwell.
We looked at COM a while ago, before all the COM+ stuff was available and it was seriously brain-dead. Although it may be better now, if you plan on doing any cross platform development, take a very good look at CORBA. We use Visigenic/Borland/Inprise or whatever its called this week. Their marketing is terrible, but the product is great stuff. Adding about 20 lines of code makes it network/cross platform ready. We use it on both Solaris and NT and it's fast and reliable. Just don't get too crazy with lots of embedded objects and remember that each CORBA function call is actually a data transfer over a socket connction. Too many remote calls and the performance degrades. (We get 50ms response on our local network.) Other technologies, like Java RMI, and direct sockets are either slower, don't work, or are a pain in the arse to develop. Forget get about cross platform RMI. And beware the applications server vendors, they can lock you in to there stuff, which can be a pain to program around if it doesn't do what you need.
XPCOM is a very simple framework that lacks lots of the glue that COM provides. I would assume COM+ provides even more. So while XPCOM might be a good starting point, it doesn't really compare to a COM or COM+ framework (yet).
From a mozilla document:
COM -- Isn't that a scary Microsoft thing?
No on both counts, actually. COM has its origins in Apollo's NCS system, and was later developed by Digital and Microsoft as part of their OLE/ActiveX architecture. We use a very small subset of COM that we call "XPCOM" ("XP" stands for cross-platform) for the new Plugin API that is essentially a method of using abstract base classes, and 3 simple but powerful methods:
QueryInterface: Deals with interface versioning by using universally unique interface IDs.
AddRef and Release: Deal with reference counting the object so that the system knows when it can deallocate it.
That's it. Using XPCOM in the plugin context is really quite simple. We don't make use of any of the COM factory constructor mechanisms, object aggregation, OLE interfaces, or the registry to find and load components. Plugin DLLs are still searched for and loaded by Mozilla from the plugin directories where they've always been found.