Маршалинг интерфейса

Если вы не знаете, что интерфейс никогда не будет использоваться в пределах квартиры, потока или границ процесса, необходимо решить, как обеспечить поддержку маршалинга для ваших интерфейсов. Существует три способа предоставления поддержки маршалинга:

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

Взаимодействие между объектами