peter plessers - app development

Post on 01-Dec-2014

582 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

App Development

Lessons learned in SharePoint

Peter Plessers• SharePoint Architect• Spikes

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

Email is good for communication, not for

collaboration

Still most used ‘collaboration tool’ at companies

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

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

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

TASKS IN A BOX

TASKS IN A BOX

tasksinabox.com

Available in the Office App store beginning of 2014

TASKS IN A BOX

DEMO

ArchitectureTasks in a Box

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

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

Architecture

Web RoleWeb RoleInstance

Azure SQL

Host Web

App Web

Web RoleWorker Role

InstanceService Bus

BLOB Storage

CSOM

RER

ACS

Multi-tenancy

Web RoleWeb RoleInstance

Azure SQL

Web RoleWorker Role

InstanceService Bus

BLOB Storage

Shared

Dedicated

Queue options in Azure

Windows Azure

Queues Service Bus

Why service bus?• Guaranteed FIFO ordered

delivery• Duplicate message

detection• Long polling operation• Renew message lock

Lessons Learned

Tasks in a Box

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

Remote Event Receivers

Production App Production

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

)

Test App Test

RER

(https://

app.contoso.com/…/se

rvice.svc)

Get all Office 365 users

Lessons Learned

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

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…

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’

Back to… Get all Office 365 users

Web RoleWeb RoleInstance

Azure SQL

Web RoleWorker Role

InstanceService Bus

BLOB Storage

Search

Office Web Apps

Lessons Learned

Office Web Apps• A simple requirement

List of documentsOffice Web Apps

(/_layouts/15/WopiFrame.aspx)

X-Frame Options

X-FRAME-OPTIONS = SAMEORIGIN

How does ‘WopiFrame.aspx’ work?

WopiFrame.aspx

IFRAME

officeapps.live.com

• Document URL• Access Token

How does ‘Office Web Apps’ work?

WOPIWeb Application Open Platform Interface

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)

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

Thank you

top related