Надстройки SharePoint в сравнении с решениями для SharePoint

Узнайте, когда стоит разрабатывать расширение SharePoint как Надстройка SharePoint, а когда как решение фермы для SharePoint или изолированные решения без кода.

В этой статье сравниваются варианты использования Надстройки SharePoint, решения ферм и изолированные решения без кода (решения NCSS).

  • Новые надстройки SharePoint — это автономные расширения, которые могут включать в себя облачную логику и данные, компоненты SharePoint и клиентские скрипты, но не пользовательский управляемый код, который выполняется на серверах SharePoint. Они устанавливаются из Магазина Office или каталога надстроек организации и могут быть установлены в локальных фермах или Microsoft Office SharePoint Online. Общие сведения о надстройках SharePoint см. в статье Надстройки SharePoint.
  • Решения для фермы SharePoint — это пакеты компонентов SharePoint, отправляемые в общую коллекцию фермы, из которой их можно устанавливать. Их невозможно распространять через Магазин Office и устанавливать в SharePoint Online. Они могут включать пользовательский управляемый код, выполняемый на серверах фермы SharePoint. Дополнительные сведения об основах решений для ферм см. в разделах Обзор решений и Решения фермы в SharePoint 2010.
  • NCSS также являются пакетами компонентов SharePoint; но они отправляются в коллекцию семейства веб-сайтов, где их можно установить. Их можно установить либо в локальных фермах, либо в SharePoint Online, но они не могут распространяться через Магазин Office. Они могут включать практически те же описательные компоненты, что и надстройки SharePoint, и, как и надстройки, они могут иметь JavaScript, но не содержат настраиваемый управляемый код, который выполняется на серверах SharePoint. Различия в системах развертывания надстроек и NCSS делают NCSS лучшим вариантом разработки для короткого списка сценариев. Сведения об изолированных решениях см. в статье Изолированные решения в SharePoint 2010.

Важно!

Хотя разработка изолированных решений, содержащих только декларативную разметку и JavaScript (что мы называем изолированными решениями без кода (NCSS)), по-прежнему допустима, мы перестали поддерживать использование настраиваемого управляемого кода в рамках изолированного решения. Мы представили новую модель надстроек SharePoint на замену тем сценариям, для которых требовалось использовать управляемый код. Модель надстроек отделяет основной продукт SharePoint от среды выполнения надстроек, что обеспечивает большую гибкость и позволяет выполнять код в любой среде. Мы понимаем, что наши клиенты вкладывали ресурсы и средства в изолированные решения с кодом, и будем выводить их из эксплуатации постепенно. Имеющиеся изолированные решения с кодом продолжат работать в локальных фермах SharePoint в ближайшее время. Учитывая динамическую природу веб-служб, мы определим потребность в поддержке для изолированных решений с кодом в SharePoint Online в соответствии с запросами пользователей. Решения NCSS по-прежнему будут поддерживаться. Все будущие инвестиции пойдут на расширение возможностей и повышение производительности модели надстроек SharePoint. Соответственно, рекомендуем по мере возможности использовать новую модель надстроек при разработке новых решений. В тех случаях, когда необходимо разработать решение для фермы или изолированное решение с кодом, рекомендуем максимально упростить перевод решения на новую модель разработки с менее тесными связями.

Разработка надстройки на любой платформе

Вот наш самый важный совет: если только возможно, разрабатывайте Надстройка SharePoint вместо решение фермы или решения NCSS. Ниже указаны преимущества Надстройки SharePoint над классическими решениями.

  • Простота процесса обнаружения, покупки и установки для пользователей.
  • Наиболее безопасные расширения SharePoint для администраторов.
  • Простая система маркетинга и продаж на базе интернет-магазина надстроек Майкрософт.
  • Максимальная гибкость в разработке будущих обновлений.
  • Максимальные возможности для использования навыков программирования, не относящихся к SharePoint.
  • Более плавные и гибкие способы интеграции облачных ресурсов.
  • Предоставление расширению разрешений, которые отличаются от разрешений пользователя, запустившего надстройку.
  • Возможность использовать кроссплатформенные стандарты, включая HTML, REST, OData, JavaScript и OAuth.
  • Возможность пользоваться междоменной библиотекой сценариев JavaScriptSharePoint для доступа к данным SharePoint. Кроме того, можно использовать предоставленную корпорацией Майкрософт безопасную службу маркеров, совместимую с OAuth, или цифровые сертификаты, чтобы получить авторизацию для доступа к данным SharePoint.

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

