【问题标题】:Execute code in .net application when new row is inserted in sql server database在 sql server 数据库中插入新行时在 .net 应用程序中执行代码
【发布时间】:2014-12-15 00:00:05
【问题描述】:

我正在开发一个股票市场金融应用程序,我必须在其中根据一些自定义算法生成买卖信号。我从一个 excel 文件中获取此数据,该文件在每个刻度上都会更改。我已经编写了 Excel VBA 用于将数据保存在 SQL Server db 中,以便我可以在我的 .net 应用程序中使用它。我的计算取决于每一个刻度。我可以将数据输入我的应用程序的一种方法是轮询。但我不认为这是一个好的应用程序设计,因为我必须每秒轮询 db。这不是最佳解决方案。所以我想知道当新记录插入数据库时​​我是否可以在.net中执行代码(比如.net应用程序中的某种插入触发器)。

与标题无关但与我的申请相关的其他问题。这是我第一次开发金融应用程序。所以想知道一些关于优化处理每秒(在某些情况下是微秒)流式传输的数据的技巧。我必须毫不拖延地获取数据、监控和计算每个刻度。立即对每个刻度应用计算非常重要。所以请求任何人帮助我提供一些关于应用程序设计的技巧。这个应用程序中唯一的安慰是我在 Excel 中获得的数据仅适用于少数选定的脚本,而不是所有非常庞大的脚本。

提前谢谢...

【问题讨论】:

  • 或者查看SQL-CLR trigger,它可以用 C# 或 VB.NET 编写,并且存在于 SQL Server 内部,并在给定的操作发生时执行(INSERTDELETEUPDATE)。 小心,但是:触发器应该非常精简和灵活 - 不要在触发器内进行大量耗时的工作!这会扼杀应用程序的所有性能和可扩展性!
  • 我不确定我是否理解。是 VBA 代码从流市场数据更新 Excel 文件,然后将数据保存到 SQL,而 SQL 又需要触发一些 C# 代码?为什么不在将数据保存到数据库时让 VBA 调用调用 Web 方法?
  • @Dan.. No VBA 不更新 Excel... 市场数据在 excel 中流式传输,我使用 VBA 将数据保存在 SQL 中,并且是使用数据我需要某种触发器,如建议由 marc_s 通知 .net c# 应用程序。
  • 使用 Excel 流式传输市场数据充其量只是一个杂项。您是否考虑过提供流接口的市场数据提供商,您可以使用该接口直接从您的 C# 应用程序订阅和消费?这将提供最佳的可扩展性和稳定性。使用您现有的设计。我认为 SqlDependency 或方法调用是最好的。

标签: .net sql-server winforms performance


【解决方案1】:

正如 marc_s 在他的评论中提到的,解决您当前问题的最佳解决方案可能是一个 CLR 触发器,它将使用新的滴答数据“调用”您的 .NET 进程。

总体而言,您所采取的方法将无法维持高产量,并且随着时间的推移会出现稳定性问题。除非您真的需要使用 Excel 来接收报价数据(如果您的唯一来源是彭博终端,这通常是这种情况,在这种情况下,您可能需要使用彭博检查您的限制:),我强烈建议您再次使用它用于流式数据。

此外,大多数使用刻度数据的应用程序根本不需要持久化数据。您似乎正在使用 SQL Server 作为系统中的消息传递层。考虑一个适当的消息传递解决方案(直接进程通信,如内存映射器文件、套接字或第三方库;或代理解决方案,如 EMS)。为回测收集数据可以通过一个单独的过程来完成。

【讨论】:

  • 感谢您的回答...不幸的是,我只能在 Excel 中获取数据。但我的安慰是,我将获得我需要的股票数据,而不是所有市场数据。现在我只有很少(大约 10 个)用于流式传输数据的脚本。正如您所说,我正在考虑使用 Excel 自动化直接从 Excel 获取数据并使用两个单独的线程。一个用于图表和计算,另一个用于在 sql 中保存数据。我希望从 excel 获取数据到 .net 应用程序不会消耗太多时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多