интернациональное программирование N|M{INT3 TEAM}{NIM@INT3.RU} Спецвыпуск: Хакер, номер #065, стр. 065-032-4 [домены приложений] Операционные системы и исполняющие среды обычно содержат определенные средства изоляции приложений друг от друга. Изолировать их необходимо для гарантирования того, что код, выполняемый одним приложением, в процессе своей работы не сможет повлиять на работу других приложений, не связанных с ним. Домены приложений предоставляют платформе .NET безопасные и гибкие блоки обработки, которые могут использоваться для изоляции отдельных приложений. Домены приложений обычно создаются хостами исполняющей среды, которые отвечают за загрузку общеязыковой среды выполнения перед запуском приложения. Исторически сложилось так, что для разделения приложений, выполняющихся на одном компьютере, используются границы процессов. Каждое приложение загружается в отдельный процесс, который отделяет его от других приложений, выполняющихся на том же самом компьютере. Приложения оказываются отделенными друг от друга, поскольку адреса в памяти привязаны к приложению (бессмысленно использовать в процессе указатель, передаваемый ему из другого процесса). Кроме того, прямые вызовы между процессами невозможны. Вместо них должен использоваться прокси, который позволяет реализовать межпроцессные вызовы. Перед запуском управляемый код должен пройти процесс проверки, в течение которого определяется, может ли код пытаться обратиться к неверным адресам памяти или делать еще что-то, что привело бы к нарушению правильной работы процесса, в котором выполняется этот код. Код, прошедший проверку, называется строго типизированным. Возможность проверки кода на строгую типизацию позволяет платформе .NET обеспечивать такой же высокий уровень изоляции процессов друг от друга, как при использовании границ процессов, но при значительно более низких затратах по производительности. В одном процессе можно запустить несколько доменов приложений с таким же уровнем изоляции, какой обеспечивают отдельные процессы, но без дополнительных издержек на межпроцессные вызовы или переключение между процессами. Возможность выполнять несколько приложений в одном процессе значительно повышает масштабируемость серверов. Изоляция приложений также играет важную роль в обеспечении безопасности. Например, можно запустить элементы управления нескольких web-приложений в одном процессе обозревателя так, что эти элементы не смогут получить доступ к данным и ресурсам друг друга. Изоляция приложений при помощи доменов приложений хороша тем, что: 1 СБОИ В ОДНОМ ПРИЛОЖЕНИИ НЕ ЗАТРОНУТ ДРУГИЕ ПРИЛОЖЕНИЯ. ТАК КАК СТРОГО ТИПИЗИРОВАННЫЙ КОД НЕ МОЖЕТ ВЫЗВАТЬ СБОИ В ПАМЯТИ, ИСПОЛЬЗОВАНИЕ ДОМЕНОВ ПРИЛОЖЕНИЙ ГАРАНТИРУЕТ, ЧТО КОД, ВЫПОЛНЯЮЩИЙСЯ В ОДНОМ ДОМЕНЕ, НЕ ПОВЛИЯЕТ НА ДРУГИЕ ПРИЛОЖЕНИЯ ПРОЦЕССА. |