When it comes to the Indigo enabling of a COM+ Interface, you have 4 options. 3 of which are very automated and by automated I mean they setup the service contract for you, with an initial default configuration (i.e. the bindings etc..) which can be altered, but it also important to point out there is a 4th option requiring some manual handcrafting of code etc.., which I will cover later, as it is an advanced option.
I breakdown the 3 main/automated options that are based on the usage of the ComSvcConfig.exe tool in the following way:
– /hosting:complus – This leverages the COM+ hosting process and therefore requires explicit application activation. i.e. the COM+ application must be a Server application, with the “Run as a NT service” enabled or perhaps manually started, with “Leave running when idle” enabled
– /hosting:was – While in reality this is one option, I currently like to think of it as two distinct modes/options, as there are considerations with how the activation of the COM+ is configured.The basics of this option is that the “Indigo” service for the Interface is now hosted by IIS rather than COM+. So for this option to be used, you obviously have to have a Web directory setup etc…The reason that I like to think of this option as two distinct modes/options, is that there are differences to how this option works and it is dependant on the Activation setting for the COM+ application. When the COM+ app is configured to be a library, then IIS becomes the full/complete host (In-Proc hosted), but when the COM+ application is configured to be a server application, the COM+ application is Out-Proc, hosted by DLLHOST.EXE and therefore will incur the performance cost of cross process hops (i.e. marhsalling, context switching etc..) when messages arrive or are sent to/by the service contract that is exposed as a representation of a COM interface. It is important to note that for either of these option for WAS hosted services, WAS will handle the activiation in both cases.
When it comes to the mapping of Indigo services to COM object, as pointed out in the current Indigo Beta 1 RC1 documentation that is online and available at this link,
When an interface on a COM+ component is exposed as a Web service, the specification and contract of these services are determined by an automatic mapping to be performed at application initialization time. The conceptual model for this mapping is as follows:
As one would expect when moving from a Distributed Object world, with distributed object references etc..; to a world of message orientation, with explicit declaration of schema and contract, there are going to be aspects of code that can not be handled in a automated fashion and/or cannot be handled at all, as it would require the sharing of class/implementation.
Example of these would include the following:
Some restrictions on the what can exposed as a Indigo Beta 1 RC1 service are as follows (from documentation at this link):
Moving on to some examples of exposing COM+ interface from the Market sample, as Indigo services ……………………….
– Paul