我有一个C#应用程序每1秒钟产生数据(股票价格数据),可以在每次迭代后丢弃。 我想将这些数据传递给Coldfusion(10)应用程序,并且我考虑让C#应用程序每秒将数据写入文件,然后让Coldfusion应用程序读取这些数据,但这很可能会导致问题两个应用程序试图同时读取或写入文件的可能性?如何从Coldfusion 10访问c#内存映射文件?
我想知道如果使用内存映射文件将是一个更好的方法?如果是这样,我如何从Coldfusion访问内存映射文件?
任何意见将不胜感激。谢谢。
我有一个C#应用程序每1秒钟产生数据(股票价格数据),可以在每次迭代后丢弃。 我想将这些数据传递给Coldfusion(10)应用程序,并且我考虑让C#应用程序每秒将数据写入文件,然后让Coldfusion应用程序读取这些数据,但这很可能会导致问题两个应用程序试图同时读取或写入文件的可能性?如何从Coldfusion 10访问c#内存映射文件?
我想知道如果使用内存映射文件将是一个更好的方法?如果是这样,我如何从Coldfusion访问内存映射文件?
任何意见将不胜感激。谢谢。
我们已经制作了多个股票申请,包括核对清单的勾号跟踪,图表等。我认为,除非您定期讨论单一股票,否则文件的想法可能不是一个好主意。根据我的经验,每改变一次“秒”都可能是低估案件的方式。一些stokes(AAPL或GOOG是很好的例子)在高峰时段每秒钟有数百个“嘀嗒”。
所以,如果你不是每隔一个滴答滴答,但实际上是每1秒更新一次文件,那么你的想法有一些优点,你可以使用一个文件监视网关为你启动事件并“看到”该文件已更新。
但请记住,您实际上正在引入“在中间”。文件现在位于您的Java或CF应用程序和报价引擎之间。无论您选择做什么(文件句柄获取和释放等),这都会引入延迟。而一个进程的锁可能会干扰另一个进程。
当你处理facebook更新时,毫秒数并不重要 - 尽管所有的少女可能不同意我的观点:)然而,使用股票报价,一半的任务是削减微秒以获得流程尽可能接近实时。
我们的选择通常是选择套接字而不是中间的东西来桥接数据。引用引擎然后保持它的监视列表并更新它的数组,像普通的一样,但是也将任何下载的更新发送到套接字引擎,将其推送到可以处理它的东西(图表应用程序,监视列表,用于网页的套接字网关等)。
希望这有助于 - 这不是一个明确的答案,但更多的是澄清你面临的障碍。
非常感谢您的详细回复Mark,非常感谢。你是对的,如果是我以后每次打勾,我都会低估任务,我甚至不会尝试这样做。我的编程技能非常有限。实际上,我只是在每隔1秒读取一段时间才能看到一段“接近”的实况总览。我不担心增加一些额外的延迟,但担心你提到的锁。这就是为什么我认为内存映射文件(非持久性)可能是更好的方法?但我不知道如何通过CF( – AlanJames
)访问此文件,如果您只想获得更快的文件I/O以使您的想法能够使用虚拟驱动器(创建类似“F: \“不在物理内存中 - 对其他进程是透明的)。这可能会让你在那里...祝你好运,你将推动你的方法的极限:) –