Иллюстрированный самоучитель по Architecture .NET

Доступ из управляемого кода к компонентам, построенным на основе модели компонентных объектов Microsoft (COM)

Как уже было показано в предыдущем разделе, программирование компонентов .NET легко осуществить, используя управляемый код C++, но это так же легко и в любом другом языке .NET. Вероятно, никто ничего не потеряет, перейдя от надоевшей сложности программирования компонентов на основе модели компонентных объектов Microsoft (СОМ) к программированию компонентов .NET. Однако в этом десятилетии модель компонентных объектов Microsoft (COM) все еще останется важной технологией разработки Windows-программ.

На самом деле модель компонентных объектов Microsoft (СОМ) остается основой практически любой важной новой технологии, разработанной Microsoft и другими ведущими компаниями, выпускающими программное обеспечение для Windows на протяжении нескольких последних лет. Естественно, что существует большое количество действующих компонентов и клиентских приложений на основе модели компонентных объектов Microsoft (COM). В этом разделе будет показано, как из управляемого кода на C++ вызывать методы, реализованные в компонентах на основе модели компонентных объектов Microsoft (COM). Разумеется, так же легко, используя аналогичную технологию, можно получить доступ к компонентам на основе модели компонентных объектов Microsoft (COM) и из программ, созданных на других языках .NET.

Управляемое клиентское приложение, написанное на Visual C++ .NET (или другом языке .NET), может использовать возможности взаимодействия, предусмотренные в .NET Framework для вызова существующих неуправляемых компонентов, построенных на основе модели компонентных объектов Microsoft (COM). Можно сказать, что возможности взаимодействия, предусмотренные в .NET Framework, образуют мост между средой выполнения управляемого клиента .NET и родной средой выполнения компонентов, построенных на основе модели компонентных объектов Microsoft (COM), это видно на рис. 15.1.

Иллюстрированный самоучитель по Architecture .NET › Смешивание управляемого и неуправляемого кода › Доступ из управляемого кода к компонентам, построенным на основе модели компонентных объектов Microsoft (COM)
Рис. 15.1. Упаковщик, вызываемый во время совместного выполнения управляемого и неуправляемого кодов

Можно реализовать сборку упаковщика, вызываемого во время выполнения (RCW) самостоятельно, используя средство рInvoke (Platform Invocation Services, Службы обращения к платформе – они описаны далее в этой главе) для вызова необходимых интерфейсов прикладного программирования (API), таких методов как CoCreatelnstance и даже самого lUnknown. Но это не является необходимостью, так как сервисная программа (утилита) Tlbimp.exe может считать информацию из библиотеки типов и автоматически сгенерировать упаковщик, вызываемый во время выполнения (RCW), что и будет описано в следующем разделе.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.