我有一个项目需要在ASP.NET中访问大量的专有数据。在Linux/PHP上,通过将数据加载到共享内存中来完成此操作。我想知道是否尝试使用内存映射文件是可行的,还是有更好的.NET支持的更好方法。我考虑使用Data Cache,但不确定在Cache中保存数据大小的所有问题。
我知道有点晚了,但.NET 4.0框架现在原生支持内存映射文件:
http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx
你可能想把它放在Cache[]对象中。你可以根据实际文件设置缓存过期时间。然后,每当你修改实际文件时,缓存中的对象内容将为null,你可以重新加载它。如果你处理大量字节,这可能不是合适的方法。
byte[] fileBytes = Cache["fileBytes"];
if (null == fileBytes) {
// reload the file and add it to the cache.
string fileLocation = Server.MapPath("path/to/file.txt");
// Just a same of some bytes.
fileBytes = new byte[10];
Cache.Insert(fileLocation, fileBytes, new System.Web.Caching.CacheDependency(fileLocation));
}
关于缓存和大量数据的性能特征,我想我没有一个具体的答案。http://www.alachisoft.com/ncache/asp-net-cache.html指出,您可以获得2到3个G的缓存空间,这必须在您的应用程序和缓存之间共享。