Com Automation

A set of rules governing how certain ComComponents should behave in order to interact with other ComComponents.

Basically when you support ComAutomation, you follow a few basic guidelines:

To be useful to the clients, you must "make your application's object model available as COM objects (with IDispatch interfaces)."


ComAutomation is a VERY heavily argued element of COM. It was created solely to facilitate the VisualBasic language in its early incarnations.

Some people believe that ComAutomation, the IDispatch interface mostly, should really be done away with because there are plenty of other ways to achieve the same results without requiring the author of such ComComponents to incorporate functionality into each individual component. Essentially, IDispatch is a step backwards in COM, which is based on InterfaceBasedProgramming principles, because it limits environments that depend on it's presence to a single interface. There are several hacks around this, but in the end, it ruins the entire concept.

COM needs a generic run-time data-driven client interface that can call functions on normal (non-IDispatch) COM interfaces. Like CORBA's DynamicInvocationInterface?.

Exactly... and given the ObjectModel that exists for working with a TypeLibrary?, the client, say a ScriptingEngine, could actually perform all the work itself. However, an argument for IDispatch is that the server can control what named elements it supports at run-time and perform it's own, non-standard, mapping of names. Of course today we have IDispatchEx, which is actually better modeled for supporting such functionality... the catch is it extends IDispatch. =(

Legacy... ain't it fun? ;)


CategoryComponentObjectModel


EditText of this page (last edited February 25, 2006) or FindPage with title or text search