2010-04-30 2 views
0

Имеет ли .NET (C#) что-нибудь вроде движка сигналов Django?есть ли сигнальный эмиттер/потребительский движок (как в Django) для .NET (C#)

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

Мне очень нравится идея приложений Django, где отдельные приложения вводят новую функциональность и абсолютно независимы. Связь между приложениями реализована с помощью сигналов.

Я нашел, что в .NET есть что-то, что позволяет разделить бизнес-проект на многие отделенные «приложения» (плагины, зоны, модули, вы его называете) и сделать связь с помощью каких-то «сигналов».

Например, у нас есть простой поток порядка. Мы можем добавить «приложение купона», которое, если оно существует в проекте, добавляет возможности использовать скидочный купон. Мы можем добавить модуль «кросс-продажи», который, если существует, добавляет возможности предложить продукты кросс-продажи Модуль уведомлений по электронной почте, который, если существует, добавляет возможности отправлять уведомления по электронной почте заказа. Но в то же время все эти модули «автономны» означают, что связь между ними осуществляется с использованием излучающих сигналов (ORDER_PROCCESS_START, ORDER_SUCCESS и т. Д.), А другие модули могут подписываться на эти сигналы и обрабатывать их соответствующим образом.

Эта архитектура не связана с сетью, вся бизнес-логика обрабатывается на стороне сервера, как без непосредственной работы с HTTP.

Интересно, хорошая ли архитектура из кода поддержания и тестирования нескольких, возможно ли это сделать в .NET? Какие-то недостатки, которые я сейчас не понимаю?

ответ

0

Я не знаком с Django - но сразу две системы приходят на ум

1) Prism

2) MEF

Теперь я знаю, thatt Prism действительно UI шаблон - но аггрегатор событий, который они используют в нем, может быть полезен при сегментировании/обмене сообщениями между слабо связанными проектами

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

Смежные вопросы