Маршалинг интерфейса
Если вы не уверены наверняка, что интерфейс никогда не будет использоваться через границы квартиры, потока или процесса, необходимо решить, как обеспечить поддержку маршалинга для ваших интерфейсов. Существует три способа предоставления поддержки маршалинга:
- Напишите собственный код прокси-сервера или заглушки, который вызывает COM-канал, который, в свою очередь, вызывает библиотеки времени выполнения RPC. Теоретически это можно сделать, но на практике почти невозможно сделать без значительного количества усилий.
- Опишите ваши интерфейсы в файле языка описания интерфейсов (IDL) и используйте компилятор MIDL для создания прокси/заглушки DLL. Этот метод обеспечивает лучшую производительность и максимальную гибкость с точки зрения допустимых типов данных. Используя прокси-заглушки, созданные с помощью MIDL, вы можете управлять не только памятью, но и маршалингом и демаршалингом сложных типов данных на разных платформах.
- Используйте MIDL для создания библиотеки типов, которую система использует для обеспечения поддержки маршалинга в процессе выполнения. Это самый простой способ реализации поддержки маршалинга. Все, что необходимо сделать, — создать библиотеку типов и зарегистрировать ее. Интерфейсы должны быть совместимыми с автоматизацией (oleautomation или двойной), что устанавливает некоторые ограничения на типы данных, которые можно использовать в качестве параметров метода. Однако в большинстве случаев преимущество использования интерфейсов для программ, написанных на других языках, таких как Microsoft Visual Basic и Java, перевешивает ограничения типов данных.
Связанные разделы