我有大型(20-30 MB)序列化数据对象(从excel序列化的数据)作为我的.net应用程序的输入。每当用户通过webservice请求时,我都需要根据用户输入以及序列化对象中的数据来处理输出。
在.net应用程序(缓存/会话/应用程序对象)中存储这些对象的有效方法是什么?因为这些序列化数据对象在一年内会更改3到4次。每次用户请求发送到webserivce时,我都不想将这些序列化对象数据加载到内存中。
此外,我想知道这些对象如何存储在内存和磁盘中,这样就不会占用太多内存空间和磁盘空间。
答案 0 :(得分:1)
使用 static 变量存储序列化对象。正如您所提到的,序列化对象具有全局范围,因此不要将其存储在会话中,因为它是 user / session 。此外,我们经常将项目存储在主要使用的缓存中,并定期更新,但正如您所提到的,它将在一年内更新3-4次,因此缓存在IMO中不是一个好的候选者。
答案 1 :(得分:0)
我不确定我是否了解您的需求,但我认为您应该更改应用程序架构并将数据存储为条目,而不是将其序列化为20Mb对象。序列化20mb对象是个坏主意。
使用MS SQL Server Compact,它是来自MS的免费且轻量级的进程内数据库,程序集占用大约1Mb的磁盘空间。我甚至将它用于Windows服务应用程序,它表现得非常快速和可靠。