【发布时间】:2016-01-06 15:30:20
【问题描述】:
我们有一个 Web 应用程序,它由一个带有 UI 的 3 层后端(控制器/业务/数据)组成。我们的数据层单独负责从数据库实例 (SQL) 中提取数据,业务层向数据发送消息并创建派生属性,控制器负责将这些更改发送到 UI。
我们需要在我们的应用程序中进行实时更新,这些更新必须在数据库级别(而不是控制器级别)进行跟踪。
我们选择使用 SQL Dependency 和 SignalR 作为我们的解决方案。
我对 SignalR 和 SQL 依赖关系的所有研究都在数据库级别,其中 SQL 依赖关系将识别更改和广播,所有这些都在数据层内。由于显而易见的原因,这种方法会绕过在业务层中创建的派生属性,并为我们提供不同的外观对象。
我能想到的唯一解决方案是使用 SQL Dependency 来跟踪更改,将它们转储到某个表/对象中,然后使用轮询从控制器获取这些更改,到 biz 层,到数据层,然后返回向上。
- 问题 #1:有更好的解决方案吗?
- 问题 #2:包含业务层逻辑但仍能够跟踪数据层更改的最佳解决方案是什么?
- 问题 #3:如果不进行轮询,这是否可行?
【问题讨论】:
标签: c# asp.net sql-server signalr sqldependency