Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 231

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 225 226 227 228 229 230 < 231 > 232 233 234 235 236 237 .. 320 >> Следующая

Таблица 12.5. Скрытые интерфейсы СОМ Интерфейс Описание
ICIassFactory Обеспечивает независимый от языка и местонахождения метод
активации класса СОМ
IConnectionPoiritContainer Обеспечивает возможность отправки «классом событий обратно IConnectionPoint клиенту
IDspatch Используется для реализации позднего связывания
IDispatchEx
IprovideClassInfo
iEnurriVarraiit Обеспечивает возможность представления соклассом со6.:твеиного
набора внутренних типов
Обеспечивают возможность для клиентов и соклассов СОМ генерации сообщений об ошибках и реагирования на такие сообщения
ICreateErrorlnfo
!Unknown Управляет счетчиком ссылок и позволяет клиенту получать ссылку
на конфетный интерфейс сокласса
Некоторое теоретическое представление о роли RCW мы уже получили. Настало время познакомиться с особенностями его применения на практике с помощью Visual Basic, 6.0 (в нем мы создадим простой СОМ-сервер) и С# (для создания клиента .NET). Ниже в этой главе мы создадим для наших целей более сложный СОМ-сервер с использованием ATL 3.0.
Создание простого СОМ-сервера в Visual Basic 6.0
Наша задача сейчас - создать очень простой СОМ-сервер, который будет называться Painfully Simple VB COM Server. Первое, что нам нужно сделать - открыть Visual Basic 6.0 и создать новый проект ActiveX DLL (рис. 12.2). Если вы пришли из мира C++ и ATL и вам не очень понятно, что же такое мы делаем, то поясним, что мы воспользовались шаблоном для создания встроенного в процесс (in-process)
СОМ-сервера.
Далее воспользуемся окном свойств и переименуем проект в Painfully Simple-VBCOMServer (или что-нибудь более короткое), а исходный класс - в CoCaI с. Эта информация будет использована для создания ProgID нашего СОМ-сервера при помощи стандартной схемы Имя_сервера .Имя_объекта.
Создание простого СОМ-сервера в Visual Basic 6.0 573
JiI
s? & Ar
Stardarf EXE Айячй EXE
VB Application VB Wizard
ActiveX Control
OK
1
Cancel
Wizard
Manager
ActiveX Document Dl Document Exe
—'
Addm
Data Project
DHTML IB Application Application
Рис. 12.2. Создаем CUM-СЄрЗЄр в Visual Basic
Далее откроем окно кода для класса VB 6.0 CoCa 1 с и добавим следующее вполне обычное определение функции:
Это не что иное, как метод ' интерфейса по умолчанию _СоСа1с!
Public Function Add(ByVaI x As Integer. ByVaI у As Integer) As Integer
Add - x + у
End Function
После этого сохраните проект и откомпилируйте созданный СОМ-сервер с по -мощью меню File (Файл) > Make (Создать). При этом созданный нами СОМ-сервер будет автоматически зарегистрирован в реестре нашей операционной системы. !-rog.lO для созданного нами СОМ-сервера показан на рис. 12.3.
Registry Editor 31 Xl
''
г CD PaoeTfansitions.Pfopertyfacje Nana I Tree
til C] Pege7ran»tlons.PrapertyPage.l FpP-I PageTransltlons.PrapartyPaaeSite Я-П PageTrenations,PropertyPageStt. 1 1=1-(-? гЭЖИ^гШ|!Д^ГСЩрЯ1 j!Jl|<|y T 1QCIsId _i §]([>efault)
E O Paht,picture
— <l I Ii
MyCemputer(rMYjaASSESJtC«nPaWulb^^ '
Рис. 12.3. ProgID нашего СОМ-сервера
Таким образом, результатом нашей работы стал СОМ-сервер с единственным классом (CoCaIc), который реализует единственный интерфейс (он же интерфейс по умолчанию), который называется _СоСа IcB мире Visual Basic нам всегда совершенно бесплатно предоставляется такой интерфейс.
Перед тем как закрыть наш суперпроект, сделаем еще одно дело: выберемв меню Project (Проект) пункт Properties (Свойства) и установим переключатель Version Compatibility (Совместимость версий) в положение Binary Compatibility (Совместимость
574 Глава 12 • Взаимодействие с унаследованным программным кодом
по двоичному коду) — см. рис. 12.4. Это нужно сделать для того, чтобы Visual Basic перестал компилировать новые GUID при каждой компиляции.
PdIIiIuIIySIiIi(JIf VW OMStTVPr - Project Properties
Genera | Make | Ccmpte Сящюпж* j ОоЫлдапд j
-Stact Mode—--
С
(* fjCtivftXCorrHiof.enC
Remote Sever —-
Г* Aimot: Server Files
¦Verrim CornpaobitY—-
Г {jpCofrpeUMty C PjoJedCoffpatbity
f>anf uly5»r(4eveCOM5eiver .Jt
'A
OK
Cancel
Help
Рис. 12.4. Прекращаем генерацию GUID в Basic
Код приложения Paini'ullySimpk'VBCOMServei можно найти в подкаталоге Chapter 12.
Что находится в IDL нашего СОМ-сервера
Откроем OLE/COM Object Viewer и найдем там Proa ID нашего СОМ-сервера (рис. 12.5). Мы увидим имя пользовательского интерфейса по умолчанию (CoCalc), а также множество служебных интерфейсов СОМ, которые были созданы Visual Basic автоматически.
Ш F/LUM Ohictt Viewer
Ffe »(Mt yiw. tWP
¦at\rlM в\т\ a\\
a Af1 PugeTraniHons Site Property Pagr
PtiiiiliillySiiniili-VBrnMSlrverJTuCdlr
9 _ОС!»и
9 CoCalc
? KomectloriPolr*
Y ICorinecSonPoritCoritaiiier 9 IDispatch
Y IErfernalConnectlon |- 9 IProvirfeCLsssInFo . і ¦¦¦ V ISupfArtErforW« .....Y !Unknown
PaJetta support
FaHuj^SirreleVBCO MS errtt. CoCtIc
1 (D101G60C-eS09-4C*0-961A-365l21 ZAIf Иввві-гу j !rrptera«ni*ta | Acuvakon |
CLSID-
[ -© ID I MOC-eSO9-*C40-%tA -ш і г\
Предыдущая << 1 .. 225 226 227 228 229 230 < 231 > 232 233 234 235 236 237 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100