是否使用基于文件的 I/O 取决于你如何响应以下决策树中的问题:
应用程序中的主要数据是否驻留在磁盘文件中
是的,主数据驻留在磁盘文件中:
应用程序是否在文件打开时将整个文件读入内存,并将整个文件写回到文件保存上的磁盘
是:这是默认的 MFC 文档大小写。 使用
CDocument
序列化。否:这通常是基于事务的文件更新的情况。 按事务更新文件,不需要
CDocument
序列化。
否,主数据不驻留在磁盘文件中:
数据是否驻留在 ODBC 数据源中
是的,数据驻留在 ODBC 数据源中:
使用 MFC 的数据库支持。 本例的标准 MFC 实现包括一个
CDatabase
对象,如 MFC:将数据库类与文档和视图配合使用一文中所述。 应用程序还可以读取和写入辅助文件 - 应用程序向导的用途“数据库视图和文件支持”选项。 在这种情况下,你将对辅助文件使用序列化。否,数据不驻留在 ODBC 数据源中。
本例示例:数据驻留在非 ODBC DBMS 中;数据通过一些其他机制(如 OLE 或 DDE)读取。
在这种情况下,不会使用序列化,并且应用程序不会包含“打开”和“保存”菜单项。 你可能仍希望将 A
CDocument
用作主基地,就像 MFC ODBC 应用程序使用文档来存储CRecordset
对象一样。 但不会使用框架的默认文件打开/保存文档序列化。
为了支持“文件”菜单上的“打开”、“保存”和“另存为”命令,框架提供文档序列化。 序列化读取和写入数据(包括从类 CObject
派生的对象)到永久存储(通常是磁盘文件)。 序列化易于使用并满足许多需求,但在许多数据访问应用程序中可能不合适。 数据访问应用程序通常按事务更新数据。 更新受事务影响的记录,而不是一次性读取和写入整个数据文件。
有关序列化的信息,请参阅 序列化。