23
SharePoint Apps in SharePoint 2013 Ryan Schouten SharePoint Saturday Bend @shrpntknight

SharePoint Apps in SharePoint 2013 Ryan Schouten SharePoint Saturday Bend @shrpntknight Ryan Schouten SharePoint Saturday Bend @shrpntknight

Embed Size (px)

Citation preview

SharePoint Apps in SharePoint 2013

Ryan SchoutenSharePoint Saturday Bend

@shrpntknight

About MeRyan SchoutenWorked with SharePoint for 8 yearsI have experience with SharePoint 2003 – 2013I have worked with ASP.Net for 11 yearsMCPD, MCT

Contact [email protected]@shrpntknighthttp://www.sharepointknight.com

Objectives• The Need• Benefits• Hosting Options• Limitations• New Functionality• Development Options• Permissions and Security• Deployment• Break it Down

Why the change

Today’s Market Today’s Trends Our Principles

Hence the new App Model

• No custom code on the SharePoint server• Easier to upgrade to future versions of SharePoint• Works in Office 365 SharePoint Online without limitations

• Reduces the ramp-up time for those building apps• Don’t need to know/be as familiar with SharePoint “-isms”• Leverage hosting platform features in new apps

• Enables taking SharePoint apps to different levels – further than what can be done with farm / sandbox solutions

Benefits (continued)

• Low cost of entry for developers• Hosted SharePoint Dev sites• No need to have a farm per developer (Shared Development Farms/Tenants)• No Intensive development environment requirements

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)

SharePoint

Host WebApp Web*

(separate SharePoint domain)

SharePoint

Host WebApp Web

(separate SharePoint domain)

*App Webs are optional in Cloud-Hosted Apps

Hosting ComparisonSharePoint Hosted Cloud Hosted

App Scope SharePoint Site Site or TenancyArchitecture Web Site Can be Multi-Tenant

AppDeveloper Skillset SharePoint + HTML/JS Full StackUI Technologies SharePoint + HTML/JS Any Web StackServer Code None AnyStorage Lists and Libraries AnyKey Limitations No Server Code Hosting Expertise

RequiredGood for… Smaller apps &

resource storageAny type of Application

App Presentation OptionsShape Description Example

Immersive Full Page App App that implements a new scenario for customers

Resource Tracking, Budgeting

App/Client Part Provides new parts you can add to your sites

Weather, News, Stock Ticker

Extension App Add new actions for documents and items

Display Document Visualization, Print to Print Service Vendor

Limitations

• Apps in general• Deployed to different domain(extra login possible)• Initial configuration is a pain

• App/Client Parts• Loaded in an iframe(size is fixed, not auto sizing)• Also loaded from other domain

New Functionality

• Improved CSOM• Improved Rest API• Needed since code is not run in SharePoint Processes

• O-Auth Security• New Security Model to allow app specific permissions

Let’s Create Our First App

JSOM Library

• Library has two versions• SP.js – minified version of the library• SP.Debug.js – unminified with intellisense

• Both can be found in the layouts folder• %ProgramFiles%\Common Files\Microsoft Shared\Web Server Extensions\15\

TEMPLATE\LAYOUTS• http://siteurl/_layouts/15

• Easiest way to reference it in SharePoint is<SharePoint:ScriptLink name="SP.js" runat="server" ondemand="false" localizable="false" loadafterui="true" />

Example

SP.SOD.executeOrDelayUntilScriptLoaded(GetProjects, "PS.js");

function GetProjects() { var projContext = PS.ProjectContext.get_current(); projects = projContext.get_projects(); projContext.load(projects, 'Include(Name, CreatedDate, Id)'); projContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);}

Continuedfunction onQuerySucceeded(sender, args) { var projectEnumerator = projects.getEnumerator(); while (projectEnumerator.moveNext()) { var project = projectEnumerator.get_current();

var row = tblProjects.insertRow();

row.insertCell().innerText = project.get_name(); row.insertCell().innerText = project.get_createdDate(); row.insertCell().innerText = project.get_id(); }}

Let’s Try It

Permissions and Security

• Apps have their own permissions• You must specify what SharePoint you want to access in your Manifest• Content is secured through Oauth• Users must have the permissions you need for them to install

Deployment

Everything Packaged into a .app fileThis can be used to add the app manually to a site or publish it to the SharePoint Store

Let’s Examine How this works

Gotchas

On-Premise Sites are not configured by default to handle AppsSideloading of apps is not enabled on this site.

Enable-SPFeature e374875e-06b6-11e0-b0fa-57f5dfd72085 –url http://sp.contoso.com

App Management Shared Service Proxy is not installed.Technet article on how to setup On-Premise for development

http://msdn.microsoft.com/en-us/library/fp179923.aspx

Questions?

Wrap-up

Apps can be the way to goEvaluate your needs to decide how to proceed.

Join us at Fall FestPlease fill out the survey at: http://bit.ly/1wV5wD6 or