我目前正在编写一个 IRC 客户端,并且一直在尝试找出一种存储服务器设置的好方法。基本上是一个大的网络列表及其服务器,就像大多数 IRC 客户端一样。
我决定使用 SQLite,但后来我想以 XML 格式(也许是最终格式)在线免费提供该列表,以供其他 IRC 应用程序使用。所以现在我可以以相同的格式在本地存储设置。
我对 ADO.NET 或 XML 的经验很少,所以我不确定它们在这种情况下会如何比较。
以编程方式使用是否更容易?有一个更快吗?有关系吗?
这是一个比你意识到的更模糊的问题。 “设置”可以包含很多东西。
有一个很好的 .NET 基础结构来处理配置文件中的应用程序设置。这些通常作为全局设置对象的属性公开给您的程序;的课程System.Configuration
命名空间负责读取和保存它们,并且 Visual Studio 中内置了一些工具来自动生成处理它们的代码。该基础设施支持的数据类型之一是StringCollection
,因此您可以使用它来存储服务器列表。
但对于大量服务器来说,这不是我的第一选择,原因有几个。我希望列表中的元素实际上是元组(例如主机名、端口、描述),而不是简单的字符串,在这种情况下,您最终必须格式化和解析数据以将其转换为StringCollection
,这通常表明您应该做其他事情。此外,应用程序设置是只读的(至少在 Vista 下),虽然您可以赋予设置用户范围以使其可持久化,但这会引导您走上一条在提交之前可能想要了解的路径。
因此,我要考虑的另一件事是:您的服务器列表只是一个列表,还是有一个代表它的内部对象模型?在后一种情况下,我可能会考虑使用 XML 序列化来存储和检索对象。 (我在应用程序配置文件中保留的唯一内容是序列化对象文件的路径。)我这样做是因为将简单对象序列化和反序列化为 XML 非常容易;您不必关心设计和测试正确的序列化格式,因为工具会为您完成这些工作。
我考虑使用数据库的主要原因是,如果我的程序执行了一系列操作,其结果需要是原子的和持久的,或者如果由于某种原因我不希望所有数据同时存储在内存中。如果每次 X 发生时,我都想要它的永久记录,那就引导我走向使用数据库的方向。通常,您不想对类似的事情使用 XML 序列化,因为如果您将所有对象保存到单个物理文件中,则实际上无法仅序列化一个对象。 (尽管简单地序列化整个对象模型来保存一个更改当然并不疯狂。事实上,这正是我公司的产品所做的,并且它指出了我不会使用数据库的另一种情况:如果数据的模式是经常改变。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)