Надстройки SharePoint и NCSS используют одну из клиентских объектных моделей SharePoint или конечные точки REST для доступа к содержимому и компонентам SharePoint. Эти клиентские API позволяют использовать расширения SharePoint, предназначенные для конечных пользователей. ("Конечные пользователи" в этом контексте являются администраторами семейства веб-сайтов, владельцами веб-сайтов и участниками веб-сайта.) Серверная объектная модель имеет дополнительные API, которые обеспечивают программные расширения управления, конфигурации и безопасности SharePoint. К ним относятся расширения центра администрирования, пользовательские команды Windows PowerShell, задания таймера и пользовательские резервные копии. Дополнительные сведения о типах административных расширений, которые можно разрабатывать, см. в разделе администрирование Windows SharePoint Services. Эти административные расширения развертываются в компонентах SharePoint, имеющих ферму, веб-приложение или семейство веб-сайтов область. Решения SharePointfarm также устанавливаются администраторами фермы, хотя надстройки и NCSS могут устанавливаться администраторами клиента и семейства веб-сайтов.

Серверная объектная модель также содержит API для операций создания, чтения, обновления и удаления (CRUD) в списках, библиотеках и веб-сайтах, а также для операций с другими компонентами SharePoint. Это означает, что серверную объектную модель можно использовать для расширений, предназначенных для конечных пользователей, но по причинам, приведенным в предыдущем разделе, решения фермы обычно не являются лучшим выбором для таких расширений. Таким образом, неудивительно, что решения фермы не могут быть установлены на Microsoft Office SharePoint Online. Так как корпорация Майкрософт обрабатывает все управление SharePoint Online, нет необходимости в административных расширениях. Дополнительные сведения о различных наборах API в SharePoint и их перекрытии см. в статье Выбор правильного набора API в SharePoint.

Клиентские объектные модели и конечные узлы REST не дублируют ориентированные на администраторов API объектной модели сервера. Более того, в виду того, что ни Надстройка SharePoint, ни решение NCSS не может содержать пользовательский код, который запускается на серверах SharePoint, их будет неправильно называть API администратора. К тому же, все компоненты Надстройки SharePoint должны быть в масштабе веб-сайтов, а компоненты решений NCSS — в масштабе веб-сайтов или их семейств. Поэтому расширение SharePoint для администраторов несовместимо с Надстройка SharePoint или решением NCSS. Таким образом, вторым принципом (но не непреложным правилом) является то, что надстройки и решения NCSS предназначены для конечных пользователей, а решения ферм — для администраторов.

Разработка решений NCSS для расширений с фирменной символикой и шаблонных расширений

