当前位置:  开发笔记 > 编程语言 > 正文

存储设置:XML与SQLite?

如何解决《存储设置:XML与SQLite?》经验,为你挑选了1个好方法。

我目前正在编写一个IRC客户端,我一直在试图找出一种存储服务器设置的好方法.基本上是大多数IRC客户端拥有的大型网络及其服务器列表.

我已经决定使用SQLite,但后来我希望以XML格式(也许是权威的)在线免费提供列表,供其他IRC应用程序使用.所以现在我可以以相同的格式在本地存储设置.

我对ADO.NET或XML的经验很少,所以我不确定在这种情况下他们会如何比较.

是否更容易以编程方式工作?一个更快吗?有关系吗?



1> Robert Rossn..:

这是一个比你意识到的更模糊的问题."设置"可以包含很多东西.

有一个很好的.NET基础架构来处理配置文件中的应用程序设置.通常,这些作为全局Settings对象的属性暴露给您的程序; System.Configuration命名空间中的类负责读取和持久化它们,Visual Studio中内置了一些工具来自动生成处理它们的代码.此基础结构支持的数据类型之一是StringCollection,您可以使用它来存储服务器列表.

但是对于大量的服务器列表,由于几个原因,这不是我的首选.我希望列表中的元素实际上是元组(例如主机名,端口,描述),而不是简单的字符串,在这种情况下,您最终必须格式化并解析数据以使其进入a StringCollection,并且通常表明你应该做其他事情.此外,应用程序设置是只读的(至少在Vista下),虽然您可以设置用户范围以使其保持可持续性,但这会导致您在执行之前想要了解的路径.

所以,我要考虑的另一件事是:您的服务器列表只是一个列表,还是有一个内部对象模型代表它?在后一种情况下,我可能会考虑使用XML序列化来存储和检索对象.(我在应用程序配置文件中唯一保留的是序列化目标文件的路径.)我这样做是因为将简单对象序列化和反序列化为XML非常容易; 您不必担心设计和测试正确的序列化格式,因为工具会为您完成.

我使用数据库的主要原因是,如果我的程序执行一系列操作,其结果需要是原子的和持久的,或者如果由于某种原因我不希望我的所有数据同时存在于内存中.如果每次X发生,我想要它的永久记录,这导致我朝着使用数据库的方向.通常,您不希望将XML序列化用于此类事务,因为如果要将所有对象保存到单个物理文件中,则无法实际序列化一个对象.(虽然简单地序列化整个对象模型以保存一个更改当然并不疯狂.事实上,这正是我公司的产品所做的,它指向另一种我不会使用数据库的情况:如果数据的模式是经常变化.)


它们都是交易的属性.事务是不可分割的,就像一个原子:交易中的所有操作都发生,或者它们都没有."持久"意味着一旦交易得以实施,它就会以某种形式保存,这种形式将持续下去.(它们也是一致且孤立的:请参阅ACID的维基百科条目.)
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有