DCOM 示例:从多个客户端调用 Windows 服务中的 COM 对象
更新:2007 年 11 月
本 DCOM 示例演示了如何从运行于不同计算机上的多个客户端调用在 Windows 服务中实现的 COM 对象。它由若干部分组成:
DrawServ 实现 COM 对象的 Windows 服务。
ATLDraw 连接到 DrawServ COM 对象的客户端。
DrawCtl ATLDraw 的管理版本。它有一个“连接”(Connect) 方法(采用计算机名称字符串参数)、一个“断开连接”(Disconnect) 方法和一个“清除”(Clear) 方法。
MFCCont DrawCtl 的 MFC 容器。输入不带引号和斜杠的服务器(可能为远程服务器)名称。
ATLCont DrawCtl 的 ATL 容器。输入不带引号和斜杠的服务器(可能为远程服务器)名称。
所有计算机必须运行 Windows 2000 或更高版本才能运行此示例。
将此示例与 ATL DCOM 示例进行比较。
安全说明: |
---|
提供该示例代码是为了阐释一个概念,并不代表着最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失,Microsoft 不承担任何责任。 |
获取示例和安装示例的说明:
在 Visual Studio 的“帮助”菜单上,单击“示例”。
有关更多信息,请参见定位示例文件。
示例的最新版本和完整列表可以从 Visual Studio 2008 Samples page(Visual Studio 2008 示例页面)联机获取。
还可以在计算机的硬盘上查找示例。默认情况下,将示例和自述文件复制到 \Program Files\Visual Studio 9.0\Samples\ 下的文件夹中。对于 Visual Studio 速成版,所有示例都位于联机位置。
生成并运行示例
生成并运行此示例
打开解决方案 dcom.sln。
生成 DrawServ 和 ATLDraw 示例。
将 Drawserv.exe 和 Atldraw.exe 复制到各台要运行该示例的计算机上。通过运行带有命令行参数 /RegServer 或 -RegServer(不区分大小写)的 DrawServ,在各台计算机上注册该服务器。例如:
DrawServ /RegServer
(必须注册 Register.dll 示例才可以运行。) 要将服务器复制到每个客户端的原因是需要在客户端上注册服务器的 CLSID 和服务器类型库。
通过使用“控制面板”中的“服务”图标,启动服务器上的服务。
在每个客户端上使用 DCOMCNFG,选择 DrawServ 类的“属性”。从“位置”选项卡中选择“在下列计算机上运行应用程序”,然后输入在其上运行服务器对象的计算机的名称。 清除“在此计算机上运行应用程序”复选框。
运行 ATLDraw 并选择“服务器”。从每个客户端上的菜单进行连接。通过按住鼠标左键并沿直线拖动,在客户端窗口中绘制线条。绘制的线条应出现在同时连接到该相同服务器的各个客户端上。也可以使用“视图”菜单中的“颜色”命令来更改每个客户端的颜色。
如果连接远程服务器时出现任何问题(例如,如果 Tstcon32.exe 不调用 CoInitializeSecurity),请在客户端上运行 DCOMCNFG,然后打开“默认属性”选项卡。 将“默认身份验证级别”设置为“无”,并将“默认模拟级别”设置为“匿名”。