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


Объектная модель обновления компонентов

Дата последнего изменения: 9 июля 2010 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Событие FeatureUpgrading
Свойство Version
Метод QueryFeatures
Метод обновления

Для обеспечения возможности обновления компонентов в объектную модель Microsoft SharePoint Foundation добавлены новые типы и члены. К ним относятся следующие элементы:

  • событие FeatureUpgrading;

  • свойство Version;

  • QueryFeaturesM:Microsoft.Office.InfoPath.FormErrorCollection.Add(System.Xml.XPath.XPathNavigator,System.String,System.String)

  • метод Upgrade;

Событие FeatureUpgrading

Приемники компонента (SPFeatureReceiver) теперь можно использовать для обработки событий FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>). Можно реализовать собственный приемник компонента для обновления экземпляра компонентов.

В число параметров FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>) входят свойства текущего исполняемого контекста, имя исполняемого настраиваемого действия обновления и словарь параметров настраиваемого действия обновления.

Пример использования метода FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>) см. в статье Практическое руководство. Использование кода обновления для активации компонента с зависимостями.

Свойство Version

В существующем классе SPFeatureDefinition уже есть свойство Version, а класс SPFeature в SharePoint Foundation также предоставляет новое свойство Version. Однако текущая версия компонента, определенная в файле Feature.xml — это версия, заданная в классе SPFeatureDefinition. Version — уникальная версия класса, связанная с экземпляром Feature в указанной области, которая может не совпадать с версией определения компонента.

Объект в определенной области, такой как SPWebApplication или SPSite, необходимо обновить, если у одного или нескольких компонентов, связанных с объектом, версия более старая, чем версия указанная в файле Feature.xml, связанном с этим экземпляром Feature.

Формат версии: xxxx. xxxx. xxxx. xxxx, где x — одна цифра. Если в файле Feature.xml не указывается атрибут Version, версия по умолчанию — "0.0.0.0".

ПримечаниеПримечание

В SharePoint Foundation не разрешены "короткие" версии, в которых указывается менее четырех цифр (например, 1.0); при использовании таких версий вызывается исключение.

Метод QueryFeatures

Новые методы QueryFeatures позволяют запрашивать компоненты в различных областях с помощью набора критериев фильтрации. В классах SPWebService, SPWebApplication, SPContentDatabase и SPSite используется метод QueryFeatures, перегрузки которого позволяют указывать различные критерии определяющие, какой набор результатов экземпляров компонента следует вернуть.

  • SPWebService — поиск активированных экземпляров компонента в ферме серверов в соответствии с критериями фильтрации.

  • SPWebApplication — поиск веб-приложения, семейства сайтов и компонентов в области веб-сайта в соответствии с указанными критериями фильтрации. Запрос выполняется для всех баз данных контента в объекте веб-приложения, а возвращаемое семейство упорядочено по базам данных контента.

  • SPContentDatabase — поиск компонентов в базе данных контента в области семейства сайтов и веб-сайта в соответствии с указанными критериями фильтрации. Возвращаемое семейство упорядочивается в соответствии с иерархией веб-сайта. Например, компоненты родительского веб-сайта представляются до компонентов дочернего веб-сайта, а иерархия обрабатывается сверху вниз.

  • SPSite — поиск всех компонентов в области семейства сайтов и веб-сайта в соответствии с указанными критериями фильтрации. Возвращаемое семейство упорядочивается в соответствии с иерархией веб-сайта. Компоненты родительского веб-сайта представляются до компонентов дочернего веб-сайта, а иерархия обрабатывается сверху вниз. Перегрузки метода QueryFeatures для этого класса доступны в новых клиентских объектных моделях.

Перегрузки

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

  • Возврат всех экземпляров компонента в указанной области. Параметр needsUpgrade можно использовать для возврата всех экземпляров компонентов, которые требуется обновить.

    public Microsoft.SharePoint.SPFeatureQueryResultCollection 
    QueryFeatures(Microsoft.SharePoint.SPFeatureScope scope, bool needsUpgrade)
    
  • Возврат всех экземпляров компонента с указанным идентификатором компонента. Параметр needsUpgrade можно использовать для возврата всех экземпляров компонентов, которые требуется обновить.

    public Microsoft.SharePoint.SPFeatureQueryResultCollection 
    QueryFeatures(System.Guid featureId, bool needsUpgrade)
    
  • Возврат всех экземпляров компонента с указанным идентификатором компонента и номером версии.

    public Microsoft.SharePoint.SPFeatureQueryResultCollection 
    QueryFeatures(System.Guid featureId, System.Version featureVersion)
    
  • Возврат всех экземпляров компонента с указанным идентификатором компонента.

    public Microsoft.SharePoint.SPFeatureQueryResultCollection    
    QueryFeatures(System.Guid featureId)
    

Класс SPFeatureQueryResultCollection используется для перечисления компонентов, которые возвращаются с помощью операции QueryFeatures.

Во время обновления метод QueryFeatures определяет, устарел ли экземпляр компонента при обнаружении версии экземпляра, номер которой меньше текущего номера версии определения Feature.xml. На основе директив UpgradeActions в файле Feature.xml обновление выполняется для каждого экземпляра, для которого оно требуется. После успешного обновления экземпляра компонента его номер версии обновляется в соответствии с номером версии определения файла Feature.xml.

Метод обновления

В классе SPFeature представлен метод Upgrade(Boolean) для обновления экземпляра Feature во всех областях: Farm, WebApplication, Site и Web.

При вызове метода QueryFeatures в зависимом экземпляре компонента сначала обновляется экземпляр компонента самого высокого уровня, а затем обновляются все экземпляры компонента, которые зависят от этого экземпляра компонента. Такой иерархический процесс обеспечивает синхронизацию всех зависимых экземпляров компонента с экземпляром компонента, от которого они зависят.

Важное примечаниеВажно!

Не вызывайте метод Upgrade(Boolean) в приемнике события обновления компонента. Например, не вызывайте метод в компонентах, которые можно получить с помощью следующего кода:

SPFeatureQueryResultCollection queryResults = myWebService.QueryFeatures(myScope, true);

IEnumerator<SPFeature> featureEnumerator = queryResults.GetEnumerator();