Что следует рассмотреть, прежде чем приступать к разработке надстроек SharePoint
Предварительно необходимо ознакомиться со статьей Надстройки SharePoint.
В этой статье рассматриваются три различных способа по выбору архитектуры для надстроек SharePoint. Во-первых, приводятся наиболее важные категории выбора проектных решений. Во-вторых, отображается архитектура надстройки относительно уровней приложений. В-третьих, приводятся факторы, которые необходимо учитывать при выборе ваших проектных решений.
Для начала нужно решить, что будет представлять собой ваше расширение SharePoint: надстройку SharePoint, классическое решение фермы или изолированное решение SharePoint. К некоторым частям объектной модели SharePoint, которые главным образом подключаются путем настройки администрирования и безопасности в SharePoint, нельзя получить доступ из клиентов. Для доступа к ним требуется пользовательский код, выполняемый на сервере SharePoint, но пользовательский код на стороне сервера не поддерживается в надстройке SharePoint. (Благодаря богатому набору клиентских объектных моделей и службе REST/OData с помощью надстроек SharePoint можно создать практически любое расширение SharePoint, ориентированное на пользователя).
Дополнительные сведения о выборе между классическими решениями и надстройками см. в статье Сравнение надстроек SharePoint с решениями SharePoint. Кроме того, принять решения поможет статья Выбор правильного набора API в SharePoint.
Основные элементы для разработки надстроек SharePoint
При разработке надстройки SharePoint следует руководствоваться тремя основными категориями выбора. Как правило, при разработке приложения необходимо идти на определенные компромиссы. Варианты, выбранные в одной категории, могут ограничить ваши возможности в другой категории. Возможна не каждая комбинация вариантов выбора.
Размещение: надстройки SharePoint можно разделить на два основных типа в зависимости от того, как они развертываются и размещаются.
Размещаемые у поставщика надстройки включают основное хранилище данных и бизнес-логику, которые вы как разработчик развертываете и размещаете за пределами SharePoint на серверах или в предоставленной вами облачной учетной записи. Вы должны принудительно изолировать учетные записи различных пользователей, которые приобрели вашу надстройку. В таких надстройках также могут содержаться компоненты SharePoint. Они размещаются на ферме SharePoint пользователя. Надстройка такого типа обеспечивает самую высокую гибкость при других категориях выбора проектных решений. Она также позволяет использовать платформы сторонних поставщиков (не Майкрософт) для внешних данных, логики и пользовательского веб-интерфейса. (В пределах категории надстроек, размещаемых у поставщика, необходимо разделить надстройки, удаленные компоненты которых находятся в пределах одного корпоративного брандмауэра с фермой SharePoint, и надстройки с удаленными компонентами, установленными за пределами этого брандмауэра. В этих двух сценариях используются разные системы авторизации, что, в свою очередь, требует использования различных языков программирования для доступа к данным SharePoint.)
Размещаемые в SharePoint надстройки полностью состоят из компонентов SharePoint, таких как списки, типы содержимого, рабочие процессы и веб-части. Внешние компоненты отсутствуют. Дополнительные сведения о типах компонентов SharePoint, которые можно включить в надстройки SharePoint, см. в статье Хост-сайты, сайты надстроек и компоненты SharePoint в SharePoint.
Дополнительные сведения о вариантах размещения надстроек SharePoint см. в статье Выбор шаблонов для разработки и размещения надстройки SharePoint.
Подключение: SharePoint поддерживает три типа безопасного доступа к данным для создания, чтения, обновления и удаления данных (CRUD).
Внешние веб-приложения в надстройке для доступа к данным SharePoint используют протокол OAuth. Дополнительные сведения см. в статье Авторизация и аутентификация надстроек SharePoint.
JavaScript может получать доступ к данным на сайте надстройки SharePoint и данным на других веб-сайтах в рамках одного клиента, используя специальную библиотеку JavaScript, позволяющую безопасно выполнять междоменные сценарии. Дополнительные сведения см. в статье Обращение к данным SharePoint из надстроек с помощью междоменной библиотеки.
Кроме того, надстройка SharePoint может получить доступ к внешним данным через службы Business Connectivity Services (BCS) или прокси-сервер веб-службы. Подробнее см. в статьях Business Connectivity Services в SharePoint и Отправка запросов удаленной службе с помощью веб-прокси в SharePoint.
Пользовательский интерфейс. Три способа отобразить Надстройку SharePoint в SharePoint: как минимум, все надстройки полностью отображаются на веб-странице. При необходимости надстройка может отображаться как часть целого, а также с помощью элемента меню или кнопки ленты. Дополнительные сведения см. в статье Проектирование пользовательского интерфейса для надстроек SharePoint.
Ваши пользователи могут устанавливать надстройки SharePoint в нескольких семействах веб-сайтов в рамках клиента либо по схеме "веб-сайт за веб-сайтом". В первом случае надстройки называются надстройками с областями клиентов. Если вы хотите, чтобы у ваших клиентов была возможность использовать области клиентов, вы можете не включать дополнительную кнопку ленты или веб-часть надстройки. Дополнительные сведения см. в статье Клиенты и области развертывания для надстроек SharePoint.
Архитектурные уровни
Надстройка имеет три логических уровня: пользовательский интерфейс, бизнес-логика и доступ к данным. Каждый уровень содержит множество параметров реализации. С другой стороны, конфигурация, сделанная для одного уровня, ограничивает параметры для других уровней. В таблицах ниже описываются некоторые параметры и их использование для удаленных компонентов надстройки и компонентов SharePoint.
Удаленные компоненты в надстройках, размещаемых у поставщика: варианты для каждого уровня
Уровень Варианты Область применения Пользовательский интерфейс Страницы ASP.NET в форме ASP.NET или приложении MVC, которые размещаются в веб-роли Azure Использование навыков группы разработчиков ASP.NET Страница HTML 5 с JavaScript Расширенный пользовательский интерфейс PHP или другой тип веб-страницы, размещаемой в облачной службе стороннего поставщика (не Майкрософт) Интеграция приложений сторонних поставщиков (не Майкрософт) в SharePoint Silverlight в приложении Windows Phone Доступ с мобильных устройств к данным SharePoint, а также интеграция с данными о географическом положении и push-уведомлениями Бизнес-логика Клиентский JavaScript Логика пользовательского интерфейса и несложная бизнес-логика. Доступ к данным SharePoint с помощью клиентской объектной модели JavaScript Рабочая роль Microsoft Azure Функции, интенсивно использующие процессор. Доступ к данным SharePoint с помощью клиентской объектной модели .NET Framework Удаленная веб-служба Функции, интенсивно использующие процессор. Доступ к данным SharePoint с помощью клиентской объектной модели .NET Framework Данные SQL Azure Полнофункциональные реляционные данные Хранилище таблиц Azure Параметры приложения и другие метаданные Хранилище BLOB-объектов Azure Хранение больших файлов Облачная служба сторонних поставщиков (не Майкрософт) Использование существующих источников данных, основанных на платформах сторонних поставщиков (не Майкрософт) База данных на собственном сервере разработчика Размещение у поставщика и контроль разработчика за изоляцией клиента
Компоненты SharePoint: варианты для каждого уровня
Уровень Варианты Область применения Пользовательский интерфейс Настраиваемые представления списков SharePoint и библиотек на веб-страницах надстройки Достижение максимальной интеграции с внешним видом и поведением SharePoint Приложение Silverlight, размещенное в веб-части (или в тегах ) на веб-странице надстройки Использование существующего интерфейса развертывания Silverlight. Расширенный пользовательский интерфейс Бизнес-логика Рабочий процесс SharePoint Реализация бизнес-процессов Клиентский JavaScript, дополненный междоменной библиотекой SharePoint Доступ к данным SharePoint на сайте надстройки. Доступ к данным на других веб-сайтах в рамках клиента Удаленный обработчик событий Обработка событий CRUD в списках и библиотеках SharePoint с помощью внешней логики Данные Списки SharePoint и библиотеки, которые запрашиваются через язык CAML, или запросы LINQ с помощью одной из клиентских объектных моделей SharePoint Использование существующего интерфейса разработки SharePoint и .NET Framework Списки и библиотеки SharePoint, которые запрашиваются с помощью веб-службы SharePoint REST/OData Доступ к данным SharePoint с платформ сторонних поставщиков (не Майкрософт). Использование существующего интерфейса запросов OData Модель BCS Отображение внешних данных в SharePoint в виде списка SharePoint
Факторы, которые следует учитывать при принятии конструктивных решений
Модель надстроек SharePoint предоставляет достаточно много возможностей для проектирования, поэтому простое дерево решений реализовать невозможно. Далее рассматриваются наиболее важные факторы, необходимые для построения архитектуры надстроек SharePoint.
Конечно, самым важным фактором является функциональность, которую необходимо предоставить потребителям, т. е. варианты использования. Например, если ваша надстройка обеспечивает функции, требующие интенсивной работы процессора (например, конвертацию видеофайлов в другой формат), возможно, вам следует создать надстройку, размещаемую у поставщика. В таком случае обработка осуществляется на одном из ваших серверов или в рабочей роли Microsoft Azure.
Так как один тип надстроек Надстройка SharePoint, а именно с размещением у поставщика, требует от вас (или от ваших потребителей) установки компонентов не SharePoint и усиления обособления клиентов, необходимо рассмотреть вопрос, есть ли у вас оборудование и ИТ-персонал, чтобы сделать это (или планируете ли вы, чтобы это сделали потребители).
Кто из потребителей будет этим заниматься это тоже важный вопрос. Если ваши надстройки будут использоваться внутри компании (то есть, у вас не будет внешних пользователей) или одним пользователем, надстройки, размещаемые у поставщика, значительно легче реализовывать и обслуживать, чем, если бы у вас были внешние пользователи или несколько пользователей, использующих надстройку. Если предполагается открыто продавать надстройку, необходимо решить вопрос, продавать ли ее предприятиям, имеющим учетные записи SharePoint Online или собственные фермы SharePoint, или и тем и другим.