Как можно использовать домены приложений для размещения сторонних сборок, которые предоставляют элементы управления пользовательским интерфейсом в веб-приложении или Windows?

#c# #.net #applicationdomain

#c# #.net #applicationdomain

Вопрос:

В MSDN говорится:

Изоляция приложений также важна для безопасности приложений. Например, вы можете запускать элементы управления из нескольких веб-приложений в одном процессе браузера таким образом, чтобы элементы управления не могли получать доступ к данным и ресурсам друг друга.

Как бы это было достигнуто? Если я использую элементы управления из сборки в моей веб-форме как часть пользовательского интерфейса, как мне загрузить это из отдельного домена?

Кроме того, возможно ли это в Windows Forms, чтобы в ваших формах были элементы управления пользовательским интерфейсом из сборки, загруженной в отдельный appdomain? Если да, то как бы вы это сделали?

Я спрашиваю, потому что я использую много сторонних библиотек управления пользовательским интерфейсом. Как бы я мог использовать их «безопасным» способом, размещенным в домене приложения, отличном от моего основного приложения?

Ответ №1:

Если вы прочитаете дальше, вы увидите, что вы можете создать несколько доменов в своем процессе и загружать в них сборки или выполнять сборки в них.

Теперь, исходя из того, что вы спрашиваете, я думаю, вы немного неправильно поняли концепцию. Сборки в двух разных доменах полностью разделены, они не могут получить доступ друг к другу, поэтому то, что вы хотите сделать, загрузить элементы управления пользовательским интерфейсом в отдельный домен и использовать его в вашем исходном домене, невозможно.

В цитате, которую вы написали, рассказывается о таких сценариях, как одновременный доступ пользователей к одному asp.net приложение или несколько «вкладок» в одном Internet Explorer, отображающих несколько веб-страниц. Они должны быть надежно разделены, что может быть достигнуто либо путем создания совершенно нового процесса для каждого пользовательского запроса или вкладки, либо путем создания отдельных доменов приложений. Преимущество, предоставляемое appdomains здесь, заключается в лучшей масштабируемости / производительности, поскольку создание нового процесса для каждого отдельного запроса к asp.net приложение было бы слишком дорогостоящим.

Итак, чтобы ответить на ваш вопрос: если вы хотите использовать элементы управления сторонних производителей и хотите, чтобы они взаимодействовали с вашим основным приложением, вы не можете загрузить их в отдельный домен, если вы не можете заставить их взаимодействовать с вашим приложением через сеть, удаленное подключение, каналы и т.д.