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.

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

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

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

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

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

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

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

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

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

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

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