2017-04-21 30 views
0

我想创建一个N层应用程序,该应用程序由业务层和处理SQL数据库以外的数据源的存储库层组成,例如,如果我想实现存储库以读取数据从文本文件或XML文件中查询包含“C#”的行数或计算平均分数等非SQL数据源的存储库模式

看来,如果用户每次要从UI调用一次调用时,都希望查询文本文件中的数据对大文件来说效率不高,因为它每次都会通过图层调用到存储库,并且需要将所有数据加载到内存中,然后在每次将其返回给用户显示之前进行查询 - 有没有办法加载所有数据一次,然后允许多个查询为pe对它进行修改还是必须在被查询之前每次加载到内存中?

对于非SQL数据库数据源而言,是否有任何有效的方法让N-Tier设计不必每次都将大量数据/文本文件加载到内存中?

+2

听起来像只需要在存储库中实现缓存。就像从文本文件中读取数据一样,将其存储在一个变量(即,存储器中)中,然后从该变量中读取(如果存在)。如果您知道文件已更改,您可能想要更新该变量。但坦率地说,这个问题有点宽泛。有无数种方式可以按照您所问的方式实施n层设计。 –

+1

使用缓存(在.Net 4.0以上的MemoryCache)并通过后台进程刷新缓存。并且您的查询将从内存缓存中运行。 – loneshark99

+0

@MikeMcCaughan和loneshark感谢您的意见。它听起来像我需要缓存从文本文件返回的数据。我是否需要将文本文件的全部内容加载到存储库类中的可缓存对象/属性中?它如何通过多次交易被存储和重复使用,我不明白。 – Theomax

回答

1

您可以使用来自.net的内存缓存,然后让后台进程定期更新缓存。您的查询将从缓存中运行。

谢谢。