C# как организовать подписку на событие одного сервиса в другом в ASP.NET?
Здравствуйте.
Есть как минимум два сервиса (класс с бизнес логикой). В одном из них (Класс А) выполняется метод по добавлению данных. Когда это происходит, необходимо вызвать специальный метод остальных классов, которые выполнять каждый свою часть логики, причем количество таких классов может со временем меняться. Кроме того, приложение должно работать в среде asp.net mvc
Я вижу реализацию этой задачи так:
- описать интерфейсы и реализовать их (для уменьшения связей)
- реализовать класс А, в котором описать делегат и событие (вот здесь мне кажется, можно использовать что-то более современное...)
- на уровне веб приложения по шаблону синглтон создать экземпляры классов
- классы, которые должны реагировать на добавление данных в классе А подписать на событие класса А
Теперь вопрос: насколько такой подход хорош и что можно улучшить, для улучшения дизайна?
Спасибо.
Спасибо за отклик.
Задача такая: есть класс А у которого есть метод М, принимающий объект. есть интерфейс и реализующие его классы (B, C, D, ...). количество этих классов может быть любым. Нужно сделать так, чтобы при вызове метода М, класс А вызывал определенные методы классов B,C,D,... Причем методы каких классов будет вызывать метод М, должен определять какой-то внешний код. сценарий использования я вижу такой:
получаем через IoC экземпляр класса А,
вызываем метод М,
а он сам вызываем методы X классов B,C,D,..., причем экземпляры нужно предварительно создать.
Если мне нужно будет добавить к вызовам метод класса E, то я хочу сделать это изменив код в одном месте, а не бегать по всему коду проекта.
Руслан: Не вижу никаких проблем, достаточно в классе М определить как именно читать тот самый сценарий и в соответствии с ним вызвать нужные методы, не вижу никаких проблем, при желании методы можно и в параллельных потоках вызвать, если бизнес логика позволяет. Изменять код нужно будет только чуток изменив класс М и сценарий.