Поделиться через


Рекомендации по обработке ввода-вывода

Независимо от того, используете ли вы операции ввода-вывода на основе файлов или не зависит от того, как отвечать на вопросы в следующем дереве принятия решений:

Находится ли первичные данные в приложении в файле диска

  • Да, основные данные находятся в файле диска:

    Приложение считывает весь файл в память при открытии файла и записывает весь файл обратно на диск при сохранении файлов

    • Да. Это вариант документа MFC по умолчанию. Используйте CDocument сериализацию.

    • Нет. Обычно это относится к обновлению файла на основе транзакций. Файл обновляется на основе каждой транзакции и не требует CDocument сериализации.

  • Нет, первичные данные не находятся в файле диска:

    Находится ли данные в источнике данных ODBC

    • Да, данные находятся в источнике данных ODBC:

      Используйте поддержку базы данных MFC. Стандартная реализация MFC для этого дела включает CDatabase объект, как описано в статье MFC: использование классов баз данных с документами и представлениями. Приложение также может считывать и записывать вспомогательный файл — назначение мастера приложений "как представление базы данных, так и поддержка файлов". В этом случае для вспомогательного файла будет использоваться сериализация.

    • Нет, данные не находятся в источнике данных ODBC.

      Примеры этого случая: данные находятся в СУБД, отличном от ODBC; данные считываются с помощью другого механизма, например OLE или DDE.

      В таких случаях вы не будете использовать сериализацию, и у приложения нет элементов меню "Открыть" и "Сохранить". Возможно, вы по-прежнему хотите использовать CDocument как домашнюю базу, так же как приложение ODBC MFC использует документ для хранения CRecordset объектов. Но вы не будете использовать сериализацию документов по умолчанию для платформы: открытие и сохранение документов.

Для поддержки команд "Открыть", "Сохранить" и "Сохранить как" в меню "Файл" платформа предоставляет сериализацию документов. Сериализация считывает и записывает данные, включая объекты, производные от класса CObject, в постоянное хранилище, обычно файл диска. Сериализация проста в использовании и обслуживает многие из ваших потребностей, но она может быть неуместна во многих приложениях для доступа к данным. Приложения для доступа к данным обычно обновляют данные на основе каждой транзакции. Они обновляют записи, затронутые транзакцией, а не считывают и записывают целый файл данных одновременно.

Сведения о сериализации см. в разделе "Сериализация".

См. также

Сериализация: сериализация и выходные данные базы данных