COM Internet Services is a joke. Don't waste your time with it. DCOM is totally
useless for Internet purposes. However, I do have a solution. First, let's
examine the problem:

DCOM clients connect to the DCOM server over port 35 and request a dynamically
assigned port for a DCOM session. DCOM server responds with a port number.
The client then initiates a DCOM session over that port. Problems: the DCOM
server's firewall has to permit inbound traffic on port 35 and also on a
user configurable range of ports (default range: something like ports numbered
2K to 64K). This is generally unacceptable to most firewall folks.

COM Internet Services (CIS) simply uses port 80 for the handshake instead
of port 35. It still requires a dynamically assigned port.

And worse still, both standard DCOM and CIS both utterly if you introduce
proxy servers, network address translations (NAT), or firewalls. There is
no workaround to make DCOM work for clients behind proxy servers, servers
using NAT, or most firewalls. Some firewalls flat out do not support DCOM
and cannot be configured for it under any circumstance. DCOM sucks for the
Internet.

Fortunately, there's an easy solution: Remote Data Services (RDS). RDS is
installed with MDAC, so it is very likely already on your clients.

RDS works just like DCOM, but it can use HTTP or HTTPS. It works great with
firewalls, clients behind proxy servers, server NAT, and most other typical
Internet environmental factors.

Let's assume Visual Basic, but also works with C++ or any other COM-based
language:

Sample code snippet for the client application:

Dim ds as RDS.DataSpace ' requires project reference for RDS
Dim obj as Object ' RDS doesn't support early-bound references
Set obj = ds.CreateObject("https://app.mydomain.com", _
"ServerProject.Class")

You can now use the obj object reference just as you would a DCOM object
reference. There's a few limitations:
* RDS objects must be stateless
* RDS doesn't support callbacks (but DCOM doesn't either in an Internet environment)

You don't have to make any code changes to the server object. You do have
to configure the component though. You have to add any ProgID's to be referenced
(e.g., "ServerProject.Class") in the ADCLaunch key in the registry. You also
have to have IIS running on app.mydomain.com. ServerProject.Class can be
a class in an MTS object, an ActiveX exe (or maybe even in a dll in-process
with dllhost.exe - I haven't tried that one).

We found that RDS is about equal in speed with DCOM.

Hope this helps.

Tom Shreve

"Bernard Trigaux" <bernard.trigaux@compaq.com> wrote:
>
>Is there anybody in the field with experience in COM Internet Services (CIS)
>provided as from SP4 by Microsoft ?
>CIS is explained in a white paper from MS.
>
>Specifically, we would like to know :
>- HTTP is the documented transport. Is it possible to use HTTPS as well

?
>- DCOM provides encryption functionality. How to compare against SSL-type
>security ?
>- How robust, stable and performant is CIS ?
>
>We will conduct some tests with our customer. But still we'd like to hear
>from other experiences.
>
>Thanks for your help.