2010-11-09 3 views
5

Поскольку для загрузки динамической сборки требуется загрузка приложения, чтобы активировать сборку с разгрузкой связанного с ним приложения, существует ли «max» число областей приложения в процессе загрузки? Я имею в виду серверное приложение, которое каждый пользователь может запускать свой собственный код C# динамически. Но что, если, скажем, 2000 пользователей входят в систему и загружают свои коды? Есть ли какие-либо возможные ограничения, с которыми я могу столкнуться, помимо числа аппоменов?Максимальное количество приложений, загруженных в один процесс

спасибо.

ответ

5

Практически все пределы CLR основаны на «как позволяет память». Единственное исключение, о котором я знаю, это количество членов класса, ограниченное 65536. Это основано на определении значения токена. Ничего подобного для AppDomains.

+3

ASP.NET не создает 1 'AppDomain' за запрос. Это в основном 1 на веб-сайт ASP.NET. Это «AppDomain» остается в живых довольно долгое время, хотя есть условия, которые автоматически «переработают» его. Я не уверен, что делает SQL Server, но новый 'AppDomain' не создается для каждого запроса. –

+0

@bin - изоляция изоляции является ключевым афайком. Когда поток умирает при необработанном исключении, объявление является нежелательным. Это не может быть тот * один запрос страницы, который бомбы убивают все другие одновременные. Возможно, перерабатывают те, которые не умирают. Я не знаю точных правил. –

+0

<Не может быть, что один запрос страницы, который бомбит, убивает все другие параллельные.> ASP.NET имеет большую старую попытку/catch в стеке. Воронки в событие 'HttpApplication.Error'. Если обработчик отсутствует, отображается страница ошибки 500 по умолчанию. Если что-то действительно плохое, ASP.NET будет перерабатывать домен, или весь рабочий процесс может перезагрузиться, но большинство необработанных исключений не приводят к этим вещам. –

5

Я не считаю, что в CLR имеется окончательное максимальное значение. Скорее это будет объем оставшейся памяти, который определяет, можете ли вы динамически загружать новый appdomain.

Я сделаю немного исследований, но я не думаю, что для этого есть значение.

EDIT:

Here's еще один пост, который может помочь очистить вещи.

1

В основном это определяется вашими ограничениями ОС. Ваша машина x86 не может использовать более 4 ГБ в памяти для процесса [только 2 ГБ в пользовательском режиме]. Если вы идете на x64, у вас есть намного больший предел. Из того, что я знаю, нет такого предела для количества доменов приложений, которые вы можете создать.

Смежные вопросы