Определение границ домена приложения
Обновлен: Ноябрь 2007
После того как код основного приложения перешел от неуправляемого к управляемому коду, необходимо создать один или более новых доменов приложений, в которых и будет работать код пользователя. Домен приложения — это конструкция, используемая основными приложениями для изоляции кода, работающего в процессе. Эта изоляция необходима для предотвращения непредусмотренного взаимодействия кодов. Например, коды, загруженные из двух различных веб-узлов в основное приложение Internet Explorer, должны располагаться отдельно друг от друга. Основное приложение Internet Explorer создает домен приложения для каждого веб-узла для обеспечения такой изоляции.
Перед тем, как основное приложение сможет создать домен приложения, в котором будет исполняться код пользователя, оно должен определить границы размещения этого нового домена приложения. На это решение влияют такие факторы, как требования на ограничения доступа конкретных типов к другим типам, конфигурация, безопасность и возможность выгрузки уже ненужного кода.
Ограничение доступа к типам
Типы, работающие в домене приложения, могут определять другие типы, работающие в том же домене, и вызывать их непосредственно. Однако тип никогда не может обнаружить типы, работающие в других доменах приложений, и поэтому не может их вызывать. Возможность ограничения доступа типа к другим типам — это основное соображение при определении границ домена.
Параметры конфигурации
Домены приложений — это основные единицы конфигурации в среде выполнения. Каждый домен приложения имеет дополнительный связанный с ним файл конфигурации, описывающий параметры, относящиеся к работающему в этом домене коду.
Например, файл конфигурации может содержать список папок, в которых находятся закрытые сборки, связанные с версиями сведения для общих сборок, расположение типов, к которым возможен удаленный доступ, и т. д.
Безопасность
Основные приложения могут устанавливать для домена политики безопасности как на уровне доступа по коду, так и на основе ролей. Это позволяет основному приложению контролировать набор разрешений, предоставляемых коду в конкретном домене, и устанавливать как текущего участника потока, так и стандартного участника для безопасности на основе ролей.
Например, основное приложение может определить политику безопасности доступа кода на уровне домена приложения, чтобы обеспечить работу в данном домене только кода, загружаемого с конкретного веб-узла. С другой стороны, основное приложение может установить участников безопасности на основе ролей для реализации пользовательской схемы проверки подлинности.
Выгрузка кода
Для выгрузки из памяти управляемого кода, работающего в процессе, с целью предоставления памяти другим процессам основное приложение должно выгрузить домен приложения, в котором работает этот код. Нельзя выгрузить отдельные сборки или типы. Основное приложение имеет свои собственные правила, определяющие, когда можно выгружать код пользователя. Например, интернет-обозреватель может загрузить управляемые элементы управления в домен, определенный веб-узлом. Далее обозреватель может иметь правила, позволяющие ему сохранять самые последние из просмотренных страниц в памяти для ускорения работы кнопок Вперед и Назад. Когда обозреватель устанавливает, что страница больше не нужна в памяти, он удаляет домен приложения, в результате чего удаляется и код для управляемых элементов управления.