ファイル ベースの I/O を使用するかどうかは、次のデシジョン ツリーの質問に対する回答によって異なります。
アプリケーション内のプライマリ データがディスク ファイルに存在するか
はい。プライマリ データはディスク ファイルに存在します。
アプリケーションがファイルを開いたメモリにファイル全体を読み取り、ファイル保存時にファイル全体をディスクに書き戻しますか?
はい: これは既定の MFC ドキュメント ケースです。 シリアル化を
CDocument
使用します。いいえ: これは通常、ファイルのトランザクション ベースの更新の場合です。 ファイルはトランザクションごとに更新します。シリアル化
CDocument
必要はありません。
いいえ。プライマリ データはディスク ファイルに存在しません。
データは ODBC データ ソースに存在するか
はい。データは ODBC データ ソースに存在します。
MFC のデータベース サポートを使用します。 この場合の標準 MFC 実装には、「
CDatabase
」の記事で説明されているように、 オブジェクトが含まれています。 アプリケーションでは、補助ファイルの読み取りと書き込みも可能です。これは、アプリケーション ウィザードの "データベース ビューとファイルサポートの両方" オプションの目的です。 この場合は、補助ファイルにシリアル化を使用します。いいえ。データは ODBC データ ソースに存在しません。
この場合の例: データは ODBC 以外の DBMS に存在します。データは、OLE や DDE などの他のメカニズムを介して読み取られます。
このような場合、シリアル化は使用せず、アプリケーションには [開く] メニュー項目と [保存] メニュー項目がありません。 MFC ODBC アプリケーションでドキュメントを使用して
CDocument
オブジェクトを格納する場合と同様に、CRecordset
をホーム ベースとして使用することもできます。 既定のフレームワークによるファイルの開閉や保存におけるドキュメントのシリアル化機能は使用しません。
[ファイル] メニューの [開く]、[保存]、および [名前を付けて保存] コマンドをサポートするために、フレームワークはドキュメントのシリアル化を提供します。 シリアル化では、クラス CObject
から派生したオブジェクトを含むデータを永続的ストレージ (通常はディスク ファイル) に読み書きします。 シリアル化は使いやすく、多くのニーズに対応しますが、多くのデータ アクセス アプリケーションでは不適切な場合があります。 データ アクセス アプリケーションは、通常、トランザクションごとにデータを更新します。 一度にデータ ファイル全体を読み書きするのではなく、トランザクションの影響を受けるレコードを更新します。
シリアル化の詳細については、「 シリアル化」を参照してください。