на начало
На главную страницу
Форум   

Статья :: Динамическое связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET


Динамическое связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET

Существующие клиенты на основе модели компонентных объектов Microsoft (COM) можно динамически связать с управляемыми компонентами, так как все управляемые типы непосредственно поддерживают стандартный интерфейс модели компонентных объектов Microsoft (COM)— IDispatch. Способ, которым это выполняет общеязыковая среда выполнения CLR платформы .NET, чем-то похож на традиционное динамическое связывание в Visual Basic. Без всяких усилий в области программирования общеязыковая среда выполнения CLR немедленно генерирует реализацию IDispatch, основываясь на метаданных, обнаруженных в сборке компонента. Несмотря на то, что клиент динамического связывания может быть написан в Visual C++ 6.0 с использованием интеллектуального указателя библиотеки шаблонных классов ATL или даже непосредственного вызова методов IDispatch, проще это можно продемонстрировать, взяв клиент, который реализован с помощью короля динамического связывания — Visual Basic.
Как и для любого клиента (построенного на основе модели компонентных объектов Microsoft (COM)) компонента .NET, для клиента на VB требуется создать необходимые элементы в системном реестре для компонента .NET. Здесь можно воспользоваться утилитой регистрации сборки Regasm.exe (Assembly Registration Utility). Это требуется выполнить только для регистрации компонента. Однако утилита регистрации сборки Regasm. exe (Assembly Registration Utility) может быть использована с флагом /tlb для генерации библиотеки типов в дополнение к регистрации упомянутых типов сборки. Именно это мы собираемся сделать для следующего примера, написанного на VB, так что запустим утилиту регистрации сборки Regasm.exe (Assembly Registration Utility) еще раз, но уже с флагом /tlb:

Regasm SomeManagedClass.dll /tlb

Затем в Visual Basic можно добавить к проекту ссылку на файл SomeManagedClass.tlb. Это сделает доступным класс ManagedClass. Кроме того, обычно требуется добавить ссылку на библиотеку типов mscorlib. tlb, чтобы открыть доступ к различным типам .NET. И еще: сборку SomeManagedClass.dll нужно либо скопировать в папку клиента, либо занести в глобальный кэш сборок. Следующий фрагмент программы на VB демонстрирует динамическое связывание с компонентом .NET:

Private Sub Commandl_Click() ' Частный
Dim obj As Object ' Как Объект
Set obj = CreateObject(
"SomeManagedClass.ManagedClass") ' программный идентификатор
i = obj.AddEmUp(3, 4)
MsgBox (i) End Sub ' Конец

Введя этот текст, можно создать из него исполняемый файл ЕХЕ и запустить его на выполнение. В результате появится окно с сообщением, в котором будет выведен результат — число 7, показанное на рис. 15.6.

6.gif

Рис. 15.6. Клиент Visual Basic для компонента .NET

Как строить и запускать исполняемый файл на Visual Basic

1. File => Make Projectl.exe.
2. Щелкните на ОК.
3. Дважды щелкните на Project.exe в Проводнике (Windows Explorer).


Динамическое связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET

страницы в данном разделе 
Глава 15. Смешивание управляемого и неуправляемого кода Смешивание управляемого и неуправляемого кода
Сравнение управляемого и неуправляемого кода Причины смешивания управляемого и неуправляемого кодов
Неуправляемый или опасный? Управляемые и неуправляемые ссылки и типы значений
Ограничения на использование управляемых типов в C++ Вызов управляемого кода из неуправляемого и обратный вызов
Сравнение программирования на C++ с использованием модели компонентных объектов Microsoft (COM) и .NET Доступ из управляемого кода к компонентам, построенным на основе модели компонентных объектов Microsoft (COM)
Сервисная программа Tibinp. ехе Унаследованный компонент на основе модели компонентных объектов Microsoft (COM)
Действующий клиент на основе модели компонентных объектов Microsoft (COM) Создание клиента на основе модели компонентных объектов Microsoft (COM) с помощью управляемого C++
Разработка управляемого клиента на основе модели компонентных объектов Microsoft (COM) с помощью С# Создание с помощью управляемого C++ клиента на основе модели компонентных объектов Microsoft (COM) без метаданных
Создание с помощью С# управляемого клиента на основе модели компонентных объектов Microsoft (COM) без метаданных Доступ к управляемым компонентам из клиентов на основе модели компонентных объектов Microsoft (COM)
Раннее связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET Динамическое связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET
Явное определение интерфейса Службы обращения к платформе: Plnvoke (Platform Invocation Services)
Резюме >  


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста