Мы создаем приложение .NET, в которое загружаем сборки внешнего кода («плагины»).До этого момента мы загружали эти сборки в один (основной) домен приложения.
Мы хотели бы иметь возможность выгрузить сборку после ее загрузки.
С этой целью, мы разрабатываем систему, которая создаст отдельный вторичный AppDomain для размещения сборок плагинов, которые будут выгружены по желанию.
Проблемы, которые возникают у нас с этим подходом:
- ПлагинDLL нужно будет взаимодействовать с классами в главном домене приложений (например, в логгере).
- Данные, отправляемые в подключаемый модуль dll, не обязательно помечаются как Serializable или производные от MarshalByRefObj.
Существует ли какая-либо распространенная практика разделения приложений в таких случаях?Какое лучшее решение мы могли бы найти?
Еще один интересный вопрос - почему MarshalByRef не идет по атрибуту и не заставляет нас наследовать от объекта?