Upload
biwug
View
582
Download
4
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
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