• Межмодульная коммуникация в расширяемых приложениях?

    @Deenovi Автор вопроса
    Попрбую конкретизировать, меня интересует взаимодействие между модулями в самом приложении.

    Есть приложение(ядро/хост), которое подгружает модули(.dll), в которых описана различная логика. Эти модули разумеется как либо нуждаются в функционале друг друга.

    Т.е. если я делал бы монолитное приложение, я бы явно взял необходимые функции из библиотек и как-то использовал их.

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

    Т.е. как мне допустим из модуля UI, нажав на кнопку, повлиять на другой модуль, когда связи между ними неявные. Когда я не могу тупо инстанцировать модуль А, в модуле Б и вызвать какую-то функцию.

    Если непонятно написал, попробую еще :)

    ------------------------------------------------------

    В общем то решение посредством MEF нашлось. Думал, что фреймворк сам залинкует все связи между всеми модулями, где есть необходимые контракты, но линкует он только между хостом и модулями где выполняется композиция. Решил проблему повторным поиском необходимых контрактов в плагинах, которым нужны свои расширения, и очередной композицией уже в самом плагине. Т.е. плагин выступает так-же мини хостом для своих расширений. Если будут какие-то поправки или идеи, буду рад вас выслушать, Всем большое спасибо! :)

    PS: Произошла магия и все стало линковаться как мне надо без танцев с бубном. Чудеса...
    Ответ написан
    Комментировать