【发布时间】:2010-12-18 19:05:45
【问题描述】:
我正在构建一个小型应用程序并降低托管成本和依赖性,我计划将所有持久数据存储到 xml 文件而不是 Sql Server 数据库。
在这种情况下,网站受众仅限于朋友和家人 - 预计不会超过几个并发用户,因此网站不需要扩展。在所有事务中从磁盘打开和关闭 xml 文件是否可行?一个页面最多可以显示来自几个 xml 文件的数据,偶尔用户会执行需要更新一个的操作。
例如,大致遵循存储库模式来获取和保存“事物”,一些方法可能如下:
public IEnumerable<Thing> GetThings() {
XElement xml = XElement.Load(_xmlRepositoryPath);
var q = from s in xml.Descendants("Thing")
select new Thing {
//set properties...
};
return q;
}
public void SaveThing(Thing t) {
XElement xml = XElement.Load(_xmlRepositoryPath);
//update xml...
xml.Save(_xmlRepositoryPath);
}
这种方法有什么陷阱或问题吗?我宁愿避免添加额外的缓存或内存数据层的额外复杂性。额外的功劳:在用户负载或交易水平的什么时候,您认为需要以不同的方式实施?
【问题讨论】:
-
为什么要避免使用 SQL?如果您出于成本/许可原因而避免使用 MS SQL Server,那么 SQLite 是一个非常好的轻量级替代方案。如果您避免使用 SQL 以保持简单,是的,XML 可能是一个不错的选择。
-
由于托管成本而避免使用 SQL,但看起来 SQLite 是一种选择 - 我将不得不考虑这一点,谢谢!
标签: asp.net xml .net-3.5 linq-to-xml