65.9K
CodeProject 正在变化。 阅读更多。
Home

登录: DCOM 上的自动化

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (7投票s)

2003年9月5日

GPL3

4分钟阅读

viewsIcon

92794

通过 DCOM 在网络上使用的远程登录自动化示例。

引言

我们已经了解了什么是自动化,并创建了一个登录管理 自动化服务器自动化客户端 应用程序。但是,如果我们能通过 DCOM 扩展我们的学习,使客户端应用程序能够在网络上与不同机器上的服务器通信,通过 DCOM 呢?这将使我们的应用程序更加强大,并证明创建独立的登录服务器和客户端应用程序(而不是将两者代码混合在一起)的逻辑是合理的。

什么是 DCOM?

DCOM 是分布式组件对象模型 (Distributed Component Object Model) 的缩写。它可以看作是 COM 的下一步发展。DCOM 使 COM 程序员能够将组件扩展到网络,让他们获得分布式计算的好处。我们已经构建了一个用于网络上的自动化服务器应用程序。请记住,COM 的“DLL”不能通过 DCOM 使用。当客户端和组件位于同一台计算机上时,它们通过本地过程调用 (LPC) 进行通信,但在网络上,它们必须使用微软专有的 DCOM 标准。网络上的 COM 组件的行为与它们位于同一台机器上时一样。

DCOM Architecture.

DCOM 使我们的组件可以实现位置无关性。我们的登录服务器为我们带来了分布式计算的能力,同时保持了数据库的一致性。可能会出现这种情况,例如,我们正在为 10-20 台计算机的网络(例如网吧)开发软件,而我们无法负担使用昂贵的 MS-SQL Server 等。这种数据库管理技术可以解救我们。

DCOM 已预装在 Windows NT 和 Windows 2K 中,我希望在 Windows XP 中也如此。如果您使用的是 Windows 9x 等其他版本,则必须检查计算机上是否安装了 DCOM98 扩展,否则请在此处 检查 DCOM98 扩展。

先决条件

本教程假设您熟悉 Visual C++/MFC、COM/DCOM、自动化、Windows 注册表以及本教程中使用的其他技术,如 ADO 等。虽然没有必要详细了解它们的底层原理,但您至少应该对这些底层原理的含义有一个实际的了解。最重要的是,您应该一瞥登录 自动化服务器自动化客户端 示例。

建议阅读

实现

现在,在有了足够的介绍之后,我们已经准备好通过我们的组件来利用 DCOM。我们将通过更改计算机的注册表项并硬编码注册表项来实现此目的,以便客户端可以连接到另一台机器上的远程组件。

在继续之前,请始终牢记,更改注册表项可能会致命并导致系统崩溃。因此,请勿在家中尝试此操作,这些操作仅由软件专业人士在充分了解 Windows 注册表后进行。 嘿,您不必太过担心,因为您是人类,您可以做被告知不要做的事情,就像人们阅读此警告一样:吸烟有害健康,然后就忘了。

  • 首先在所有客户端和服务器计算机上运行组件,如果您愿意,然后从所有客户端计算机上卸载组件。
  • 将客户端应用程序复制到所有客户端计算机上。
  • 通过在客户端计算机上运行组件,我们获得了必要的注册表项作为起点,然后我们可以对其进行操作。
  • 在客户端计算机上找到注册表项:HKEY_CLASSES_ROOT\CLSID\HKEY_CLASSES_ROOT\CLSID\{C42854AB-3175-4E27-8569-CC55C63A107C},并删除其中 `ProgID` 之外的所有子项。十六进制值是我们自动化服务器的类 ID。
  • 向键:HKEY_CLASSES_ROOT\CLSID\HKEY_CLASSES_ROOT\CLSID\{C42854AB-3175-4E27-8569-CC55C63A107C} 添加一个名为 `AppID` 的新字符串属性,并将其值设置为自动化服务器的类 ID。

    Add a new string property under registry

  • 在 `HKEY_CLASSES_ROOT\AppID` 下添加一个名为 `{C42854AB-3175-4E27-8569-CC55C63A107C}` 的新键,并向其添加一个名为 `RemoteServerName` 的字符串属性,其值为远程计算机名。

    Add a new key under registry

  • 现在您可以在客户端计算机上运行客户端应用程序,组件将在服务器计算机上运行,并在大约一分钟或更短的时间内终止。

结论

这标志着我们从自动化到 DCOM 的漫长旅程的结束。我们已经通过我们自己的 MFC 成功构建了一个自动化组件及其客户端,并通过 DCOM 使用了它,而且这并不费力。它还为我们打开了自动化和 DCOM 通往组件软件开发的光明而漫长的道路。您的宝贵建议始终受到欢迎,以使本文更好。

Copyright

此代码按“原样”提供,不提供任何明示或暗示的保证。您可以不受任何限制地使用和滥用此代码。如果您在任何商业产品中使用此源代码,则无需致谢,但将不胜感激。

参考文献

  • VC++、COM 及其他。

    作者:Yashavant Kanetkar & Sudesh Saoji。

    ISBN:81-7635-206-8

    出版商:BPB Publications。

    用户级别:初级-中级。

    本书深入介绍了前沿技术,如文档/视图架构、OLE、COM、DCOM、ActiveX、OpenGL、打印和打印预览、HTML 帮助系统、磁盘编程和屏幕保护程序。

© . All rights reserved.