我有 ac# 应用程序,它每 1 秒生成一次数据(股票报价数据),每次迭代后可以丢弃这些数据。我想将此数据传递给 Coldfusion (10) 应用程序,我考虑过让 c# 应用程序每秒将数据写入文件,然后让 Coldfusion 应用程序读取该数据,但这很可能会导致问题两个应用程序尝试同时读取或写入文件的可能性?
我想知道使用内存映射文件是否会是更好的方法?如果是这样,我如何从 Coldfusion 访问内存映射文件?
任何建议将不胜感激。谢谢。
我有 ac# 应用程序,它每 1 秒生成一次数据(股票报价数据),每次迭代后可以丢弃这些数据。我想将此数据传递给 Coldfusion (10) 应用程序,我考虑过让 c# 应用程序每秒将数据写入文件,然后让 Coldfusion 应用程序读取该数据,但这很可能会导致问题两个应用程序尝试同时读取或写入文件的可能性?
我想知道使用内存映射文件是否会是更好的方法?如果是这样,我如何从 Coldfusion 访问内存映射文件?
任何建议将不胜感激。谢谢。
我们已经制作了许多股票应用程序,包括逐笔跟踪观察列表、图表等。我认为文件的想法可能不是一个好主意,除非您谈论的是定期间隔的单一股票。以我的经验,每“秒”发生一次变化可能是低估了这种情况。一些 stokes(AAPL 或 GOOG 就是很好的例子)在高峰时段每秒有数百个“滴答声”。
因此,如果您没有进行每一次滴答,而是真的每 1 秒“更新文件”,那么您的想法有一些优点,因为您可以使用文件监视网关为您触发事件并“看到”文件已更新。
但请记住,您实际上是在“中间”引入一些东西。现在有一个文件位于您的 Java 或 CF 应用程序和报价引擎之间。无论您选择做什么(文件句柄获取和释放等),这都会引入延迟。一个进程的锁可能会干扰另一个进程。
当您处理 facebook 更新时,毫秒并不重要 - 尽管所有十几岁的女孩可能不同意我的观点 :) 然而,对于股票报价,一半的任务是减少毫秒以使您的流程接近真实时间尽可能。
我们的选择通常是选择套接字而不是中间桥接数据的东西。报价引擎然后保持它的监视列表并像正常一样更新它的数组,但还将任何更新向下发送到套接字引擎,套接字引擎将其推送到可以处理它的东西(图表应用程序、监视列表、网页的套接字网关等)。
希望这会有所帮助-这不是一个明确的答案,而是更多地澄清了您面临的障碍。