DCOM 需要在客户端和服务器计算机上注册服务器

DCOM needs to register server on both client and server computer

我在Delphi2010年写了一个DCOM服务器和一个调用服务器的客户端。为了能够 运行 客户端与服务器机器在不同的机器上,我需要在两台机器上注册服务器,除了做安全相关的事情以允许客户端访问服务器。

我想知道是否有人知道在两台不同的机器上使用客户端和服务器所需的最少努力的方式,假设客户端和服务器都已编写并且它们正在工作。目前我得到的结果如下:

  1. 运行 服务器计算机上的 server.exe:server.exe /regserver
  2. 运行 DCOMCNFG 并在服务器计算机上设置安全设置。
  3. 在防火墙中定义传入规则以允许服务器计算机上的连接。
  4. 运行 客户端计算机上的 server.exe:server.exe /regserver
  5. 现在我们可以 运行 在客户端机器上 client.exe 并使用服务器实现的接口。

促使我写这个问题的原因是我不明白为什么我们也需要在客户端机器上注册服务器。客户端应用程序了解接口和服务器 GUID,并在其实现中创建服务器时相应地使用它们。因此客户端机器上的 DCOM 有足够的信息来查询服务器机器的 DCOM 以向其提供具有提供的 GUID 的正确服务器,并且我们不需要在客户端注册服务器(至少看起来如此),但我们需要实际去做。

此致,

实际上您不必在客户机上注册服务器。但是,您可能需要在客户机上注册服务器类型库。您有 2 个选择:

  1. 在客户端机器上注册服务器的类型库

  2. 创建 DataSnap Server 应用程序(基于 COM)并使用 DCOMConnection、SocketConnection 或 SOAPConnection 连接到它 无需在客户端注册服务器或类型库 机.

在过去 15 年多的时间里,我开发了多个 COM/COM+ 服务器。我的建议是:创建一个基于 DataSnap COM 的服务器,这样可以在部署 COM 服务器和客户端时省去很多麻烦。更易于部署和维护。