If you have developed Internet-based applications using COM
components on the back-end then you've experienced this limitation:
Client and server communications cannot use straight DCOM so you must
look for alternatives. There are several solutions available each
with its strengths and weaknesses and non offering a good-enough
solution.
For example, you can have the client send a GET or POST request to
as Active Server page on the server. The ASP page would then call
your server-side components and send output back to the client in the
form of a new HTML page. This works well for an application with a
few pages and low interactivity requirements. For highly complex,
highly interactive user interfaces, you do not want to request a new
page from the server with each data request. For example, if you have
a complex page with several UI elements including an ActiveX control
that displays some data. It would be inefficient to reload the whole
page just to refresh the contents of that control.
Next, you may consider using Remote Data Services (RDS). Besides
being used for remote data access, RDS has this obscure feature
allowing you to call server-side components over HTTP. But because it
is obscure, you may not feel comfortable about using it in an
application that will be around for a while - I wasn't. In addition,
RDS is limited to calling COM components only on the server from
which the page was downloaded. This limitation exists for security
reasons, but it can sometimes be too restrictive. See "Remote Data
Services in MDAC", June 1998 in the MSDN library for more information
on RDS.
Instead of RDS, you may consider using COM Internet Services. CIS
allows using DCOM over the Internet by using a Tunneling TCP
protocol. However, CIS uses HTTP only for initial connection setup
then it uses DCOM over TCP (still using port 80). This means most of
the cases it will work with firewalls and proxies, but it will not
work if they disallow non-HTTP traffic. This limitation may not be
severe in a controlled environment, but for a true Internet
application, or an application being sold to customers, you have
little control over network configuration and setup.
Ideally, you would like to call COM components from your
browser-hosted client using HTTP and without the need for installing
a server type library on the client.