#.net #add-in #system.addin
#.net #надстройка #system.addin
Вопрос:
Я много читал о System.AddIn (он же платформа управляемых надстроек). Это позволяет активировать надстройки в различных режимах изоляции, включая отдельные домены приложений или отдельные процессы.
Большинство статей, которые я нашел, намекают на тот факт, что изоляция процесса может использоваться для достижения надежности приложения, когда надстройка может завершиться сбоем из-за необработанного исключения, но приложение не завершится сбоем и сможет выгрузить нарушающую надстройку и продолжить работу.
Мне еще предстоит найти статью, в которой действительно подробно описывается, как это сделать. Я пытался разобраться методом проб и ошибок, но до сих пор все, что я пробовал, приводило к сбою хост-приложения, если надстройка выдает необработанное исключение. У меня каждая надстройка запущена в своем собственном процессе, но, похоже, есть еще кусочки головоломки, которые я не понимаю.
Возможно ли использовать System.Добавление для создания хоста, который может выдержать необработанное исключение в одной из своих надстроек? Существуют ли примеры кода или статьи, в которых это где-нибудь объясняется? Если это невозможно с помощью System.Кроме того, существует ли другая архитектура, которая позволила бы это в приложении .NET?
Ответ №1:
Вы нашли эту статью?
Вы позволяете вашей надстройке запускаться в другом домене приложения и прослушиваете неперехваченное исключение, возникающее в этом домене.
Комментарии:
1. Да, я действительно прочитал это. В этой статье описывается способ регистрации того, какая надстройка привела к отключению вашего приложения, но это не позволяет вам спасти приложение от смерти. Начиная с .NET 2.0, любое необработанное исключение в любом домене приложения в процессе приведет к остановке всего процесса. AFAIK вы должны использовать отдельные процессы, чтобы иметь возможность защитить приложение от сбоев надстроек.