есть ли источник сигнала / приемник (как в Django) для .NET (C #) - PullRequest
0 голосов
/ 30 апреля 2010

Имеет ли .NET (C #) что-то похожее на движок сигналов Django?

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

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

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

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

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

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

1 Ответ

0 голосов
/ 30 апреля 2010

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

1) Призма

2) MEF

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...