360 likes | 676 Views
Создание приложений ( Apps ) для SharePoint 2013 в Облаке. Марат Бакиров UMSOFT. Станислав Выщепан Ай- Теко. Обзор. Что такое приложения (apps) для SharePoint 2013 SharePoint hosted apps Cloud-Hosted apps Возможности приложений. История разработки для SharePoint. 2003 : XML
E N D
Создание приложений (Apps) для SharePoint 2013 в Облаке Марат Бакиров UMSOFT Станислав Выщепан Ай-Теко
Обзор • Что такое приложения (apps) для SharePoint 2013 • SharePoint hosted apps • Cloud-Hosted apps • Возможности приложений
Историяразработки для SharePoint • 2003: XML • 2007: Feature framework & WSP • 2010: Sandbox solutions & Client Side • 2013: Apps
Хостинг приложений SharePoint Web Your Hosted Site Provider-hosted App “Построй свою инфраструктуру” Cloud-hosted apps Обработчики событийCSOM/REST + OAuth Autohosted App Windows Azure + SQL Azure автоматически создается при установке app SharePoint Web Azure Host web • SharePoint-Hosted App • Используем артефакты SharePoint (списки, страницы) • Клиентские технологии и workflow App Web (from WSP)
Формы приложений Полная страница Отдельная страница приложения со своей навигацией • App Parts • Аналог веб-части для размещения на страницах сайтов SharePoint • Пункт меню • Команда в Ribbon или Меню
Обзор • Что такое приложения (apps) для SharePoint 2013 • SharePoint hosted apps • Cloud-Hosted apps • Возможности приложений
Почему SharePoint hosted apps Без дополнительнойинфраструктуры Одинаково работает в Office365 и on-prem Встроеннаяизоляцияэкземпляров Без лишнихзатрат Автоматическаяаутентификация
Изоляция SharePoint-hosted приложений • 1 экземпляр приложения= 1 “app web” • Каждый App webs имеет свой домен: • Использует same-origin policy в браузере для изоляции JavaScript Host web https://contoso.sharepoint.com/site/ App web https://contoso-appUID.sharepoint.com/site/app/
Доступные компоненты • Данные • Списки • Библиотеки • WebProxy • App scoped ECTs • Интерфейс • Страницы (только разметка) • CSS файлы • Custom Actions • Встроенные Веб-части • Логика • JavaScript • Workflows • Custom Actions
JSOM & REST • JavaScript object model varctx = new SP.ClientContext("http://contoso-appUID.spo.com/site/app");ctx.load(ctx.get_web());ctx.executeQueryAsync(); • REST/OData http://contoso-appUID.spo.com/site/app/_api/web/Title _api/web/lists _api/web/lists/getByTitle('Documents') _api/social.feed/my/news _api/SP.UserProfiles.PeopleManager/getMyProperties() _api/search/query?Querytext='Marketing'
Как обратиться к Host Web • Чтобы обратиться к артефактам за пределами appweb: • Запросить разрешения • Сделать CSOM вызов, используя правильный контекст • varctx = new SP.ClientContext(appWebUrl); • varappContextSite = new SP.AppContextSite(ctx, targetUrl); • ctx.Load(appContextSite.get_web());
SharePoint hosted app Марат Бакиров UMSOFT
Обзор • Что такое приложения (apps) для SharePoint 2013 • SharePoint hosted apps • Cloud-Hosted apps • Возможности приложений
Для чего использовать Cloud hosted app • Серверный код • C#, PHP, Java, Ruby, ваш_любимый_язык • Повышение привилегий • Выполнять код с разрешениями выше, чем у пользователя • Обработчики событий • Обрабатывать события установки и удаления app • Обрабатывать события элементов, списков, сайтов, события безопасности
Недостатки Cloud hosted app • Необходимо самостоятельно хоститьapp • Azure или другие провайдеры • Ваша собственная инфраструктура • Необходимо использовать OAuth или S2S • Управлять токенамиOAuth • Настраивать «доверие» S2S в on-prem • Необходимо поддерживать консистентный внешний вид • Стили и chromeкак в SharePoint
OAuth • Защищенное взаимодействие с SharePoint • App и SharePoint доверяют третьей стороне (ACS) • Доверие создается используя ClientIdи ClientSecret • SharePoint и ACS знают ClientId • App и ACS знают ClientSecret • OAuth Token Flow • SharePoint получает Context Token от ACS и передает приложению • App проверяет Context Tokenи получает Access Token от ACS • Access Token используется App для доступа к SharePoint
High-Trust apps • OAuth не работает в On-prem • Можно подключить, но требует Office365 Tenant • S2S Trust позволяет app обращаться напрямую • Доверие устанавливается с помощью сертификатов • App имеет приватный ключ, которым подписывает запросы • Недостатки • Требуется настройка фермы • Работает только в on-prem
Управление токенами OAuth • Ваше приложение должно запрашивать токены • Visual Studio генерирует класс TokenHelperдля этих целей
Какое API использовать • Вapps доступны только CSOM\REST API • Только они поддерживают OAuth\S2S • Веб-сервисыне доступны • Требуют аутентификацию пользователя • Серверная объектная модель не доступна • Требует запуска на ферме
SharePoint 2013 Remote API _apiэто алиас для _vti_bin/client.svc Server Client CSOM REST OData JSON JavaScript Library Silverlight Library .Net CLR Library Произвольный код
Chrome control • Консистентный внешний вид app • Подтягивает темы с host web • Включает ссылку на host web • Обязательное требование Microsoft • Настраиваемое меню команд • Можно добавлять ссылки на любые страницы
Chrome control $(function () { var options = { appIconUrl: "siteicon.png", appTitle: "Chrome control app" } varnav = new SP.UI.Controls.Navigation( "chrome_ctrl_placeholder", options ); nav.setVisible(true); });
Remote Event Receivers • Аналог серверных ресиверов • Синхронные и асинхронные события • События элементов, списков, сайтов, безопасности и приложений • Не гарантируется доставка событий • В случае недоступности сервера ресиверы игнорируются • Для отладки необходимо использовать Azure Service Bus
Autohosted app Марат Бакиров UMSOFT
Обзор • Что такое приложения (apps) для SharePoint 2013 • SharePoint hosted apps • Cloud-Hosted apps • Возможности приложений
Разрешения приложений Сильно отличаются от разрешений для пользователей • Даются по принципу «все или ничего» Не учитывают иерархию объектов • Разрешения можно получить только на весь сайт\коллекцию целиком • Разрешения могут быть выданы на разные области • Список, сайт, коллекция сайтов или тенант • Поиск,BCS, таксономия, профили пользователей • Отдельные возможности Project Server
Политики разрешений • App + User policy • Пользователь И приложение должны иметь доступ к ресурсу (пересечение) • Если не хватает разрешений, то «нет доступа» или «элемент не найден» • App-only policy • Только приложение должно иметь доступ к ресурсу • Приложение может обращаться к SharePoint без контекста пользователя • Только в серверном коде • User Policy • Не используется в приложениях
App-only Policy • Два основных сценария: • Выполнение действий с разрешениями выше, чем у текущего пользователя (повышение привилегий) • Обращение к SharePoint без контекста пользователя • Как это сделать • ДобавитьAllowAppOnlyPolicyв AppManifest.xml • Написать код для получения app only access token
Workflow • Используется движок WF4 • Поддерживаются циклы и переходы к предыдущим состояниям • Автоматически привязываются к спискам на app web • Можно привязать к host web с помощью кода
App-scoped ECT • Можно создавать внешние типы контента в app • Раньше только на уровне всей фермы • Работает с OData источниками данных • Удобный дизайнер в студии
App parts • Тоже самое что Web Part с iframe • Внутри отображается обычная страница из app • Можно задавать настраиваемые свойства • Доступные типы свойств: string, enum, int, bool • Не поддерживают connections • И вообще и никак не получить данные из родительской страницы
Custom Actions • Можно добавлять команды на host web • Единственный способ передать данные из host web в app • В любые меню и ribbon • Только ссылку, javascript:кодне работает • Команды могут отображать страницу в диалоге • Достаточно добавить HostWebDialog="true"в XML
Provider hosted app Марат Бакиров UMSOFT
Заключение • Что такое приложения (apps) для SharePoint 2013 • SharePoint hosted apps • Cloud-Hosted apps • Возможности приложений
Q&A Марат Бакиров UMSOFT http://www.gotdotnet.ru/blogs/mbakirov @mbakirov Станислав Выщепан Ай-Теко http://gandjustas.blogspot.ru @gandjustas