Ватсон Карли
Шрифт:
После компиляции класса примера в сборку .NET можно зарегистрировать эту сборку в службах COM с помощью
Теперь, когда сборка зарегистрирована в службах COM с помощью
Однако, прежде чем это можно будет использовать, необходимо установить сборку в глобальный кэш. Для этого сначала создадим устойчивое имя сборки с помощью следующей команды:
Далее необходимо создать файл
Затем это надо откомпилировать с помощью следующей команды, чтобы превратить в модуль:
После этого компилируется файл
При выполнении сценарий VB воспользуется службами COM для создания объекта .NET, вызовет метод на этом объекте и выведет возвращаемое из объекта .NET значение в окне сообщения:
Интересная техника, не правда ли? Но она не решает ни одной из упомянутых выше проблем, связанных с поздним связыванием. К счастью, другой член набора инструментов SDK .NET может в этом помочь. Это утилита
Однако, прежде чем попрощаться с
TlbExp.exe
Как можно было уже догадаться, утилиты
Службы вызова платформы
Мы рассказали о взаимодействии между компонентами COM и .NET. Теперь поговорим о другом виде — о взаимодействии между кодом .NET и так называемом неуправляемом коде. Его обеспечивает технология, называемая службами вызова платформы, или, кратко,
Неуправляемый код и ненадежный код
Первое, о чем необходимо знать, — термины неуправляемый и ненадежный не являются синонимами.
Ненадежный код C# является кодом, который встроен в блок с префиксом в виде ключевого слова
Со своей стороны, неуправляемый код не управляется средой времени выполнения .NET. Когда поток выполнения приложения .NET входит в сегмент неуправляемого кода, среда времени выполнения .NET больше не имеет контроля над действиями этого кода, и не может обеспечить для него сборку мусора или правила безопасности (по этой причине приложения, которые используют неуправляемый код, должны наделяться доверием со стороны системного администратора).
Службы вызова платформы позволяют коду .NET взаимодействовать не только с ненадежным кодом, но и с достоверно неуправляемым.