Достижение надежности приложения с помощью System.Добавление и изоляция процесса

#.net #add-in #system.addin

#.net #надстройка #system.addin

Вопрос:

Я много читал о System.AddIn (он же платформа управляемых надстроек). Это позволяет активировать надстройки в различных режимах изоляции, включая отдельные домены приложений или отдельные процессы.

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

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

Возможно ли использовать System.Добавление для создания хоста, который может выдержать необработанное исключение в одной из своих надстроек? Существуют ли примеры кода или статьи, в которых это где-нибудь объясняется? Если это невозможно с помощью System.Кроме того, существует ли другая архитектура, которая позволила бы это в приложении .NET?

Ответ №1:

Вы нашли эту статью?

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

Комментарии:

1. Да, я действительно прочитал это. В этой статье описывается способ регистрации того, какая надстройка привела к отключению вашего приложения, но это не позволяет вам спасти приложение от смерти. Начиная с .NET 2.0, любое необработанное исключение в любом домене приложения в процессе приведет к остановке всего процесса. AFAIK вы должны использовать отдельные процессы, чтобы иметь возможность защитить приложение от сбоев надстроек.