SharePoint 2013. Введение в SharePoint App. Часть 1

С выходом SharePoint 2013 стал доступна новая модель решения для SharePoint - SharePoint App. Т.е. к уже имеющемуся и привычному Solution Development добавили Application Development. В этом посте я хотел бы рассказать о том, что такое SharePoint App и зачем вообще их придумали (и без того в SharePoint't зоопарк).

Немного истории

В SharePoint 2007 (Microsoft Office SharePoint Server - MOSS) зародилось такое понятие, как решения (solutions) для SharePoint, что позволило создавать пакетные решения, распространять их и поддерживать. Проблема заключалась в том, что серверный код этих решений исполнялся в том же процессе, что и код самого SharePoint'а (w3wp.exe). Данный подход был полон минусов:

  • Ни о какой безопасности не было и речи. Любой не очень грамотный программист мог положить на лопатки портал под управление SharePoint;
  • Решения были жестко привязаны к объектной модели SharePoint. В следствии миграция решений на новую версию SharePoint зачастую приводила к переписыванию кода. Решения просто не работали, за исключением ну очень простых решений;
  • Массовое распространение решений через он-лайн каталог было не возможно, т.к. это бы потребовало проведения тщательного code-review каждого решения и всех его модификаций;
  • Любая операция с решениями (обновление, установка, удаление) требовала перезапуска процесса в IIS на всех front-end серверах, что накладывало ограничения при работе в продакшн-среде.

В SharePoint 2010 был создан новый подход создания решений - в песочнице (Sandbox Solutions). Эти решения были ограничены в использовании объектной модели SharePoint и исполнялись в отдельном процессе (SPUCWorkerProcess.exe). Все недостатки решений уровня фермы здесь были решены.

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

Создание sandbox-решения для SharePoint 2010, которое бы могли использовать пользователи с правами только на чтение, было просто невозможно. Безопасность или функциональность.

SharePoint App

В SharePoint 2013 все эти проблемы должен решить новый тип решений - SharePoint App. SharePoint App - совершенно новая модель SharePoint-решений, не имеющая никакого отношения к стандартным решениям SharePoint (farm solution и sandbox solution)! Вот некоторые из причин, почему Microsoft создала новый тип приложения для SharePoint 2013:

SharePoint App работают везде. Одно и тоже приложение SharePoint App будет работать как в Office 365 так и в ферме (здесь не без нюансов, подробнее в одном из следующих постов).

SharePoint App имеют свои собственные разрешения. Разрешения для SharePoint App настраиваются отдельно от разрешений пользователей. Проблема решений для пользователей с правами только на чтение остается в прошлом.

Серверный код не исполняется в среде SharePoint. Теперь весь этот код будет вызываться через веб-службы. Это позволит забыть про ужас обновления решений на стороне SharePoint (есть даже такая сказка от MS - разработка решений для SharePoint 2013 на PHP с использованием MySQL).

App Catalog. Все SharePoint App публикуются в едином каталоге решений, что облегчает их администрирование. Также доступны он-лайн каталоги решений

SharePoint 2013 Tenant

Еще одной важной особенностью является то, что модель SharePoint App всегда подразумевает установку и исполнение в контексте определенного клиента SharePoint, в роли которого выступает набор коллекций сайтов. Даже если клиент приложений SharePoint не сконфигурирован на ферме, он будет создан неявно (на уровне всей фермы).

Зачем?

Причина такого подхода заключается в следующем: приложение устанавливается на отдельном сайте SharePoint, после чего оно используется пользователями на других сайтах. От администратора требуется только один раз установить и настроить это приложение.

Можно и по старинке

Никто не мешает применять при разработке решений старый подход - установку на уровне коллекции сайтов, сайта или списка. В этом случае SharePoint App будет иметь доступ ко всем дочерним объектам (если приложение установлено на уровне сайта, то оно имеет доступ ко всем спискам/библиотекам и т.д.).

Продолжение следует...

Виталий Жуков

Виталий Жуков

SharePoint архитектор, разработчик, тренер, Microsoft MVP (Office Development). Более 15 лет опыта работы с SharePoint, Dynamics CRM, Office 365, и другими продуктами и сервисами Microsoft.

Смотрите также

Развертывание списков и библиотек с помощью SPFx-решений

Развертывание списков и библиотек с помощью SPFx-решений

SharePoint. Drag-and-Drop Загрузчик файлов

SharePoint. Drag-and-Drop Загрузчик файлов

CSOM. Загрузка файлов

CSOM. Загрузка файлов

SharePoint List REST API. Часть 2

SharePoint List REST API. Часть 2

SharePoint Framework. Создание веб-части на Angular

SharePoint Framework. Создание веб-части на Angular

SharePoint List REST API. Часть 1

SharePoint List REST API. Часть 1

Презентация с доклада о SharePoint Framework

Презентация с доклада о SharePoint Framework

SharePoint Framework. Создаем AngularJS 1.x Client WebPart

SharePoint Framework. Создаем AngularJS 1.x Client WebPart

SharePoint. Регистрация CSS и JavaScript с помощью DelegateControl

SharePoint. Регистрация CSS и JavaScript с помощью DelegateControl

SharePoint. Расширяем REST API

SharePoint. Расширяем REST API

SharePoint Excel Services. Создаем кредитный калькулятор

SharePoint Excel Services. Создаем кредитный калькулятор

SharePoint Ribbon API. Использование ToggleButton

SharePoint Ribbon API. Использование ToggleButton

SharePoint 2013. How To: настройка входящей почты для разработчиков

SharePoint 2013. How To: настройка входящей почты для разработчиков

Мифы и правда о Linq to SharePoint

Мифы и правда о Linq to SharePoint

5 особенностей SPSiteDataQuery

5 особенностей SPSiteDataQuery

SharePoint 2013. Введение в SharePoint App. Часть 2

SharePoint 2013. Введение в SharePoint App. Часть 2

Превью для веб-части в SharePoint 2010/2013

Превью для веб-части в SharePoint 2010/2013

SharePoint 2013. Еще немного о новых контролах

SharePoint 2013. Еще немного о новых контролах

SharePoint 2013. Контрол ClientPeoplePicker

SharePoint 2013. Контрол ClientPeoplePicker

SharePoint 2013. Контрол ImageCrop

SharePoint 2013. Контрол ImageCrop

SharePoint 2013. Тип поля Geolocation

SharePoint 2013. Тип поля Geolocation

Создание типа поля в SharePoint

Создание типа поля в SharePoint

SharePoint 2010. Длительные операции с обновляемым статусом

SharePoint 2010. Длительные операции с обновляемым статусом

Linq to SharePoint. Создаем ContentIterator

Linq to SharePoint. Создаем ContentIterator

Linq to SharePoint. Получение данных из другой коллекции сайтов

Linq to SharePoint. Получение данных из другой коллекции сайтов

Linq to SharePoint. Версионность

Linq to SharePoint. Версионность

SharePoint. Получение URL-адреса иконки для документа

SharePoint. Получение URL-адреса иконки для документа

SharePoint 2010. PostBack для Fluent Ribbon API

SharePoint 2010. PostBack для Fluent Ribbon API

Linq to SharePoint. Блокировка документов

Linq to SharePoint. Блокировка документов

Linq to SharePoint. Паттерн Repository

Linq to SharePoint. Паттерн Repository

Linq to SharePoint. Получение мета-данных списка

Linq to SharePoint. Получение мета-данных списка

Linq to SharePoint. Мапинг полей

Linq to SharePoint. Мапинг полей

Linq to SharePoint. Формирование данных для ProcessBatchData

Linq to SharePoint. Формирование данных для ProcessBatchData

Linq to SharePoint. Сравнение производительности с Camlex.NET

Linq to SharePoint. Сравнение производительности с Camlex.NET

Linq to SharePoint. Часть 5. Поля Choice и MultiChoice

Linq to SharePoint. Часть 5. Поля Choice и MultiChoice

Linq to SharePoint. Часть 4. Dynamic LINQ

Linq to SharePoint. Часть 4. Dynamic LINQ

Linq to SharePoint. Особенности. Часть 3

Linq to SharePoint. Особенности. Часть 3

Linq to SharePoint. Особенности. Часть 2

Linq to SharePoint. Особенности. Часть 2

SharePoint 2010. PeopleEditor. Установка значения

SharePoint 2010. PeopleEditor. Установка значения

SharePoint 2010. Настройка входящей почты для кастомного списка

SharePoint 2010. Настройка входящей почты для кастомного списка

Linq to Sharepoint. Особенности

Linq to Sharepoint. Особенности

EntityFramework. Оптимистические блокировки

EntityFramework. Оптимистические блокировки