Udostępnij przez


Opakowania COM

Model COM różni się od modelu obiektów środowiska uruchomieniowego platformy .NET na kilka ważnych sposobów:

  • Klienci obiektów COM muszą zarządzać okresem istnienia tych obiektów; środowisko uruchomieniowe języka wspólnego zarządza okresem istnienia obiektów w swoim środowisku.

  • Klienci obiektów COM odkrywają, czy usługa jest dostępna, żądając interfejsu, który ją zapewnia, i otrzymując wskaźnik do tego interfejsu lub nie. Klienci obiektów platformy .NET mogą uzyskać opis funkcji obiektu przy użyciu odbicia.

  • Obiekty NET znajdują się w pamięci zarządzanej przez środowisko wykonawcze środowiska uruchomieniowego platformy .NET. Środowisko wykonywania może przenosić obiekty w pamięci ze względu na wydajność i aktualizować wszystkie odwołania do obiektów, które przenosi. Klienci niezarządzani, po uzyskaniu wskaźnika do obiektu, polegają na tym, że obiekt pozostanie w tej samej lokalizacji. Ci klienci nie mają mechanizmu radzenia sobie z obiektem, którego lokalizacja nie jest stała.

Aby przezwyciężyć te różnice, środowisko uruchomieniowe udostępnia klasy opakowujące, aby zarządzani i niezarządzani klienci mogli myśleć, że wywołują obiekty w swoim odpowiednim środowisku. Za każdym razem, gdy zarządzany klient wywołuje metodę w obiekcie COM, środowisko uruchomieniowe tworzy opakowanie wywołujące środowisko uruchomieniowe (RCW). RCW abstrahuje różnice między zarządzanymi oraz niezarządzanymi mechanizmami referencyjnymi, między innymi. Środowisko uruchomieniowe tworzy również otokę wywoływaną przez COM (CCW) w celu odwrócenia procesu, umożliwiając klientowi COM bezproblemowe wywołanie metody na obiekcie .NET. Jak pokazano na poniższej ilustracji, perspektywa kodu wywołującego określa, którą klasę zawijającą tworzy środowisko wykonawcze.

Omówienie nakładki COM

W większości przypadków standard RCW lub CCW wygenerowany przez środowisko uruchomieniowe zapewnia odpowiednie marshalling dla wywołań, które przekraczają granicę między com i środowiskiem uruchomieniowym platformy .NET. Za pomocą atrybutów niestandardowych możesz opcjonalnie dostosować sposób, w jaki środowisko uruchomieniowe reprezentuje zarządzany i niezarządzany kod.

Zobacz także