Образец объекта компонента (com)
COM - это очень мощная технология компонента программного обеспечения на основе объектно -ориентированного дизайна. Пожалуйста, смотрите документацию здесь для получения более подробной информации.
Одним из основных недостатков COM является начальный шаблон, необходимый для настройки компонентов COM. ATL - это набор библиотек, которые помогают создавать шаблон, но поставляется со своей собственной сложностью.
Этот образец здесь содержит код скелета, который бы выполнял тяжелую настройку и регистрацию COM, чтобы разработчики могли сосредоточиться только на бизнес -логике, а не беспокоиться о инфраструктуре. Он не использует ATL . Вместо этого он использует простой простой код C ++, чтобы разработчики могли понять и отлаживать базовый скелет, если это необходимо.
Термины используются
- COM -сервер - это объект, который обеспечивает бизнес -логику.
- Клиент COM - это код, который получает доступ к серверу COM через любой интерфейс, выявленный сервером COM.
- Взаимодействие между Com Client и Com Server происходит через маршалинг и требует DLL Proxy-Stub.
- Пожалуйста, смотрите документацию здесь для получения более подробной информации.
Этот проект
Вот краткое изложение различных каталогов в этом образце.
- ComsampleProxy : ProxyStub DLL. Чтобы добавить новый интерфейс, просто добавьте новый файл IDL в проект.
- Comsamprederver : Поддержка активации Com Server In-Processes, а также вне процесса (в ОС обеспечила суррогат DLL, а именно Dllhost.exe).
- Comsampleservice : поддержка активации сервера COM в службе локальной сети.
- Comsampleclient : образец Com Client, который звонит и проверяет упомянутые выше серверы COM.
Создание и регистрация нового компонента COM
Создание нового компонента COM очень легко с этой моделью.
- Добавьте свой интерфейс :
- Добавьте новый файл IDL с вашим интерфейсом в Project ComsampleProxy. См. Пример файла /comsampleproxy/icomtest.idl.
- Реализуйте свой класс COM :
- Для активации в процессе или за пределами процесса в суррогатной активации : добавьте реализацию класса в Project Comsamprederver. См. Пример comsamprederver/ccomservertest.cpp. Теперь перейдите в Comsampreserver/Dll.cpp и просто добавьте записи класса в «G_Classes».
- Для активации вне процесса в службе локальной сети : добавьте свой внедрение класса в Project Comsampleservice. См. Пример comsampleservice/ccomservicetest.cpp. Теперь перейдите в comsampleservice/main.cpp и просто добавьте записи класса в «G_Classes».
- Зарегистрируйте свои компоненты COM :
- Скопируйте comsampleproxy.dll на целевую машину. Из повышенной подсказки запустите: Regsvr32 ComsampleProxy.dll .
- Для активации в процессе или вне процесса в суррогатной активации : скопируйте comsampreserver.dll на целевую машину. Из повышенной подсказки, запустить: Regsvr32 comsamprederver.dll .
- Для активации вне процесса в службе локальной сети : скопируйте comsampleservice.exe на целевую машину. Из повышенной командной строки запустите: comsampleservice.exe /registerserver .
Вот и все!
Товарные знаки
Этот проект может содержать товарные знаки или логотипы для проектов, продуктов или услуг. Уполномоченное использование товарных знаков или логотипов Microsoft подлежит и должно следовать руководящим принципам торговой марки и бренда Microsoft. Использование товарных знаков Microsoft или логотипов в модифицированных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование сторонних товарных знаков или логотипов подвержена политике этих сторонних.