关于处理输入/输出的建议

是否使用基于文件的 I/O 取决于如何响应以下决策树中的问题:

应用程序中的主要数据是否驻留在磁盘文件中

  • 是的,主数据驻留在磁盘文件中:

    应用程序是否将整个文件读入“文件打开”的内存中,并将整个文件写回“文件保存”上的磁盘

    • 是:这是默认的 MFC 文档案例。 使用 CDocument 序列化。

    • 否:这通常是基于事务的更新文件的情况。 按事务更新文件,不需要 CDocument 序列化。

  • 否,主数据不驻留在磁盘文件中:

    数据是否驻留在 ODBC 数据源中

    • 是的,数据驻留在 ODBC 数据源中:

      使用 MFC 的数据库支持。 本例的标准 MFC 实现包括一个 CDatabase 对象,如文章 MFC:将数据库类与文档和视图配合使用所示。 应用程序还可以读写辅助文件 - 应用程序向导的用途“数据库视图和文件支持”选项。 在这种情况下,将对辅助文件使用序列化。

    • 否,数据不驻留在 ODBC 数据源中。

      本例示例:数据驻留在非 ODBC DBMS 中;数据通过一些其他机制(如 OLE 或 DDE)读取。

      在这种情况下,不会使用序列化,并且应用程序不会包含“打开”和“保存”菜单项。 可能仍希望将 CDocument 用作 home base,就像 MFC ODBC 应用程序使用文档来存储 CRecordset 对象一样。 但不会使用框架的默认文件打开/保存文档序列化。

为了支持“文件”菜单上的“打开”、“保存”和“另存为”命令,框架提供文档序列化。 序列化读取和写入数据(包括从类 CObject 派生的对象)到永久存储,通常是磁盘文件。 序列化易于使用并满足许多需求,但是可能不适合许多数据访问应用程序。 数据访问应用程序通常按事务更新数据。 它们更新受事务影响的记录,而不是一次性读取和写入整个数据文件。

有关序列化的详细信息,请参阅序列化

另请参阅

序列化:序列化与数据库输入/输出