Integrating Indigo with COM applications

In this blog I want to give you some insight into how Indigo is integrated with COM/COM+ applications. COM/COM+ has been at the heart of Microsoft's application server strategy for quite a while.VB COM applications have been one of the most famous breed of applications in any Microsoft shop before the advent of .NET. Indigo architects have not been blind to these facts, from the word go a lot of thought and energy has been put into action to smoothen migration of these applications to Indigo. Indigo integrates with COM/COM+ applications in the following ways

  • Exposing COM+ applications as Indigo end points

Indigo ships with a command line tool called COMSVCConfig. This tool can be used to expose existing COM+ applications as Indigo services. For example to expose the IBookFinance interface of a BookSample COM+ application you can run the following command.

    ComSvcConfig /application:BookSample /interface:BookLogic.BookSales,IBookFinance /hosting:complus

The /hosting commandline parameter can be used to specify if you want to host the Indigo service inside the complus (dllhost.exe) or WAS (Windows Activation service). Once a COM interface is exposed as an Indigo service any Indigo client application can perform a secure, reliable, transacted (SRT) call to the service over a variety of protocols that Indigo supports like TCP, HTTP etc. What goes on the wire is SOAP.

  • Existing COM client applications can communicate with the new Indigo service

Indigo ships with a moniker that enables existing COM lient applications to talk to Indigo services. The moniker acts a broker in between the COM client application and Indigo service. What goes over the wire is pure SOAP. The COM client application can also choose the protocol used by the moniker to communicate with the service (Http, TCP etc). Here is an example of invoking the moniker.

Dim BookFinanceService As IBookFinance
Set BookFinanceService = _GetObject ("service:address=net.tcp://INTLIVE/{4a226b7a-aa77-419d-99ff-5b25f94078f3}/{e4e15887-
         b180-3e96-aedd-a6fd7b011b53}/{5d9a0467-affe-3250-988d-24b439686656},binding=customBinding,bindingconfig=TcpBinding")

What does this mean to you?

First of all you can start migrating you COM applications to Indigo in a phased manner. During the migration phyase you can have a combination of both Indigo client and COM Servers or Indigo Services and COM client applications. Adding Indigo support to COM applications enables sceanrios where the COM client applications can communicate with the service across firewalls and over internet. COM components today have this drawback where you have to go through a lot of hoops to enable clients to communicate with the service over firewalls.

What are the disadvantages?

Well I know what you are thinking Performance!!. In COM world you are used to pretty good performance because the DCOM packets are pretty compact when compared to SOAP on the wire. Several performance benchmarks have been done in the recent past to compare Indigo's performance with System.EnterpriseServices (.NET API for COM+)and it has been inferred that Indigo's performance is very much comparable if not better to System.EnterpriseServices. These results will be published in tune with Indigo relases and I will keep you all posted regarding the same.

-AnandRaj