Мы создаем приложение (WinForms, .NET 3.5), которое загружает «подключаемые» библиотеки DLL во вторичный домен приложений. Вторичный домен приложений иногда должен взаимодействовать с первым (более конкретно, вызывать или получать данные из объектов, созданных в основном домене приложений).
Я прочитал большую часть материала о доменах приложений и связи между ними.
Пока что единственное простое решение, которое я видел, это наследование от MarshalByRefObject и передача TransparentProxy во 2-й домен приложений , вызывая методы на Прокси.
Этот метод имеет свои недостатки (не всегда возможно наследовать от MBRO, например, в случае типов каркаса или типов, которые уже наследуют от другого класса, статических полей / классов и т. Д.).
Поскольку текущие точки связи довольно постоянны (только 2-3 сценария, которые требуют связи), я подумал о создании простого Mediator класса со следующими свойствами:
- Будет создано в 1-м (основном) домене приложения.
- Будет функционировать только как «пропускающий сообщение» для «реальных» объектов, которые создаются в основном домене приложений.
- Будет наследоваться от MBRO, а ссылка на прокси будет отправлена на 2-й домен приложений.
Методы для этого прокси-объекта будут вызваны, что, в свою очередь, вызовет методы для «реальных» объектов в 1-м домене приложений.
Мои вопросы -
- Это похоже на логический дизайн?
- Что еще более важно, существует ли уже класс посредника / передачи сообщений в WCF или какой-либо другой среде взаимодействия? это похоже на общую концепцию, и мне интересно, есть ли что-то подобное.