Jerry Yasir SharePoint MVP, MCT

22
Jerry Yasir SharePoint MVP, MCT Building Autohosted Apps for SharePoint 2013

description

Building Autohosted Apps for SharePoint 2013. Jerry Yasir SharePoint MVP, MCT. Who Am I?. SharePoint Server MVP Since 2010 SharePoint Practice Lead at US TECH Solutions (Jersey City, NJ) - PowerPoint PPT Presentation

Transcript of Jerry Yasir SharePoint MVP, MCT

Page 1: Jerry Yasir SharePoint  MVP, MCT

Jerry YasirSharePoint MVP, MCT

Building Autohosted Apps for SharePoint 2013

Page 2: Jerry Yasir SharePoint  MVP, MCT

Who Am I?SharePoint Server MVP Since 2010SharePoint Practice Lead at US TECH Solutions (Jersey City, NJ) Founder of the Largest SharePoint User Group in Middle East Riyadh SharePoint User Group RSUG Co-Lead SharePoint Pakistan User GroupMicrosoft Certified Trainer (MCT) since 2008.MCSE SharePoint 2013MCITP SharePoint Admin 2010, MCPD SharePoint Developer 2010 & MCTS SharePoint 2010 Configuration & DevelopmentMCTS WSS 3.0, SharePoint Server 2007, MCITP, MCTS Silverlight 4 Development, Project Server 2007 & 2010, MCTS Project Professional 2007 & 2010, MCPD.NET, MCSD.NET MCAD.NETEmail: [email protected], MSN: [email protected]: @jerry_yasir Facebook: yasir.attiq (Jerry Yasir)Blog: http://jerryyasir.wordpress.com

Page 3: Jerry Yasir SharePoint  MVP, MCT

Evolution of SharePoint Development2007

SharePoint

IIS

Code runs from GAC on same w3wp.exe as

SharePoint web application

2010

SharePoint

IIS Sandbox

Code runs on SPUCWorkerProcess.ex

e or calls client.svc (CSOM)

2013

SharePoint

IIS with _api App

Code runs outside of SharePoint but has trust to

leverage capabilities exposed in _api

Page 4: Jerry Yasir SharePoint  MVP, MCT

App Hosting Options

SharePoint-Hosted App

Provision an isolated sub web on a parent web (separate domain)• Reuse web elements

(lists, files, out-of-box web parts)• No server code allowed; use client JavaScript for logic, UX

Provider-Hosted App

“Bring your own server hosting infrastructure and technology platform”Get remote events

from SharePoint Use CSOM/REST + OAuth to work with SP

Cloud-based Apps

Your Hosted

Site

Autohosted App

Windows Azure + SQL Azure provisioned invisibly as apps are installed

Azure

SharePoint

Host WebApp Web* (separate

SharePoint domain)SharePoin

t Host WebApp Web*

(separate SharePoint domain)SharePoin

t Host WebApp Web

(separate SharePoint domain)

*App Webs are optional in Cloud-Hosted Apps

SharePoint Cloud

Page 5: Jerry Yasir SharePoint  MVP, MCT

Host Web App Web Azure

Lists/LibrariesClient Web PartCustom ActionsManaged CodeModulesWeb Part PageDatabase

Autohosted Capability QuizWorkflow

Page 6: Jerry Yasir SharePoint  MVP, MCT

App Lifecycle

App Developer Tenant Admin

Site Owner

Site Owner

Site Owner

Site OwnerApp

Catalog

SharePoint Store(Office Marketplace)

Tenant A

Tenant B

.app .app

.app

Web Site SQL DB

Workflow

Web Site SQL DB

Workflow

Web Site SQL DB

Workflow

Web Site SQL DB

Workflow

Page 7: Jerry Yasir SharePoint  MVP, MCT

Demo

• Autohosted App Debug vs. Deploy

Page 8: Jerry Yasir SharePoint  MVP, MCT

App UX OptionsFull-ScreenNavigating to the app takes the user out of the SharePoint site and to the app host (ex: Azure, separate SharePoint domain, etc)The app uses the full real estate of the browser viewing area (can leverage SharePoint chrome)

SharePoint DialogSimilar to Full-screen, but displayed in a dialog windowTypically launched through custom action or script (ex: context menu or ribbon button)

App PartsDisplays app as an element in an existing web part or wiki pageVery similar to Page Viewer Web Part, but with better communication capabilities

Page 9: Jerry Yasir SharePoint  MVP, MCT

Optimizing UXLeverage chrome controlChrome control allows full-screen apps to be framed in the chrome and styles similar to the host web (including placeholders for icons, breadcrumbs, and menus)

Import styles from host webAdd reference to http://<host web domain>/_layouts/15/defaultcss.ashx in the head of app pageThe chrome control automatically adds styles from the host web, so this approach is only required for pages displayed in app parts or modal windows

Optimize apps part size with post messageHost web listens for post message and resizes based on dimensions passed from the app partStill imperative to design around a predictable rendering size (challenging without knowing the styles that will be applied)

Page 10: Jerry Yasir SharePoint  MVP, MCT

App PermissionsApp permissions are configured in the app manifestDevelopers specify the permissions the app needs to be able to run

