У нас есть веб-приложение, состоящее из 3-слойного заднего конца (Controller/Biz/Data) с пользовательским интерфейсом. Наш слой данных несет полную ответственность за извлечение данных из экземпляра базы данных (SQL), бизнес-уровень передает данные и создает производные свойства, контроллер отвечает за отправку этих изменений в пользовательский интерфейс.Зависимость SQL и SignalR в трехуровневой архитектуре
У нас есть необходимость иметь обновления в реальном времени в нашем приложении, которые ДОЛЖНЫ отслеживаться на уровне базы данных (а не на уровне контроллера).
Мы решили использовать SQL Dependency и SignalR в качестве нашего решения.
Все, что я исследовал о SignalR и SQL Dependency, находится на уровне базы данных, где SQL Dependency будет определять изменения и широковещание, все в пределах уровня данных. По понятным причинам эта методология будет обходить производные свойства, созданные на бизнес-уровне, и дать нам другой перспективный объект.
Единственное решение, которое я могу придумать, - использовать SQL Dependency для отслеживания изменений, сбрасывать их в какую-либо таблицу/объект, а затем использовать опрос для извлечения данных из контроллера, уровня уровня, слоя данных и резервное копирование.
- Вопрос №1: Есть ли лучшее решение?
- Вопрос №2: Какое наилучшее решение включает логику бизнес-уровня, но все же можно отслеживать изменения на уровне данных?
- Вопрос № 3: Возможно ли это без опроса?
Это не разрешает мою проблему, так как этот тип кода/логики не должен быть на уровне бизнеса. Бизнес-уровень не должен знать ничего, связанного с схемой, и должен работать только с DTO. – mtsuggs
С какой целью? Таким образом, вы можете сидеть сложа руки и восхищаться тем, что вы поддерживали концепцию 3 уровня, за счет решения? Мы используем эти инструменты для решения проблем. Не каждая проблема будет соответствовать последней идее шаблонов проектирования, которые все мы любим в этом десятилетии. У вас есть решение, поэтому вы немного размываете свой контроллер и бизнес-уровень. Большая сделка. Просто держите просмотр или конечный пользователь от прямого доступа к данным, и вы все еще золотые. – Jason