我刚学 C++,刚开始玩 QT,我坐在这里想知道大多数应用程序是如何保存数据的?有行业标准吗?他们是否将其存储在 XML 文件、文本文件、SQLite 中?那些说会计软件需要保存的敏感数据呢?我只是有兴趣了解最佳实践是什么。
谢谢
这个问题太笼统了。唯一的答案是它取决于特定应用程序和数据的性质,而它是否用 C++ 编写与它几乎没有关系。
例如,用户可配置的应用程序设置通常存储在文本文件中,但在 Windows 上,它们通常存储在注册表中。会计应用程序通常将其数据保存在某种数据库中。
存储应用程序数据有很多好方法(称为序列化)。
就个人而言,我认为对于更大的数据集,使用开放格式更容易调试。例如,如果您使用 XML,您可以将数据存储在一个开放的表单中,这样如果您遇到文件损坏问题(即客户端由于某种原因无法打开您的文件),就更容易找到它。如果那里有敏感数据,您始终可以在使用密钥加密将其写入文件之前对其进行加密。例如,微软已经从使用专有格式转为在其办公文档中打开 xml。他们使用 .*x 扩展名(.docx、.xlsx 等)。它实际上只是一个带有 xml 文件的压缩文件夹。
使用二进制序列化当然是目前大多数独立应用程序的行业标准。这很可能是因为他们使用的应用程序框架(例如旧的 MFC)。如果您查看现代应用程序框架中的大多数序列化技术,就会发现 XML 序列化得到了很好的支持。
这是一个普遍的问题。像许多事情一样,正确的答案取决于您的应用程序及其需求。
对于会计软件,您需要考虑业务领域和最终用户。例如,如果该软件要出售给大型企业,您可能会使用某种形式的数据库来保存数据。否则二进制文件会很好,如果你真的很偏执,可能会使用某种形式的加密。
当您说“最好的方式”时,您必须定义“好”的含义。
问题是各种要求相互冲突,因此您不能同时满足所有要求。
例如,如果一个要求是“对数据的并发多用户访问”,那么这建议使用数据库引擎,但这与“尽可能小”和“对第 3 方软件的依赖最小化”相冲突。
如果要求是“可移植数据格式”,那么这建议使用 XML,但这与“紧凑”和“索引”相冲突。
没有标准做法,但是如果您想使用复杂的结构化数据,请考虑使用嵌入式数据库引擎,例如 SQLite 或 Metakit,或 Berkeley DB 文件。XML 文件也可以完成这项工作并且是人类可读/可写的。首选项可以使用 INI 文件或 Windows 注册表等。简而言之,这实际上取决于您的使用模式。
他们是否将其存储在 XML 文件、文本文件、SQLite 中?
是的。
此外,二进制文件和关系数据库。
还要别的吗?