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


Кэширование данных

Можно кэшировать объекты данных в настройках на уровне документа, чтобы обеспечить возможность доступа к данным в автономном режиме или без открытия Microsoft Office Word или Microsoft Office Excel.Для кэширования объекта он должен иметь тип данных, отвечающий определенным требованиям для присоединения к кэшированным данным.Многие общие типы данных платформы .NET Framework, включая String, DataSet и DataTable отвечают этим требованиям.

Применение. Сведения этого раздела применяются к проектам уровня документа для следующих приложений: Excel 2013 и Excel 2010; Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

Существует два способа добавления объекта в кэш данных:

После добавления объекта в кэш данных можно получить доступ и изменять кэшированные, не запуская Word или Excel.Дополнительные сведения см. в разделе Доступ к данным в документах на сервере.

Требования для кэшируемых объектов данных

Чтобы кэшировать объект данных в решении, этот объект должен соответствовать следующим требованиям:

  • Быть открытым полем чтения-записи или свойством ведущего элемента, таким как классы ThisDocument или ThisWorkbook.

  • Не должен быть индексатором или другим параметризированным свойством.

Кроме того, объект данных должен быть сериализован классом XmlSerializer. Это означает, что этот тип объекта должен иметь такие характеристики:

  • Быть открытым типом.

  • Иметь открытый конструктор без параметров.

  • Не выполнять код, требующий дополнительных привилегий безопасности.

  • Представлять только отрытые свойства чтения-записи (другие свойства будут игнорироваться).

  • Не представлять многомерные массивы (вложенные массивы допускаются).

  • Не возвращать интерфейсы из свойств и полей.

  • Если он является коллекцией, не реализовывать класс IDictionary.

При кэшировании объекта данных в документ, среда выполнения Visual Studio Tools for Office (cреда выполнения) сериализует объект в XML-строку, которая сохраняется в пользовательской части XML документа.Дополнительные сведения см. в разделе Общие сведения о пользовательских XML-частях.

Ограничения на размер кэшированных данных

Существуют некоторые ограничения общего объема данных, который можно добавить в кэш данных документа, а также размера каждого отдельного объекта в кэше данных.Если превысить эти ограничения, приложение может неожиданно закрыться во время сохранения данных в кэш.

Чтобы избежать превышения этих ограничений, следуйте приведенным ниже правилам.

  • Не добавляйте в кэш данных объект, превышающий 10 МБ.

  • Не добавляйте более 100 МБ данных в кэш данных отдельного документа.

Это приблизительные значения.Точные ограничения зависят от нескольких факторов, включая доступный объем ОЗУ и количество выполняемых процессов.

Управление поведением кэшированных объектов

Для получения более широких возможностей управления поведением кэшированных объектов можно реализовать интерфейс ICachedType в типе кэшированного объекта.Например, можно реализовать этот интерфейс, если необходимо контролировать способ уведомления пользователя при изменении объектов.Примеры кода, в которых показано, как реализовать тип ICachedType, см. в примере динамических элементов управления Word и в примере динамических элементов управления Excel класса ControlCollection в разделе Образцы и пошаговые руководства разработки Office.

Сохранение изменений в кэшированных данных в защищенных паролем документах

Если объекты данных кэшируются в документе, защищенном паролем, изменения, вносимые в кэшированные данные, не сохраняются.Можно сохранить изменения в кэшированные данные путем переопределения двух методов.Переопределите эти методы для временного удаления защиты при сохранении документа и примените защиту снова после сохранения.

Дополнительные сведения см. в разделе Практическое руководство. Кэширование данных в документе, защищенном паролем.

Предотвращение потери данных при добавлении нулевых значений в кэш данных

При добавлении объектов в кэш данных все кэшированные объекты должны быть инициализированы со значением null до сохранения и закрытия документа.Если какой-либо кэшированный объект имеет значение null при закрытии и сохранении документа, Visual Studio Tools for Office (cреда выполнения) автоматически удалит из кэша данных все объекты.

Если к кэшу данных с помощью атрибута CachedAttribute во время разработки добавлен объект со значением null, можно воспользоваться классом ServerDocument для инициализации кэшированных объектов данных до открытия документа.Это полезно, если необходимо инициализировать кэшированные данные на сервере без установленного Word или Excel до того, как документ открыт конечным пользователем.Дополнительные сведения см. в разделе Доступ к данным в документах на сервере.

См. также

Задачи

Практическое руководство. Кэширование данных для автономного использования или для использования на сервере

Практическое руководство. Программное кэширование источника данных в документе MS Office.

Практическое руководство. Кэширование данных в документе, защищенном паролем

Пошаговое руководство. Создание иерархического отношения с помощью кэшированного набора данных