Peter Plessers - App Development

32
App Development Lessons learned in SharePoint

description

 

Transcript of Peter Plessers - App Development

Page 1: Peter Plessers - App Development

App Development

Lessons learned in SharePoint

Page 2: Peter Plessers - App Development

Peter Plessers• SharePoint Architect• Spikes

• Working on ‘Tasks in a Box’• tasksinabox.com

Page 3: Peter Plessers - App Development

Email is good for communication, not for

collaboration

Still most used ‘collaboration tool’ at companies

Page 4: Peter Plessers - App Development

Email as collaboration tool

Group conversations grow unwieldy very quickly

Keeping track of the most

current versions of

attachments

Maintaining clarity about

what needs to be done, by

whom and by when

Page 5: Peter Plessers - App Development

Task lists in SharePoint

Create & Delegate a task• Which of the

100+ task lists?• Do we both have

the required permissions?

• Is there a suitable site and task list?

Follow up on tasks• Navigate to each

task list?• Custom

development to agregate tasks?

Security• Assigning a task

to ‘User A’ does not give ‘User A’ access

Move task from site A to site B• No go

Page 6: Peter Plessers - App Development

DRY (Don’t Repeat Yourself)

SharePoint• Save list as

template• Static templates• Can be done by

end-user

Tasks in a Box• Dynamic

Templates• Calculated Due

Dates• Rule-based

Tasks• Rule-based

Assignees

Workflows• IT Responsibility• It takes its time

Page 7: Peter Plessers - App Development

TASKS IN A BOX

Page 8: Peter Plessers - App Development

TASKS IN A BOX

tasksinabox.com

Available in the Office App store beginning of 2014

Page 9: Peter Plessers - App Development

TASKS IN A BOX

DEMO

Page 10: Peter Plessers - App Development

ArchitectureTasks in a Box

Page 11: Peter Plessers - App Development

SharePoint Apps Deployment

App Web (from WSP)

HostwebSharePoint-hosted

AppReuse (lists, out-of-box web parts)

Client side technologies and declarative workflows

Provider-hosted App“Bring your own server hosting

infrastructure”

Get remote events from SharePoint Use CSOM/REST + OAuth

Cloud-hosted apps

Your Hosted Site

Auto-hosted AppWindows Azure + SQL Azure

provisioned automatically as apps are installed

Azure SharePoint

Web

SharePoint Web

Page 12: Peter Plessers - App Development

SharePoint-Hosted• No server-side

code• Only privileges of

signed-in user

Auto-Hosted• No access to

full Azure stack

• Creates separate instance for each app

Provider-Hosted

Page 13: Peter Plessers - App Development

Architecture

Web RoleWeb RoleInstance

Azure SQL

Host Web

App Web

Web RoleWorker Role

InstanceService Bus

BLOB Storage

CSOM

RER

ACS

Page 14: Peter Plessers - App Development

Multi-tenancy

Web RoleWeb RoleInstance

Azure SQL

Web RoleWorker Role

InstanceService Bus

BLOB Storage

Shared

Dedicated

Page 15: Peter Plessers - App Development

Queue options in Azure

Windows Azure

Queues Service Bus

Page 16: Peter Plessers - App Development

Why service bus?• Guaranteed FIFO ordered

delivery• Duplicate message

detection• Long polling operation• Renew message lock

Page 17: Peter Plessers - App Development

Lessons Learned

Tasks in a Box

Page 18: Peter Plessers - App Development

Lessons Learned1. Remote Event Receivers2. Get all Office 365 users3. Office Web Apps

Page 19: Peter Plessers - App Development

Remote Event Receivers

Production App Production

RER (https://app.contoso.com/…/service.svc

)

Test App Test

RER

(https://

app.contoso.com/…/se

rvice.svc)

Page 20: Peter Plessers - App Development

Get all Office 365 users

Lessons Learned

Page 21: Peter Plessers - App Development

Get all Office 365 users• Exploring the CSOM APIs• No API to get all users

• Use the ‘User Information List’• Is incomplete

• User Profiles• User Profile service does not allow to enumerate all user

profiles

Page 22: Peter Plessers - App Development

Get all Office 365 users• Use search API to get all users• Use result source to restrict results to ‘People search’

• Do not forget!• Implement paging• Look out for ‘TrimDuplicates’

• But…

Page 23: Peter Plessers - App Development

Authorization Policies• User-only policy• Only user identity is checked

• User + App policy• Both user & app identity is checked

• App-only policy• Only app identity is checked• Needs to be approved when app is installed• Similar to ‘RunWithElevatedPrivileges’

Page 24: Peter Plessers - App Development

Back to… Get all Office 365 users

Web RoleWeb RoleInstance

Azure SQL

Web RoleWorker Role

InstanceService Bus

BLOB Storage

Search

Page 25: Peter Plessers - App Development

Office Web Apps

Lessons Learned

Page 26: Peter Plessers - App Development

Office Web Apps• A simple requirement

List of documentsOffice Web Apps

(/_layouts/15/WopiFrame.aspx)

Page 27: Peter Plessers - App Development

X-Frame Options

X-FRAME-OPTIONS = SAMEORIGIN

Page 28: Peter Plessers - App Development

How does ‘WopiFrame.aspx’ work?

WopiFrame.aspx

IFRAME

officeapps.live.com

• Document URL• Access Token

Page 29: Peter Plessers - App Development

How does ‘Office Web Apps’ work?

WOPIWeb Application Open Platform Interface

Page 30: Peter Plessers - App Development

WOPI Protocol

WOPI Client

WOPI Server

Browser

Request File

Render File

Get File Information

File Information

Get File

File in Binary Format

Html

SharePoint(/_vti_bin/wopi.ashx)

Page 31: Peter Plessers - App Development

WOPI Protocol

WOPI Client

CustomWOPI Server

Browser

Request File

Render File

Get File Information

File Information

Get File

File in Binary Format

Html

SharePoint CSOM

Page 32: Peter Plessers - App Development

Thank you