Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
COM отличается от объектной модели среды выполнения .NET несколькими важными способами:
Клиенты COM-объектов должны управлять временем существования этих объектов; среда CLR управляет временем существования объектов в своей среде.
Клиенты COM-объектов обнаруживают, доступна ли служба, запрашивая интерфейс, предоставляющий службу, и возвращая указатель интерфейса или нет. Клиенты объектов .NET могут получить описание функциональных возможностей объекта с помощью отражения.
Объекты NET находятся в памяти, управляемой средой выполнения .NET. Среда выполнения может перемещать объекты в памяти по соображениям производительности и обновлять все ссылки на перемещаемые объекты. Неуправляемые клиенты, получив указатель на объект, полагаются на объект, чтобы он оставался в том же расположении. Эти клиенты не имеют механизма для работы с объектом, расположение которого не исправлено.
Для преодоления этих различий среда выполнения предоставляет классы-оболочки, так чтобы управляемые и неуправляемые клиенты считали, что вызывают объекты в своей соответствующей среде. Всякий раз, когда управляемый клиент вызывает метод в COM-объекте, среда выполнения создает вызываемую оболочку среды выполнения (RCW). RCWs скрывают различия между управляемыми и неуправляемыми ссылочными механизмами, в числе других аспектов. Среда выполнения также создает вызываемую обертку COM (CCW), для обратного выполнения процесса, что позволяет COM-клиенту легко вызывать метод на объекте .NET. Как показано на следующем рисунке, перспектива вызывающего кода определяет, какой класс оболочки создает среда выполнения.
В большинстве случаев стандартная версия RCW или CCW, созданная средой выполнения, обеспечивает достаточное маршаллирование для вызовов, пересекающих границу между COM и средой выполнения .NET. С помощью пользовательских атрибутов можно дополнительно настроить способ представления управляемого и неуправляемого кода среды выполнения.