Я разработал систему, которая предъявляла аналогичные требования.Для достижения этой цели ключевыми элементами были:
- Плагины
- Обмен сообщениями о событиях - с использованием Emesary
Основная концепция заключается в том, что core не знает точно, какой модуль будет выполнять какую-либо задачу.
Сообщения определены и в точках внутри системы они отправляются.Отправитель не знает, требуется ли сообщение.Это эффективно разъединяет обширные фрагменты системы.
Таким образом, для выполнения задания подключается некоторый код, который регистрируется на шине обмена сообщениями о событиях и получает сообщения.Когда он получает сообщение, которое ему нужно обработать, он его обрабатывает.
Код Emesary чрезвычайно мал и эффективен в первом случае, когда я его назвал ( Emesary , и выиспользовать его бесплатно или из Emesary CodePlex
Поскольку система становится все более сложной, возможно, что происходит много событий, если вы получаете более 20 Кбит / с, это всегда былоВ моем дизайне добавлена фильтрация и маршрутизация (реализована за счет расширения интерфейса получателя, позволяющего получателю указывать сообщения, которые он хочет получать во время регистрации). Мне никогда не приходилось добавлять эту фильтрацию, потому что Emesary достаточно эффективен для обработкисообщений, которые занимают время.
Я создал версию Emesary, которая соединяет два уведомителя между разнородными системами с использованием WCF, Corba и TCP / IP. Я исследовал с помощью RabbitMQ и решилбыло возможно использовать это под Emesary при необходимости.
Базовый класс Diagram
Масштабируемый сервер.
Это довольно сложный пример, однако он показывает, куда входит Emesary. На этой диаграмме все, что имеет тень, может иметь несколькоэкземпляры, и это управляется за пределами того, что я пытаюсь объяснить здесь.