Кэширование данных
Обновлен: Июль 2008
Применение |
---|
Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Можно кэшировать объекты данных в настройках на уровне документа, чтобы обеспечить возможность доступа к данным в автономном режиме или без открытия Microsoft Office Word или Microsoft Office Excel. Для кэширования объекта он должен иметь тип данных, отвечающий определенным требованиям для присоединения к кэшированным данным. Многие общие типы данных платформы .NET Framework, включая String, DataSet и DataTable отвечают этим требованиям.
Существует два способа добавления объекта в кэш данных:
Для добавления объекта в кэш данных при построении решения примените к объявлению объекта атрибут CachedAttribute. Дополнительные сведения см. в разделе Практическое руководство. Кэширование данных для автономного использования или для использования на сервере.
Для добавления объекта к кэшу данных программными средствами воспользуйтесь методом StartCaching ведущего элемента, такого как класс ThisDocument или ThisWorkbook. Дополнительные сведения см. в разделе Практическое руководство. Программное кэширование источника данных в документе MS Office..
После добавления объекта в кэш данных можно получить доступ и изменять кэшированные, не запуская Word или Excel. Дополнительные сведения см. в разделе Доступ к данным в документах на сервере.
Требования для кэшируемых объектов данных
Если необходимо кэшировать экземпляры созданных типов данных, то эти типы данных должны отвечать этим требованиям.
Быть открытым полем чтения-записи или свойством ведущего элемента, таким как классы ThisDocument или ThisWorkbook.
Не должен быть индексатором или другим параметризированным свойством.
Кроме того, объект данных должен быть сериализован классом XmlSerializer. Это означает, что он должен иметь такие характеристики:
Быть открытым типом.
Иметь открытый конструктор без параметров.
Не выполнять код, требующий дополнительных привилегий безопасности.
Представлять только отрытые свойства чтения-записи (другие свойства будут игнорироваться).
Не представлять многомерные массивы (вложенные массивы допускаются).
Не возвращать интерфейсы из свойств и полей.
Если он является коллекцией, не реализовывать класс IDictionary.
Управление поведением кэшированных объектов
Для получения более широких возможностей управления поведением кэшированных объектов можно реализовать интерфейс ICachedType в типе кэшированного объекта. Например, можно реализовать этот интерфейс, если необходимо контролировать способ уведомления пользователя при изменении объектов. Примеры кода, демонстрирующие реализацию ICachedType, представлены в классе ControlCollection в следующих примерах приложений:
Сохранение изменений в кэшированных данных в защищенных паролем документах
В проектах на уровне документа для Word 2007 и Excel 2007 при кэшировании объектов данных в документе, защищенном паролем, изменения в кэшированных данных не сохраняются. Начиная с Visual Studio 2008 с пакетом обновления 1 (SP1), можно сохранять изменения в кэшированных данных путем переопределения двух методов. Переопределите эти методы для временного удаления защиты при сохранении документа и примените защиту снова после сохранения.
Дополнительные сведения см. в разделе Практическое руководство. Кэширование данных в документе, защищенном паролем.
Предотвращение потери данных при добавлении нулевых значений в кэш данных
При добавлении объектов в кэш данных все кэшированные объекты должны быть инициализированы со значением null до сохранения и закрытия документа. Если какой-либо кэшированный объект имеет значение null при сохранении и закрытии документа, среда выполнения Visual Studio Tools for Office автоматически удалит все кэшированные объекты из кэша данных.
Если к кэшу данных с помощью атрибута CachedAttribute во время разработки добавлен объект со значением null, можно воспользоваться классом ServerDocument для инициализации кэшированных объектов данных до открытия документа. Это полезно, если необходимо инициализировать кэшированные данные на сервере без установленного Word или Excel до того, как документ открыт конечным пользователем. Дополнительные сведения см. в разделе Доступ к данным в документах на сервере.
Сохранение кэшированных данных в документе
При кэшировании объекта данных в документ, среда выполнения Visual Studio Tools for Office сериализует объект в XML-строку, которая сохраняется в документе. Способ, с помощью которого XML-строка сохраняется в документе, зависит от используемой версии Microsoft Office:
В настройках Microsoft Office 2003, среда выполнения Visual Studio Tools for Office сохраняет XML-строки в элемент управления Runtime Storage. Элемент управления Runtime Storage является внедренным в документ элементом управления ActiveX. Дополнительные сведения см. в разделе Общие сведения о Runtime Storage Control.
В настройках выпуска 2007 системы Microsoft Office среда выполнения Visual Studio Tools for Office сохраняет XML-строки в пользовательскую XML-часть в документе. Дополнительные сведения см. в разделе Общие сведения о пользовательских XML-частях.
См. также
Задачи
Практическое руководство. Программное кэширование источника данных в документе MS Office.
Практическое руководство. Программная остановка кэширования источника данных
Практическое руководство. Кэширование данных в документе, защищенном паролем
Пошаговое руководство. Создание иерархического отношения с помощью кэшированного набора данных
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Июль 2008 |
Добавлены сведения о кэшированных данных в защищенных паролем документах. |
Изменение функции SP1. |