3

私はちょうど C++ を学んでいて、QT をいじり始めたばかりで、ほとんどのアプリケーションがどのようにデータを保存するのか疑問に思っています。業界標準はありますか?それらは XML ファイル、テキスト ファイル、SQLite に保存されますか? 会計ソフトウェアが保存する必要があると言う機密データはどうですか? これのベストプラクティスが何であるかを学ぶことに興味があります。

ありがとう

4

7 に答える 7

7

この質問は広すぎます。唯一の答えは、特定のアプリケーションとデータの性質に依存し、C++で記述されているかどうかはほとんど関係がないということです。

たとえば、ユーザーが構成可能なアプリケーション設定は、多くの場合テキストファイルに保存されますが、Windowsでは通常レジストリに保存されます。会計アプリケーションは通常、データをある種のデータベースに保持します。

于 2009-05-14T15:15:00.447 に答える
4

アプリケーションデータを保存するための良い方法はたくさんあります(シリアル化と呼びます)。

個人的には、より大きなデータセットの場合、オープンフォーマットを使用する方がデバッグがはるかに簡単だと思います。たとえば、XMLを使用する場合は、データを開いた形式で保存できるため、ファイルの破損の問題がある場合(つまり、クライアントが何らかの理由でファイルを開くことができない場合)、見つけやすくなります。機密データが含まれている場合は、キー暗号化を使用してファイルに書き込む前に、いつでも暗号化できます。たとえば、Microsoftは、独自の形式を使用してOfficeドキュメントでxmlを開くことをやめました。。*x拡張子(.docx、.xlsxなど)を使用します。これは、実際にはxmlファイルを含む単なる圧縮フォルダーです。

もちろん、バイナリシリアル化の使用は、現在、ほとんどのスタンドアロンアプリケーションの業界標準です。ほとんどの場合、それは彼らが使用しているアプリケーションフレームワーク(古いMFCなど)が原因です。最新のアプリケーションフレームワークのほとんどのシリアル化手法を見ると、XMLシリアル化は非常によくサポートされています。

于 2009-05-14T15:15:54.627 に答える
2

まず、保存したいデータの種類を明確にする必要があります。

一部のアプリケーション設定を保存するだけの場合は、QSettingsを使用して設定をINIファイルまたはレジストリに保存します。

一部のアプリケーション設定だけではない場合は、XMLファイルまたはSQLを使用してください。

于 2009-05-14T15:19:04.727 に答える
1

標準的な方法はありませんが、複雑な構造化データを使用する場合は、SQLiteやMetakitなどの組み込みデータベースエンジン、またはBerkeleyDBファイルの使用を検討してください。XMLファイルもその役割を果たし、人間が読み書きできるようになります。環境設定では、INIファイルやWindowsレジストリなどを使用できます。要するに、それは本当にあなたの使用パターンに依存します。

于 2009-05-14T15:16:08.010 に答える
1

これは一般的な質問です。多くの場合と同様に、正しい答えはアプリケーションとそのニーズによって異なります。

  • ほとんどのデスクトップ アプリケーションは、エンド ユーザー データをファイルに保存します (Word と Excel を考えてください)。フォーマットは、XML、バイナリなど、あなた次第です。オブジェクトをファイルにシリアル化/逆シリアル化できる場合は、おそらく作業が楽になります。
  • 構成ファイルや一時データなどの内部アプリケーション データは、XML ファイルまたは SQLite などの軽量のローカル データベースに保存される場合があります。
  • 多くの場合、企業内で使用される「エンタープライズ」アプリケーションは、そのデータを SQL Server や Oracle などのバックエンド データベースに保存します。これは、企業のすべてのデータが 1 つの中央の場所に保存されるためです。その後、レポートなどに使用できます。

会計ソフトウェアの場合、ビジネス ドメインとエンド ユーザーを考慮する必要があります。たとえば、ソフトウェアを大企業に販売する場合は、何らかの形式のデータベースを使用してデータを保存することになるでしょう。それ以外の場合は、バイナリファイルで問題ありません。本当に偏執的である場合は、おそらく何らかの形式の暗号化が必要です。

于 2009-05-14T15:23:02.097 に答える
1

「最善の方法」と言うとき、「良い」とはどういう意味かを定義する必要があります。

問題は、さまざまな要件が互いに矛盾しているため、すべてを同時に満たすことができないことです。

たとえば、1 つの要件が「データへの同時マルチユーザー アクセス」である場合、これはデータベース エンジンを使用することを提案しますが、それは「できるだけ小さく」および「サードパーティ ソフトウェアへの依存を最小限に抑える」ことと矛盾します。

要件が「ポータブル データ形式」である場合、これは XML を示唆していますが、これは「コンパクト」および「インデックス付き」と競合します。

于 2009-05-14T15:23:13.360 に答える
-1

それらは XML ファイル、テキスト ファイル、SQLite に保存されますか?

はい。
また、バイナリ ファイルとリレーショナル データベース。
他に何か?

于 2009-05-14T15:14:19.450 に答える