Apps request permissions during installationGranting app permission is all or nothing (installer can’t pick a chose what to grant from the request)

Apps must be granted permissions by the user executing the appUsers can only grant the permissions they have

Azure Access Control Service (ACS) plays the role of the authorization serverAzure ACS stores basic information about the app and provides apps access tokens for calling SharePoint APIs

Page 11: Jerry Yasir SharePoint  MVP, MCT

AppManifest.xml DissectedGeneral InformationTitle, version, icon, start page and query string

PermissionsPermission levels at specific scopes (ex: write access to profiles, read access to site collection)

PrerequisitesDefine feature dependencies for the app (ex: publishing features)

Supported LocalesDefines locales the application will support (ex: en-US, fr-FR, etc)

Remote EndpointsA list of remote endpoints the SharePoint App may access through SP.WebProxy.invoke()

Page 12: Jerry Yasir SharePoint  MVP, MCT

App Storage OptionsSharePoint ListsGreat for SharePoint-hosted apps, but requires CAMLRequires an app web

SQL AzurePackage app with SQL Package (.dacpac) or by referencing SQL Database projectSQL Azure components are provisioned invisibly when the app is installed by a tenantConnection information in available through specific APIs (both SqlConnection class and raw connection string)

Others, but be careful with latency

Page 13: Jerry Yasir SharePoint  MVP, MCT

SQL AzureUsing SqlConnection objectSpecify connection string in web.config using name LocalDBInstanceForDebugging and the API will dynamically use this connection when debugging

Using raw connection stringThe API for retrieving the raw connection string will NOT automatically work when debugging

Page 14: Jerry Yasir SharePoint  MVP, MCT

Demo

• Supplier App

Page 15: Jerry Yasir SharePoint  MVP, MCT

App Roles/AdminsLeverage SharePoint permissions from app webThe app web inherits permissions from the host webGreat for simple permissions models (ex: App Administrator = Host Site Administrator)Be careful…checking permission on the host web would require the app to have full control of the host web

Store app permissions in the app’s storage (ex: SQL Azure)Very flexible…can use almost any data/permission modelNeed a way to seed the permissions table with administrators

Page 16: Jerry Yasir SharePoint  MVP, MCT

Demo - Employee Recognition Part 1RequirementsAllow users to send recognition to other usersSubmission should post to the SharePoint NewsfeedApp should be profile aware (user pictures, titles, managers, etc)App should send email to submitter, recipient, and both managers (if applicable)No administrative settings (static settings)

Design DecisionsHosting: AutohostedUX: full-screen and app partAPIs: mixture of CSOM and SSOMStorage: SharePoint ListApp Roles/Admin: Not Applicable

Page 17: Jerry Yasir SharePoint  MVP, MCT

Demo - Employee Recognition Part 2Requirements (same as previous, except the following)Allow users to select badges to go with the recognition (ex: Going Green, Community Ninja, etc)Allow app administrators to configure quotas and notification settingsProvide reports of recognition history

Design DecisionsHosting: AutohostedUX: full-screen and app partAPIs: mixture of CSOM and SSOMStorage: SQL Azure (much better for reporting) for data and SharePoint Library for badgesApp Roles/Admin: User permissions from SharePoint app web

Page 18: Jerry Yasir SharePoint  MVP, MCT

Demo• Advanced Employee

Recognition

Page 19: Jerry Yasir SharePoint  MVP, MCT

Usage Model and LicensingMicrosoft-owned Azure accountAll autohosted apps for SharePoint are provisioned into a Microsoft-owned Azure account that only Microsoft has access to

Licensing through TenantAzure hosting costs passed through to tenant…developer doesn’t pay for hosting

App CatalogGreat for company-specific customizations1 app hosting license = 1 user / app / monthInitial number of free licenses, but more available for purchase by tenant admins

SharePoint StoreGreat for ISVs or developers looking capitalize on the app modelSupport for autohosted apps is coming soon to the SharePoint store

Page 20: Jerry Yasir SharePoint  MVP, MCT

Usage Quotas/ThrottlingUsage Quota 1 User 25 Users 250+ UsersCPU Time (Daily)

25 min / day 100 min / day 200 min / day

CPU Time (5min)

2 min / 5 min 7 min / 5 min 13 min / 5 min

Data Out 132MB / day 732MB / day 1533MB / dayStorage 1GB 1GB 1GBMemory Usage

640MB 640MB 640MB*Usage quotas can be monitored from SharePoint Online admin portal

Page 21: Jerry Yasir SharePoint  MVP, MCT

Key TakeawaysEasy to DevelopDeveloping autohosted apps leverages familiar tools, simple deployment, and automatic DR

Simplified UpgradeAutohosted apps provide a reliable upgrade path and do not impede farm upgrades/patches

Cloud ReadyAutohosted apps were developed to provide an uncompromised cloud experience in Office 365

Rich SharePoint IntegrationNew APIs allow autohosted apps to run from Azure but richly integrate with SharePoint

Low Cost of Entry for DevelopersNo more bulky development environment…Visual Studio and a tenant

Page 22: Jerry Yasir SharePoint  MVP, MCT

Questions?