入出力処理の推奨事項

ファイルベースの I/O を使用するかどうかは、以下のデシジョン ツリーの質問への答えによって異なります。

アプリケーションの主要なデータがディスク ファイルに存在するか

  • はい。主要なデータはディスク ファイルに存在します。

    アプリケーションは、[ファイルを開く] でファイル全体をメモリに読み取り、[ファイルの保存] でファイル全体をディスクに書き込みますか

    • はい: MFC ドキュメントの場合は、それが既定の動作となります。 CDocument シリアル化を使用してください。

    • いいえ: トランザクションベースのファイル更新の場合は、通常こちらになります。 ファイルの更新はトランザクション単位で行います。CDocument シリアル化は必要ありません。

  • いいえ。プライマリ データはディスク ファイルに存在しません。

    データは ODBC データ ソースに存在しますか

    • はい。データは ODBC データ ソースに存在します。

      MFC のデータベース サポートを使用してください。 このケースにおける標準的な MFC 実装には、CDatabase オブジェクトがあります (「MFC : ドキュメントとビューを用いたデータベース クラスの使用」の記事を参照)。 アプリケーションが補助ファイルの読み取りと書き込みを行う場合もあります。アプリケーション ウィザードに [both a database view and file support] (データベース ビューとファイル サポートの両方) というオプションがあるのはそのためです。 このケースでは、補助ファイルのシリアル化を使用することになります。

    • いいえ。データは ODBC データ ソースに存在しません。

      たとえば、ODBC 以外の DBMS にデータが存在していて、OLE や DDE など他のなんらかのメカニズムでデータが読み取られるケースが該当します。

      そのような場合、シリアル化は使用しません。また、アプリケーションに [開く] や [保存] といったメニュー項目も存在しません。 それでも、MFC ODBC アプリケーションがドキュメントを使用して CRecordset オブジェクトを格納するように、CDocument をホーム ベースとして使用したい場合があります。 ただし、フレームワークの既定のドキュメント シリアル化 ([ファイルを開く] と [ファイルの保存]) は使用しません。

[ファイル] メニューで [開く]、[上書き保存]、[名前を付けて保存] の各コマンドをサポートするために、フレームワークはドキュメントのシリアル化に対応しています。 シリアル化は、永続記憶域 (通常はディスク ファイル) との間でデータ (CObject クラスから派生したオブジェクトなど) の読み取りと書き込みを行うものです。 シリアル化は使いやすく、さまざまなニーズに応えますが、多くのデータアクセス アプリケーションにとって適切ではない場合があります。 データアクセス アプリケーションは通常、トランザクション単位でデータを更新します。 データ ファイル全体の読み取りと書き込みが一度に行われるのではなく、トランザクションの影響を受けたレコードが更新されます。

シリアル化については、シリアル化に関するページを参照してください。

関連項目

シリアル化: シリアル化とデータベースの入出力