host web app web sp tfs azur e sp tfs

31

Upload: trever-chappel

Post on 14-Dec-2015

231 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Host web App web SP TFS Azur e SP TFS
Page 2: Host web App web SP TFS Azur e SP TFS

Deep Dive on building apps like a SharePoint ECM dev Pablo BarvoSenior Developer – SharePoint ECMMicrosoft

SPC067

Page 3: Host web App web SP TFS Azur e SP TFS

ObjectivesDive into the app model from ECM perspectiveDocument management scenarioLook at common full trust functionality from the app model perspectiveExplore the new opportunities available on the cloud (also available on-prem)

What you’ll learnRemote event receiversClient Web PartsIn the context of custom apps for the App Catalog

Page 4: Host web App web SP TFS Azur e SP TFS

What we’ll coverExtend a Document Management scenarioExisting in-use solution and functionality extended by an app

Building a Provider Hosted appControl on where/how the app is deployed, including inside the corporate firewallUse remote event receivers, client web parts, CSOM (taxonomy, user profile, etc)

For the App CatalogLearn about some app model features and extensions more targeted towards App Catalog apps

Using cloud services & VS 2012SharePoint Online + Azure + Team Foundation Service (on the cloud)All of these are possible on-prem

Page 5: Host web App web SP TFS Azur e SP TFS

A recap on the app modelApps can contain SP elements (content types, lists, etc)These elements are deployed into a separate App Web

An app can request permissions to interact with the host web, or host site collection, using the Client Object Model/REST

Host web

App web

Page 6: Host web App web SP TFS Azur e SP TFS

ScenarioContoso Electronics development teamIn charge of developing new functionality into their website

SharePoint Online for document managementExisting solution for handling specs, documents, designs and collaterals for new features

TFS for dev code/work/task managementTacking the dev work and task progress. Using Team Foundation Service on the cloud.

SP TFS

Page 7: Host web App web SP TFS Azur e SP TFS

Before we start…

Scenario

Page 8: Host web App web SP TFS Azur e SP TFS

ScenarioOur app will do 2 things:1. ItemAdded event receiver to populate fields2. Client web part to display data from TFS

Will be hosted in AzureNote however that provider hosted apps can be hosted anywhere

All of this, directly in the existing host web list

Azure

SP TFS

Page 9: Host web App web SP TFS Azur e SP TFS

Part #1

Page 10: Host web App web SP TFS Azur e SP TFS

Remote Event ReceiversWeb service basedA remote end point that SharePoint will invoke when the event happens

Available in Autohosted or Provider Hosted appsReceives an OAuth context token to talk back to SPSupported everywhere regular event receivers areBoth sync and async

App Serv

er

SP

Page 11: Host web App web SP TFS Azur e SP TFS

Remote Event Receivers flow - OAuth1. Something happens in SharePoint

App Serv

er

SP

ACS

2

3

4

512. SharePoint calls ACS to get a context token for the current user (signed)

3. SharePoint invokes the remote event receiver with the context token

4. The remote server calls ACS with the context token and obtains an access token (signed)

5. The remote server can now use the access token to call SharePoint back and perform operations against it

Page 12: Host web App web SP TFS Azur e SP TFS

What we’ll do next (1/2)1. When an item is added to the Spec

Library

2. Receive the async event in Azure

3. Populate the “Feature Owner” field with the current user

4. Get the user profile properties of the user

5. Find or create the Term for the area, and set the “Feature Area” field

6. Create a TFS Back Log item for the element

7. Populate the “TFS Work Item Id” field with it

8. Save the values out

Azure

SP TFS

Page 13: Host web App web SP TFS Azur e SP TFS

What we’ll do next (2/2)Cannot use the WSP elements.xml to deploy itWe’ll use the App installed and uninstalled events to add the receiver in the host web

1. When the app is installed

2. Get the Spec Library and register the remote event receiver for “Item Added”

Azure

SP

TFS

1. When the app is uninstalled

2. Get the Spec Library and remove the remote event receiver

Page 14: Host web App web SP TFS Azur e SP TFS

Demo

App + Remote Event Receivers

Page 15: Host web App web SP TFS Azur e SP TFS

Remote Event Receivers recapWeb service based, support for sync and async

New app events (installed/uninstalled)Sync only -- Install/Uninstall will fail if these fail

