Как домены приложений .NET поддерживают работу размещенного процесса?

Скажем, у меня есть два домена приложений в процессе .NET/CLR.

Один из AppDomains аварийно завершает работу из-за необработанного исключения.

Будет ли другой AppDomain работать нормально? Что, если в противном случае произошел сбой AppDomain по умолчанию?

Мне просто интересно, что поддерживает процесс в живых. Поскольку AppDomains являются полностью отдельными объектами, я предполагаю, что AppDomain по умолчанию может выйти из строя, а другие AppDomains могут продолжить работу?

Даже в моей книге по С# явно не упоминается, что происходит...


person Xanather    schedule 15.07.2014    source источник
comment
На самом деле это одна из основных целей AppDomains.   -  person Andrew Barber    schedule 15.07.2014


Ответы (2)


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

person Darek    schedule 15.07.2014
comment
Быстро и по делу, спасибо! Учитывая, что домен приложения по умолчанию создает другие домены приложений во время выполнения, это имеет смысл. - person Xanather; 15.07.2014

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

person Jan Barta    schedule 15.07.2014