Архитектура .NET поддерживает многочисленные языки программирования. В основном язык C++ выбирают из-за того, что в интерфейс 32-разрядных Windows-приложений (Win32 API), в программирование на основе модели компонентных объектов Microsoft (Component Object Model, COM) и в существующие программы были вложены большие средства. Таким образом, взаимодействие между управляемыми программами .NET общеязыковой среды выполнения CLR (Common Language Runtime) и неуправляемыми решениями и компонентами, написанными на C++, будет представлять интерес для многих программистов, во всяком случае, в обозримом будущем.
На сегодняшний день существуют различные формы взаимодействия, в том числе — протокол SOAP, который позволяет приложениям .NET вызывать Web-сервисы в различных платформах, в том числе в UNIX и в универсальных вычислительных машинах. Однако в этой главе мы остановимся на особом типе взаимодействия: установление связи (сопряжение; согласование) управляемого и неуправляемого кода в системе Windows. Преобладающими моделями программирования на C++ в современных системах Windows являются интерфейс 32-разрядных Windows-приложений (Win32 API) и модель компонентных объектов Microsoft (COM). Существует большое количество действующих компонентов, основанных на модели компонентных объектов Microsoft (COM), и было бы желательно, чтобы управляемые программы .NET могли вызывать неуправляемые компоненты, построенные на основе модели компонентных объектов Microsoft (COM). Может возникнуть и обратная ситуация, когда клиенту, построенному на основе модели компонентных объектов Microsoft (COM), требуется вызвать сервер .NET. Кроме компонентов, построенных на основе модели компонентных объектов Microsoft (COM), может возникнуть потребность в программе .NET вызвать некоторый неуправляемый код, представленный как динамически подключаемая библиотека (DLL), в том числе и интерфейс 32-разрядных Windows-приложений (Win32 API). NET Framework поддерживает все эти сценарии взаимодействия посредством средств COM Interoperability (совместимость с моделью компонентных объектов Microsoft (COM)) и Platform Invocation Services (Службы обращения к платформе), или PInvoke.
В этой главе предполагается, что вы уже знакомы с концепциями, стоящими за существующими технологиями. Кроме того, чтобы построить предлагаемые примеры программ, вам потребуется Visual Studio 6.0, равно как и Visual Studio .NET.