Udostępnij przez


Marshaling interfejsu

Jeśli nie masz absolutnej pewności, że interfejs nigdy nie będzie używany poza granicami apartamentów, wątków lub procesów, musisz zdecydować, jak zapewnić obsługę marshalingu dla swoich interfejsów. Istnieją trzy sposoby zapewniania obsługi marshalingu:

  • Napisz własny kod proxy/stuba, który wywołuje kanał COM, a ten z kolei wywołuje biblioteki środowiska wykonawczego RPC. Teoretycznie można to zrobić, ale w praktyce jest prawie niemożliwe do zrobienia bez znacznej ilości wysiłku.
  • Opisz interfejsy w pliku języka IDL (interface definition language) i użyj kompilatora MIDL, aby wygenerować bibliotekę DLL proxy/stub. Ta metoda zapewnia najlepszą wydajność i największą elastyczność pod względem akceptowalnych typów danych. Przy użyciu komponentów serwera proxy generowanych przez MIDL, można kontrolować nie tylko zarządzanie pamięcią, ale nawet serializację i deserializację złożonych typów danych na różnych platformach.
  • Użyj języka MIDL, aby wygenerować bibliotekę typów używaną przez system w celu zapewnienia obsługi marshalingu w czasie wykonywania. Jest to najprostszy sposób implementacji obsługi marshalingu. Wystarczy wygenerować bibliotekę typów i zarejestrować ją. Interfejsy muszą być zgodne z automatyzacją (oleautomation lub podwójne), co powoduje pewne ograniczenia dotyczące typów danych, których można użyć jako parametrów metody. Jednak w większości przypadków przewaga interfejsów dostępnych dla programów napisanych w innych językach, takich jak Microsoft Visual Basic i Java, przewyższa ograniczenia typów danych.

Inter-Object komunikacja