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 будет иметь доступ ко всем дочерним объектам (если приложение установлено на уровне сайта, то оно имеет доступ ко всем спискам/библиотекам и т.д.).
Продолжение следует...