Поделиться через


Загрузка и выполнение пользовательского кода

Основной причиной написания основного приложения является настройка среды приложения, в которой работает управляемый код пользователя. В этом контексте под кодом пользователя понимается любой управляемый код, не являющийся частью основного приложения. Например, в основном приложении Internet Explorer кодом пользователя являются управляемые элементы управления и скрипты, содержащие HTML-страницы. В основном приложении сервера приложений кодом пользователя является код, содержащий корпоративные бизнес-правила, которые выполняются сервером приложений и находятся под его управлением.

Весь управляемый код является частью класса Assembly. В результате все методы, доступные для загрузки и выполнения управляемого кода, основываются на сборках. Например, классы System.AppDomain и System.Reflection.Assembly содержат методы, которые позволяют основному приложению загружать сборку. Методы Load реализуются в различной форме: для некоторых из них достаточно задания имени сборки, другие требуют указания полного пути к файлу, содержащему манифест сборки, и т. д. Эти методы используются для загрузки тех сборок, которые были ранее созданы и сохранены на диске.

Предположим, что только что описанное основное приложение сервера приложений позволяет пользователям написать управляемый код бизнес-правил, который загружается и выполняется в процессе сервера приложений. Когда запрос на запуск метода для конкретного бизнес-правила поступает на сервер приложений, код основного приложения среды выполнения сервера определяет, в каком домене нужно выполнять этот код, или же создается новый домен. Код основного приложения среды выполнения использует затем один из методов Load для загрузки сборки, содержащей эти бизнес-правила, и использует отражение для выполнения метода в этом бизнес-правиле. Дополнительные сведения см. в документации, посвященной пространству имен System.Reflection.

Пространство имен System.Reflection.Emit также предоставляет типы для динамически созданных сборок. Загрузка сборок таким способом полезна в том случае, если приложение представляет собой код, обрабатывающий скрипт.

Например, программа работы с текстами может поддерживать макросы, с помощью которых пользователи могут настраивать поведение этого приложения. После загрузки среды выполнения и создания домена приложения программа обработки текстов может скомпилировать скрипты макросов в управляемый код и создать сборку с помощью System.Reflection.Emit. Затем созданная сборка может быть загружена в домен приложения и запущена. Ввиду зависимости от конкретного сценария, эта сборка может существовать, только пока существует приложение (т. е. она никогда не будет сохраняться на диске).

См. также

Ссылки

AppDomain

System.Reflection.Assembly

System.Reflection.Emit

Основные понятия

Общие сведения о размещении