2013-01-14 75 views
0

我想我正在寻找一个最佳实践,但是我已经阅读了有关各种方式的冲突信息。我试图把一个网页的例子放在一起,其中包含一个显示数据库中的内容的网格信息。该表可以通过表单从网页更新,但也可以从其他各种来源更新。轮询数据库更改:OracleDependency,SignalR或者是那么多?

我该如何去警告用户更新?这就是我经历了这么远了:

  1. SignalR可以用来让用户“订阅”网格上的更新。这将用于从表单到数据库的插入/更新以提醒用户。但是来自其他非.NET源的实际数据如何呢?

  2. OracleDependency:当数据库更新时,回调命中.NET。我读过这个不好用于不断更新的桌子上。这是为什么?这是一个可行的选项,可以连接到SignalR并警告组中的用户?

  3. 基本民意调查:我是否在反思这一点?我应该只是轮询每个客户端上的数据库,获取更改并通过AJAX插入到表中?

+0

FWIW - 我退了一点问题,并要求它是什么,你实际上是试图通过在表级别显示记录的实现?在我看来,在寻找最佳实践时,您可能会发现追踪数据库在网格中的更改并不是建议的做法,因为更改的上下文在查看表格时可能非常透明并且没有实际价值考虑FK等)。只是我的魔鬼提倡思考:) –

回答

0

我会去一个“长时间运行”的控制器轮询数据源。这样你只有一个点轮询数据源...然后当数据改变时,你可以告诉客户订阅。

我不确定signalR是否有长时间运行的控制器,但您可能会想出来。或者使用支持此功能的XSockets.NET ..

我强烈建议不要从每个客户端进行轮询,不管您选择什么。

问候 Uffe