public class DocSetEventReceiver : IRemoteEventService{ public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties) { //sync }

public void ProcessOneWayEvent(SPRemoteEventProperties properties) { //async }}

Page 16: Host web App web SP TFS Azur e SP TFS

Remote Event Receivers recapCan be deployed to the host web via CSOM

No F5 debugging when working against the cloudF5 debug is supported with SharePoint server running locally

//Add the remote event receiverlist.EventReceivers.Add(new EventReceiverDefinitionCreationInformation(); { EventType = EventReceiverType.ItemAdded, ReceiverName = "AppWorkItemEventReceiver", ReceiverUrl = "https://devcontoso.azurewebsites.net/DocSetEventReceiver.svc", SequenceNumber = 10 });

Page 17: Host web App web SP TFS Azur e SP TFS

Part #2

Page 18: Host web App web SP TFS Azur e SP TFS

Client Web Parts<iframe> to a remote pageCan be a page hosted in the app web, or in the remote app server

Includes a context token to call SP back

Includes a set of standard tokens:

• SPHostUrl: Host web url

• SPLanguage: Current language

• SPAppWebUrl: App web url

Exposed in the host web

App Serv

er

SP

Page 19: Host web App web SP TFS Azur e SP TFS

For our scenarioWe need the Item ID from the document setThis information is not included in the tokens OOB

We cannot use client web part propertiesWhy? These property values are set per page.

The parent page knows them: postMessage approachAsk for the details of the item from the client web part page to the parent pageRequires JS in the parent page, next to the client web part (ok for the App Catalog scenario)

Page

iframe

postMessage('getItemDetails‘…)

postMessage(‘{ listId: …, docSetId: … }‘…)

Page 20: Host web App web SP TFS Azur e SP TFS

What we’ll do next (1/2)1. The page renders with the client web part

on it

2. The <iframe> is redirected to the client web part page, with a context token

3. The page renders back and the JS code to get the items details from the parent page is executed

4. The item details and context token are then used to call a WebAPI service

5. The WebAPI service calls SharePoint to get the value of the TFS Work Item Id field for the item

6. TFS is queried for the details and returned as JSON

7. A client side template is used to render the UI

Azure

SP

TFS

Page

iframe

1

23

4

5

6

Page 21: Host web App web SP TFS Azur e SP TFS

What we’ll do next (2/2)1. When the app is installed

2. Get the Document Set home page in the Spec Library and add:

1. Client Web Part

2. Script Editor Web Part, with the JS to handle the postMessage request

Azure

SP

TFS

1. When the app is uninstalled

2. Get the Document Set home page in the Spec Library and remove the web parts

Page 22: Host web App web SP TFS Azur e SP TFS

Demo

Client Web Part & Deployment

Page 23: Host web App web SP TFS Azur e SP TFS

Client Web Part recapExposed in the host web<iframe> to a remote page (url)+ tokensCan be inserted using CSOM

Can inherit host site stylespostMessage approach to obtain info from the pageMainly for App Catalog apps

//Get the webpart manager for the page and insert the web partFile homepage = ctx.Web.GetFileByServerRelativeUrl(pageUrl);LimitedWebPartManager manager = homepage.GetLimitedWebPartManager(PersonalizationScope.Shared); WebPartDefinition scriptEditorDef = manager.ImportWebPart(ClientWebPartXml);ctx.Load(scriptEditorDef.WebPart);manager.AddWebPart(scriptEditorDef.WebPart, "WebPartZone_Top", 1);

Page 24: Host web App web SP TFS Azur e SP TFS

Deployment recapappregnew.aspx for Client ID and Client SecretThese will be valid for this tenant onlyYou can use a Microsoft Seller ID to register an app for all tenantsThere are also PowerShell commands available

App server needs to know these valuesWeb.config setting for .NET solutionsThese values are used when talking to ACS (TokenHelper)

App Catalog deploymentAdd you .app file into the app catalog to make the app available to the tenant sites

Page 25: Host web App web SP TFS Azur e SP TFS

There is more

Page 26: Host web App web SP TFS Azur e SP TFS

Closing…App model opens new opportunitiesCustomize SharePoint with custom appsA lot of new scenarios now possible both in the cloud and on premMuch expanded Client Side Object ModelComplete scenarios with SharePoint and Office appsCreate apps for sale in the marketplace

Leverage cross-platform standardsRun your app in any technology backend, deploy anywhereLeverage web standards

Opportunities for Corporate appsHigher integration with the host web content

Page 27: Host web App web SP TFS Azur e SP TFS

Other talks of interestSPC018: Best Practices for ECM in the Cloud, and how large organizations can get the most out of Office 365SPC262: What's New with Enterprise Content Management in SharePoint 2013SPC068: Deep Dive on Integrating SharePoint Metadata with other Metadata Stores

SPC241: Understanding authentication for apps for SharePointSPC002: 10 Tips for building Great Apps SPC032: Building out a great app UI SPC010: An overview of developing SharePoint-hosted apps

SPC212: SharePoint 2013 Workflow Development for Apps and Solutions for SharePoint 2013 with VS 2012SPC213: SharePoint 2013 Workflow: Architecture and Configuration

Page 28: Host web App web SP TFS Azur e SP TFS

Thank you!

Page 29: Host web App web SP TFS Azur e SP TFS

Q&A

Page 30: Host web App web SP TFS Azur e SP TFS

Evaluate this session now on MySPC using your laptop or mobile device: http://myspc.sharepointconference.com

MySPC

Page 31: Host web App web SP TFS Azur e SP TFS

© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.