我有一个 C# WCF 服务,它托管 120 GB 的内存,Dictionary<File,byte[]>
可以非常快速地访问文件内容,这对我来说真的很好用。访问后,文件内容被包装在 MemoryStream 中并读取
该服务需要每天重新启动,以从数据库中加载一些每天都可能发生变化的静态数据。由于需要再次将大量数据加载到内存中,重新启动花费了很多时间
所以我决定在同一台机器上的不同进程中托管这个内存,并通过套接字访问它。数据进程将始终启动并运行。TcpListener/Client 和 NetworkStream 的使用方式与以下类似
memoryStream.Read(position.PositionData, 0, position.SizeOfData);
position.NetworkStream.Write(position.PositionData, 0, position.SizeOfData);
问题是:这比在同一进程中托管内存要慢 10 倍。预计会放缓,但 10 倍太多了。
我想到了 MemoryMappedFiles,但它们对于随机访问文件的特定视图更有用。我的文件访问从头到尾都是连续的。
在我的情况下是否可以使用不同的技术或库?或者这只是如此预期?