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