Вы можете столкнуться с одним из немногих сценариев разработки SharePoint, для которых не очень подходит модель надстроек, но и с помощью решение фермы их не выполнить (возможно, потому что решение нужно устанавливать на SharePoint Online или это должен делать администратор семейства веб-сайтов). Существует две основных перекрывающихся категории таких сценариев.

  • Фирменная символика. Пользователи SharePoint часто хотят придать своим сайтам SharePoint (включая сайты SharePoint Online) особый внешний вид, изменив цвета, стили, макеты и логотипы. Как правило, это легче сделать с помощью NCSS, а не надстроек SharePoint. Надстройка SharePoint декларативно контролирует внешний вид только собственного сайта. На хост-сайте она может декларативно добавлять только кнопки ленты и пункты меню (а также веб-части надстроек). Все остальные изменения хост-сайта или его родительского семейства веб-сайтов, клиента или локального веб-приложения SharePoint необходимо выполнять с помощью кода или скрипта, использующего одну из клиентских объектных моделей SharePoint. Например, новые значки или CSS-файлы необходимо развертывать программным способом. Этот код можно выполнять из самой надстройки после ее установки или в обработчике событий установки надстроек. Однако для написания такого кода потребуются значительные усилия. Кроме того, надстройке потребуются разрешения на изменение других веб-сайтов в семействе (кроме собственного сайта надстройки и хост-сайта), а также ограниченные областью видимости клиента разрешения на внесение изменений за пределами своего родительского семейства веб-сайтов. Однако NCSS с фирменной символикой можно развернуть и активировать в любом семействе веб-сайтов. Это решение может состоять из небольшого количества исключительно декларативных компонентов.

    Примечание.

    Обратите внимание на то, что решения для ферм SharePoint предоставляют больше возможностей по созданию фирменной символики, чем решения NCSS или надстройки SharePoint, но они не подходят для SharePoint Online.

  • Расширения, подобные шаблону: Предположим, что необходимо создать расширение для управления кризисом для SharePoint для совместного анализа и решения бизнес-кризисов. Расширение включает несколько настраиваемых типов списков, рабочие процессы без кода и другие компоненты SharePoint, объединенные в настраиваемую webTemplate. Предположим, вы распаковываете и развертываете расширение в виде решения NCSS. После активации компонента в решении пользователи могут создавать подвебель управления кризисами на веб-сайте SharePoint при возникновении кризиса. Веб-сайт можно заполнить характерными данными об этом кризисе. С другой стороны, вы можете реализовать то же расширение, что и надстройка SharePoint, используя точно такой же набор компонентов SharePoint. При установке приложения на сайте группы сразу же создается дочерний сайт (или "сайт надстройки"). Опять же, пользователи заполняют веб-сайт соответствующими данными.

    Что происходит при втором кризисе? Если вы реализовали расширение в качестве NCSS, пользователи могут просто создать еще одну подвебвь из пользовательского WebTemplate. Однако если вы реализовали расширение как надстройку SharePoint, у пользователей возникнет проблема. Они не могут установить второй экземпляр той же надстройки на родительском веб-сайте. На хост-сайте можно установить только один экземпляр любой надстройки. Лучше всего создать дочерний сайт родительского веб-сайта, который будет служить местом для установки другого экземпляра надстройки. При установке надстройки для компонентов надстройки создается новый веб-сайт надстройки, являющийся дочерним веб-сайтом родительского веб-сайта. В этом сравнении показан общий, но не абсолютный принцип: расширения SharePoint, имеющие "шаблонный" символ, то есть многоразовую коллекцию компонентов, которые необходимо настроить для каждого конкретного варианта использования, но которые, естественно, имеют несколько экземпляров, связанных с тем же веб-сайтом SharePoint, лучше подходят для модели разработки NCSS, чем с моделью надстройки. В этом примере элемент переменной является кризисом, но легко представить себе расширения SharePoint, подобные шаблону, в которых экземпляры зависят от региона, даты или любого количества других характеристик.

Сведения о том, как расширить возможности надстроек SharePoint, см. в статье Использование обработчиков событий надстроек консервативно и надстройки, создающие расширения.

Как это работает в надстройках

Как отмечалось ранее, пользовательский код, который выполняется на серверах SharePoint, не разрешен в надстройках SharePoint. Это не является существенным ограничением. Это просто означает, что ваша пользовательская бизнес-логика перемещается либо "вниз" на устройство клиента, либо "вверх" в облако. В любом случае вы можете использовать службу REST/OData SharePoint для доступа к сайтам, спискам и другим данным SharePoint. Вы также можете получить удаленный доступ к данным SharePoint с помощью клиентских объектных моделей SharePoint JavaScript, Silverlight или платформа .NET Framework. Наконец, в Windows Phone вы можете получить доступ к SharePoint через объектную модель SharePointWindows Phone. Дополнительные сведения о различных наборах API в SharePoint см. в статье Выбор правильного набора API в SharePoint.

Схожей чертой является то, что компоненты в Надстройки SharePoint не могут быть в масштабе семейства сайтов, веб-приложения или фермы. Тем не менее, любые элементы пользовательского интерфейса (UI) и функциональные возможности можно реализовать. Это означает, что реализация компонента перемещается из SharePoint в клиент или удаленное веб-приложение или удаленную базу данных.

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

Необходимые функциональные возможности Подходы
Настраиваемые веб-части
Надстройка SharePoint может содержать удаленные страницы, содержащие пользовательские веб-части. Другой вариант — предоставить страницу из удаленного веб-приложения в надстройке на странице сайта SharePoint. Удаленная страница может в основном иметь те же элементы управления и функции пользовательского интерфейса, что и веб-часть. Дополнительные сведения см. в статье Создание веб-частей надстройки для установки с надстройкой SharePoint.
Приемники событий и компонентов Надстройка SharePoint может содержать функционально эквивалентные удаленные приемники событий. Дополнительные сведения см. в статье Обработка событий в надстройках SharePoint.
Типы настраиваемых полей (столбцов) Надстройка может развертывать новое поле (столбец) на основе одного из существующих типов полей. Типы полей Calculated и Computed особенно гибкие. Другой вариант — представить данные на удаленной веб-странице с помощью настраиваемых элементов управления или сеток.
Пользовательские веб-службы, созданные на основе SharePoint Service Application Framework Вы можете разрабатывать пользовательские веб-службы в виде удаленных служб.
Страницы приложений Надстройка SharePoint может включать удаленные веб-страницы, доступные с каждого веб-сайта, на котором установлена надстройка. Надстройка также может использовать любую из встроенных веб-частей SharePoint на страницах сайта.

