正确保存XDocument

时间:2011-02-07 16:45:12

标签: c# asp.net

我的网站上有自定义数据服务,应该每10分钟刷新一次数据,而不会让用户停机。 (asp.net mvc3,mssql 2008,c#)

目前它每10分钟刷新一次数据并更新我的数据库(mssql)没问题。但问题是,我不想为每个用户请求从数据库中读取数据,而是在刷新数据后立即将其保存到XML文件中,这样用户就可以在没有任何额外数据库连接或进程的情况下获取它。

因此,将有一个进程重新收集数据并写入XML,同时许多用户将每秒请求该XML。

由于我对文件写入/读取的内容知之甚少,我不确定在写入之前是否应该锁定文件,因为其他进程可能正在读取它。或者也许没关系,因为只有一个流程会写,其他读取/请求它不会产生任何问题?也不确定XDocument的Save函数在写入之前是否已经锁定。

所以,总而言之;如何安全地将我的XDocument对象保存到xml文件中,而其他任何进程可能正在读取/请求该文件?

或者,我应该只是从Sql中读取数据(永远不要为每个用户处理进程时间和延迟)并返回XDocument对象,我猜这会更容易吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

我认为将XML写入文件是一个坏主意 - 读取它可能比调用数据库更快。相反,我会使用ASP.NET caching infrastructure,即使用Cache类将数据缓存到内存中 - 这会更快。

答案 1 :(得分:0)

您有一个数据库经过设计,测试和构建,可以向用户提供数据,您为什么要从中保存数据并实现自己的基于文件系统的数据库?

我认为您提到的最后一个选项是最好的,只需连接到数据库并根据需要将XML检索到用户。如果您有高效的查询和可靠的DataAccessLayer,那么数据库将表现良好。

答案 2 :(得分:0)

另一种选择是使用缓存机制,例如memcache或AppFabric Cache。