组件对象模型(COM)样本
COM是一项非常强大的技术,可以根据面向对象的设计组装软件。请参阅此处的文档以获取更多详细信息。
COM的主要缺点之一是设置COM组件所需的初始样板。 ATL是一组有助于制造样板的库,但具有自身的复杂性。
这里的样本提供了骨骼代码,该骨骼代码将对COM设置和注册进行重大功能,以便开发人员可以仅专注于业务逻辑,而不是担心基础架构。它不使用ATL 。取而代之的是,它使用简单的普通C ++代码,以便开发人员在需要时可以理解并调试基础骨架。
使用的术语
- COM服务器是提供业务逻辑的对象。
- COM客户端是通过COM服务器公开的任何接口访问COM服务器的代码。
- COM客户端和COM服务器之间的相互作用是通过封装进行的,需要代理式dll。
- 请参阅此处的文档以获取更多详细信息。
这个项目
这是有关此样本中各个目录的摘要。
- comsample -proxy :ProxyStub dll。要添加一个新接口,只需在项目中添加一个新的IDL文件即可。
- COMSAMPLESERVER :支持激活COM服务器内部操作以及处理外的支持(在OS提供的DLL代理,即dllhost.exe)。
- comsamplyservice :支持在当地系统服务中激活COM服务器。
- comsampleclient :示例com客户端,呼叫并测试上面提到的com服务器。
创建和注册新的COM组件
使用此模型,创建新的COM组件非常容易。
- 添加您的界面:
- 将接口的新IDL文件添加到comsampleproxy项目中。请参阅示例文件 /compampleproxy/icomtest.idl。
- 实施您的COM类:
- 对于替代激活中的过程中的激活或处理外:将类实现添加到comsampleserver项目中。请参阅示例comsampleserver/ccomservertest.cpp。现在,转到comsampleserver/dll.cpp,只需将您的类条目添加到“ g_classes”中。
- 有关在当地系统服务中的程序之外激活:将您的类实现添加到comsamplyservice项目中。请参阅示例comsamplyservice/ccomserviceTest.cpp。现在,转到comsampleservice/main.cpp,只需将您的类条目添加到“ G_Classes”中。
- 注册您的com组件:
- 将comsample -proxy.dll复制到目标机器上。从提升提示中运行: regsvr32 comsampleproxy.dll 。
- 对于替代激活中的过程中的激活或处理外:将comsampleser.dll复制到目标机器上。从提升提示中,运行: regsvr32 comsampleserver.dll 。
- 要在当地系统服务中进行程序外激活:将comsamplyservice.exe复制到目标计算机上。从高架命令提示符中,运行: comsampleService.exe /registerserver 。
就是这样!
商标
该项目可能包含用于项目,产品或服务的商标或徽标。 Microsoft商标或徽标的授权使用应受到Microsoft的商标和品牌准则的约束。在此项目的修改版本中使用Microsoft商标或徽标不得引起混乱或暗示Microsoft赞助。任何使用第三方商标或徽标都遵守这些第三方政策。