Некоторые компоненты SharePoint, перечисленные ниже, используются в сценариях конечных пользователей, но не имеют эквивалентов в модели надстройки SharePoint и не могут быть развернуты в NCSS. Для этого необходимо использовать решения ферм.

  • Определения пользовательских узлов Только настраиваемые веб-шаблоны, которые функционально близки к определению узлов, доступны и в решениях NCSS, и в Надстройки SharePoint. Дополнительные сведения см. в разделе Работа с шаблонами и определениями.
  • Замещаемые элементы управления Дополнительные сведения см. в разделе Элемент управления Delegate (Control Templatization).
  • Настраиваемые темы
  • Группы пользовательских действий и скрытие пользовательских действий
  • Пользовательские элементы управления (файлы ASCX) Ни в каких сценариях они не требуются.

Умеренное использование обработчиков событий надстройки

Некоторые ограничения Надстройки SharePoint можно преодолеть, создавая обработчики событий установки, обновления и удаления надстройки. Эти обработчики — веб-службы, которые размещены на веб-серверах вне фермы SharePoint, возможно в облаке. Они могут использовать клиентскую объектную модель SharePoint или REST API для выполнения операций CRUD для компонентов SharePoint, включая компоненты хост-сайта. Теоретически можно использовать такие обработчики для преодоления некоторых ограничений развертывания элементов фирменной символики и шаблонных расширений, о которых говорилось ранее. Тем не менее, мы рекомендуем использовать такие обработчики только в крайнем случае, когда нет других способов предоставления клиентам функциональных возможностей, необходимых для вашего варианта использования. Принимая решение создать обработчик, учитывайте указанные ниже факторы.

  • Для программного развертывания на хост-сайте необходимо, чтобы надстройка запрашивала разрешение на полный доступ к хост-сайту. Надстройки, для которых необходим данный уровень разрешений, не могут продаваться через Магазин Office.
  • Развертывание компонентов на хост-сайте обычно нарушает преимущества безопасности перевода компонентов SharePoint на сайт надстройки с собственного домена.
  • Создание полного кода развертывания требует выполнения большого количества работы и отладки по сравнению с описанием исправлений развертывания, которое можно использовать для веб-компонентов надстроек и для решений NCSS.
  • Существуют несколько важных рекомендаций, которые необходимо соблюдать при создании обработчиков событий надстройки. Код должен включать логику отката для отмены всех действий при обнаружении ошибки. Он должен также оповещать инфраструктуру SharePoint об ошибке, чтобы инфраструктура могла откатить назад все действия.
  • Обработчики событий надстройки несовместимы с типом Надстройка SharePoint, известным как размещаемый в SharePoint.

Дополнительные сведения о обработчиках событий надстроек см. в разделе Узел SDK Обработка событий в надстройках SharePoint. Сведения о логике отката см. в разделе Добавление логики отката в обработчик раздела Создание обработчика события обновления в надстройках SharePoint . Последний раздел написан в контексте события обновления надстройки, но основные принципы применяются ко всем обработчикам событий надстроек.

Надстройки, создающие расширения

Другой способ использования клиентской объектной модели SharePoint или ее REST API для устранения проблем с развертыванием компонентов в надстройках SharePoint — наличие кода CRUD внутри самой надстройки, а не в обработчике событий надстройки. Надстройка становится своего рода фабрикой для какого-либо типа пользовательского расширения. Например, надстройка, размещенная в SharePoint, может использовать объектную модель SharePointJavaScript для развертывания и других операций CRUD на хост-сайте или в другом месте в клиенте или веб-приложении. Другой пример см. в разделе Краткое введение в удаленную подготовкуметодов подготовки сайтов и удаленной подготовки в SharePoint, в котором описывается, как надстройка SharePoint, размещенная у поставщика, используется для обеспечения подготовки вложенных веб-сайтов. Однако при создании фабрики надстроек SharePoint существует много возможностей для создания надстройки SharePoint. Кроме того, такого рода надстройки нельзя продавать через Магазин Office, так как для надстройки требуется полный доступ к хост-сайту.

См. также