我有一个Delphi应用程序,它生成一个数据blob,我当前正在以xml的形式写入文件系统。然后由C#.Net应用程序读取该数据以进行进一步处理。
问题是对象图很大,生成的xml文件大小为2 GB +。编写xml文件需要相对较长的时间,并且还要读取它。
如何在RAM中将数据传输到更快的位置,而不是写入文件系统?
我有两个应用程序的源代码和编译器。我在一个应用程序中使用.Net版本4.0和VS2010。另一个我正在使用Delphi 5(我可以访问更高版本,但我不确定迁移是否会有所帮助)。
更新:感谢所有的建议,这需要处理很多。我会在进一步审查后回复。
答案 0 :(得分:6)
更多建议:
我的个人建议是套接字,在Delphi端使用Indy,在.NET端使用System.Net.Sockets。
答案 1 :(得分:3)
您可以将两者集成到一个流程中。这将为您提供速度优势,因为您不需要任何进程间通信。
三种方法:
如果您使用Delphi XE2或更高版本,可以在一个64位进程中完成所有操作,并且更容易分配2GB +内存。
答案 2 :(得分:2)
通过在将XML写入磁盘时压缩(gzip等)XML流,然后在另一端解压缩,您可以大大提高速度。如果你的尺寸减少10倍,那么不要惊讶,因此I / O.当然,您正在为CPU工作交易I / O,但对CPU而言相对容易。
答案 3 :(得分:1)
您可以将其作为SOAP消息发送。
答案 4 :(得分:0)
最好的方法,我现在使用它以30fps将图像从c#转移到delphi:
1-创建一个c#COM LIBRARY(暴露GUI元素)
2-使用regasm -register -tlb dllname.dll注册c#COM LIBRARY
3-加载在delphi中创建的类型库,并使用c#函数发送ou,恢复任何数据