gpt4 book ai didi

c# - 存储设置 : XML vs. SQLite?

转载 作者:数据小太阳 更新时间:2023-10-29 02:16:57 28 4
gpt4 key购买 nike

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

我决定使用 SQLite,但后来我想以 XML 格式(也许是最终格式)免费在线提供该列表,供其他 IRC 应用程序使用。所以现在我可能只是以相同的格式在本地存储设置。

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

是否更容易以编程方式使用?一个更快吗?重要吗?

最佳答案

这是一个比您意识到的更模糊的问题。 “设置”可以包含很多东西。

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

但是对于大量的服务器,这不是我的第一选择,原因有几个。我希望列表中的元素实际上是元组(例如主机名、端口、描述),而不是简单的字符串,在这种情况下,您最终将不得不格式化和解析数据以将其放入 StringCollection,这通常表示您应该做其他事情。此外,应用程序设置是只读的(至少在 Vista 下是这样),虽然您可以给设置用户范围以使其持久化,但这会引导您走上一条您可能希望在提交之前了解的路径。

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

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

关于c# - 存储设置 : XML vs. SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190276/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com