用.NET中的磁盘支持的数据源替换DataTable

时间:2015-03-30 23:45:19

标签: c# .net datatable

我有一个应用程序,它发出一个HTTP请求,以JSON格式返回大量数据。收到响应后,应用程序将其反序列化为JSON,然后将其转换为DataTable对象,然后将其指定为DataSource对象的DevExpress.XtraGrid.GridControl。这种方法的问题在于一切都在内存中完成,如果返回一个非常大的响应,将消耗大量内存(有时> 1GB)。因此,我正在努力减少内存消耗。

在处理HTTP响应和JSON反序列化时减少内存使用似乎很简单 - 我只需要切换到使用流解析数据而不是消耗巨大的字符串。我不确定的是将JSON流转换为GridControl可以使用的内容而不将其全部加载到内存中。

我正在设想将数据存储在一些临时文件中,该文件支持我可以分配给DataSource的对象。我们的用户将快速滚动和过滤这些数据,所以我希望性能仍然非常活泼。换句话说,我需要将它存储在一些二进制结构中,允许快速读取/扫描表而无需进行太多的解析。像SQLite这样的东西可以工作,除了我想要更简单的东西。我对* nix比.NET更熟悉,所以我不太清楚.NET选项是什么。

什么是一个好的库/组件用于这样的事情?根据{{​​3}},我们对DataSource可以使用的对象有相当大的灵活性。

如果组件在内存中启动并且只有在内存超过阈值时才溢出到磁盘,那将特别好。

1 个答案:

答案 0 :(得分:1)

我认为你使用SQLite的想法可能是最有效的方法,但是我建议使用Entity Framework(简单),或者像dapper(快速)这样的微型ORM来填充它,不要浪费你的时间摆弄连接。