1. Understanding SharePoint 2013
Code Deployment Models
- Apps vs. Solutions
Nik Patel
Lead Solutions Architect, Slalom Consulting, Chicago Practice
2. Session Goals
Session Level - 200
Audience – SharePoint Architects and SharePoint Developers
Simple Goal – Understanding where Apps fits in SharePoint 2013 Development Landscape
2
3. About Me
Nik Patel
• Lead Solutions Architect, Slalom Consulting
• Working with SharePoint 2010 since Summer 2009 TAP
• Master in Computer Science from IIT, Chicago
Contact Info
• Email – patenik2@yahoo.com
• Blog – Nik Patel’s SharePoint World -
http://nikspatel.wordpress.com/
• Twitter - @nikxpatel
• LinkedIn - linkedin.com/in/nikspatel
• Slideshare - slideshare.net/patenik2
3
4. Session Agenda
Why New Code Deployment Model – SharePoint 2013 Apps?
Revisit Farm Solutions and Sandbox Solutions Models
Introducing SharePoint Apps as Code Deployment Model
Quick walkthrough of SharePoint Hosted Apps
In-depth Comparison of Solutions vs. Apps
Prescriptive Guidance of when to use SharePoint Solutions vs. Apps
Questions and Answers
4
5. SharePoint 2013 Apps – Rumors, Humors, Opinions, and Level Set
It’s too early to say how organization will adopt Apps Model
Apps are Crapps
Apps are not magic button
Both solutions and Apps are valid options
Apps supports No Server side code, Lots of Client side scripting
Don’t be confused with Server Side Code with SharePoint Server Side APIs
This is true for SharePoint Hosted Apps but you can have server side code in Cloud hosted Apps
Sandbox Solutions are deprecated
Microsoft’s meaning for deprecated is – Not preferred
Apps are preferred option over Sandbox Solutions
Don’t listen to early opinions, Try it by yourself to decide..
5
6. What are SharePoint 2013 Apps?
Independent, Self-contained, Scenario-based Applications
It’s an application
whose interface is Yeah..It’s a widget
surfaced through or application I can
Hmmm.. It’s self- SharePoint but code
contained piece of acquire to perform
runs somewhere
functionality that extend my work or run
elsewhere away
the capabilities of a from Servers or business regardless
SharePoint website!!! Browser!!! of what technology
it is!!!
Solution Architect Developer Business User
6
7. Where can I Find Apps in SharePoint 2013?
Independent, Self-contained, Scenario-based Applications
Everything in SharePoint 2013 are Apps including SharePoint Lists & Libraries (Kind of!!)
7
9. Why SharePoint 2013 Apps?
It’s a fundamental shift from the traditional SharePoint customization and deployment model
All about End-Users – Consumerization through Apps Catalogs
Allows end-users to extend their sites without going through IT Channels
All about IT Pro - Stabilize the SharePoint Environment
Keep custom code away from Servers, Improved Outage & Upgrade stories
Orgs with At least 1 version upgrade with highly customized environment would appreciate Apps
All about Developers - Pieces to Packages
Apps trying to focus back on fully packaged and ready to use assembled custom solutions
All about Cross-Platform - Use Existing Skills to extend SharePoint
Rather than reinventing wheels in SharePoint, use existing technologies & skills to build new apps e.g. Bing Apps
Apps are here to stay.. Embrace It with Caution..
9
11. Revisit SharePoint Farm Level Solutions
SharePoint’s First Generation Code Execution Model
What are they?
Supports Full Trust Code Model
Supports Full Server Side Object Model and Client Side Object Model APIs
Requires Solutions Run on the Server
Major limitations
Supported in On-Premises only, Not supported in SharePoint Online
No Marketplace
Requires big server touch, customizations deployed on servers
Root cause of most of SharePoint outages – Performance and Stability Concerns
Huge concerns for SharePoint Upgrade strategy
11
12. Revisit SharePoint Sandbox Solutions
SharePoint’s Second Generation Code Execution Model
Microsoft’s first attempt to get away from Farm Level Solutions
What are they?
Available in both SharePoint Online & On-Premises
Requires Partial Trust Code Model
Major Benefits over Farm Solutions
Code runs on sandbox, Doesn’t require Access to Server
Can’t harm the SharePoint server, ideal for hosted environments
Major limitations
Just like Farm Solutions, No Marketplace
Severe restrictions and limited SharePoint APIs – No Database, No File System, No Web Services
Scoped only at the Site Collection Level, No Cross-Site Collection Access
Runs only under current user context, Can’t run code with administrative elevated privileges
Runs under complex resource monitoring system - Outage of Application if Resource Quota is exceeded
12
13. Introducing SharePoint App Model – What are they?
SharePoint’s Third Generation Code Execution Model
Microsoft’s second attempt to get away from Farm Level Solutions
Major Benefits over Solutions Model
Based on a proven and familiar app model used in Mobile technologies
SharePoint business logic no longer live in SharePoint
Apps custom code executes in the client, cloud or on-premises
Apps can live in Public Marketplace or Private Corporate Marketplace
Apps have efficient end-user lifecycle – Install, Use, Manage, Upgrade, Remove
Apps will have better SharePoint Upgrade story – decoupled from SharePoint
13
14. Apps Primer - Major Discussion Points
Apps Building Blocks - Basics
App Models – What kind of Apps can be developed?
App User Experience
App Shapes – How does App integrated or consumed with SharePoint?
App Scopes – Where does App runs? Can App access data from other sites?
App Branding – How does App looks like when integrated with SharePoint – UX, Navigation, Seamless Experience?
App Interaction with SharePoint
App Integration – How does App access with SharePoint Data?
App Rights – How does App granted rights to consume SharePoint data?
14
15. App Primer – App Hosting Models
Three different approaches
SharePoint Hosted Apps
Apps hosted in SharePoint as isolated App web,
SharePoint acts as file store to host Apps components
like HTML, CSS, or JavaScript
No Server side code, business logic runs on JavaScript
Provider Hosted Apps
Apps hosted outside of SharePoint in IIS, Windows
Azure, or other dedicated self-hosted Infrastructure
Apps can be built using ASP.NET or any other
technologies like Java or PHP
Azure Auto Hosted Apps
Supported only in Office 365 at this moment, Azure
subscription tied to Office 365
Auto provisions Azure web site and SQL Azure during
Apps installation process
Note - Diagram from MSDN
15
16. App Primer – App Experience via Shapes
Three different ways to interact with Apps
Immersive App Part App Custom Action App
• Takes entire browser & UI screen • Behave in SharePoint just like • Action menu on Ribbon or ECB
Web Parts e.g. Stocks App, to trigger App interaction
• Stand-alone business solution e.g. Weather App, Maps App
Office Web Apps, SharePoint Search • Same as SharePoint 2010
Site, My Site etc. • Surfaced in SharePoint as Iframe
16
17. App Primer – App Experience (Continued ..)
Seamless UI integration is key for successful App implementation
App Scopes App Branding and UI Integration
Apps are isolated and can’t App Templates
communicate directly with each other
Default option when creating apps in VS
Web Scope
App page pulls CSS from hosting SharePoint
Apps resources live in App Web, can be
deployed at Site or Site Collection level Chrome Control
Can use or register resources at Site or Site Ideal for Cloud hosted Apps
Collection Level
JavaScript based control that allows custom apps
Tenant Scope to consume the CSS and styling of the parent App
Web
Only supported in cloud-hosted
Custom Branding
Supports multi-tenancy and interaction with
multiple site collections Full control over unique branding, Like SharePoint
Search and My Site
17
18. App Primer – App Interaction with SharePoint
Secure interaction with SharePoint
App Interaction
Apps can communicate with SharePoint
using CSOM and REST based APIs
REST/CSOM supports now Taxonomy,
Search, Publishing, User Profile, and many
more APIs
App Rights
Apps can authenticate into SharePoint using
OAuth or STS
SharePoint 2013 has new authentication
model to authenticate SharePoint apps
App Permission request
read/write/manage/full control maps to
SharePoint permission levels
read/contribute/design/full control
18
20. Apps vs. Solutions – Decision Time
Multi-faceted in-depth comparison
Comparing Apps with Solutions from 6 different perspective
Architectural level
Custom Development Level
Deployment, Packaging, and Maintenance Level
Infrastructure Level
Business Strategy and Direction
Usability Perspective
No clear winner.. It depends!!!!..
Apps Model is Not Magic Pill
20
21. Apps vs. Solutions – Architecture Decisions
Farm Level SharePoint Provider
Sandbox Solutions Azure Hosted Apps
Solution Hosted Apps Hosted Apps
On-Premises Only,
SharePoint
Supported No SharePoint SharePoint Online and SharePoint Online
Online and On- SharePoint Online Only
Environment Online (Supported On-Premises and On-Premises
Premises
in Dedicated SPO)
Code Execution
Full Trust Partial Trust Isolated Domain Isolated Domain Isolated Domain
Model
Browser or Non-
Business Logic Runs Browser or Browser or SharePoint Only Browser SharePoint Browser or Non-SharePoint
Under what Context? SharePoint Context Context Context Hosted Platform Hosted Platform Context
Context
Architectural
Not Much (Only Yes, Very Much
Complexity - Not Much (Only Yes, Little Bit Yes, Very Much (Requires
Service Application (Configure both
Requires Additional Service Application (Configure App Windows Azure Skills as
needs to be IIS and App
Configuration to run needs to be activated) Domain) well)
activated) Domain)
code?
21
22. Apps vs. Solutions – Architecture Decisions (Continued …)
Farm Level SharePoint Provider Hosted
Sandbox Solutions Azure Hosted Apps
Solution Hosted Apps Apps
App Web (only
Site Collection (Can't web or site App Web (only web or site
cross site collection, App Web (only web collection) or collection) or Tenant (can
Code Scope Farm
limited APIs within Site or site collection) Tenant (can cross- cross-site collection in
Collection as well) site collection in same tenant)
same tenant)
No Authentication
Authentication & No Authentication No Authentication OAuth or STS
Required, Can run OAuth authentication is
Interaction with Required, can run only Required, can run Authentication
on User or Admin required
SharePoint APIs in User Context in App Context required
context
Malicious Attack or May be (May be May be (May be
May be (May be too early
harm of SharePoint Yes (runs in same No (runs in isolated too early to say too early to say
to say how OAuth will
environment due to process) safe process) how OAuth will how OAuth will
work)
bad code work) work)
22
23. Apps vs. Solutions – Architecture Decisions (Continued …)
Farm Level SharePoint Provider Hosted
Sandbox Solutions Azure Hosted Apps
Solution Hosted Apps Apps
Medium-Low Medium-Low
Medium-Low (Network &
Performance for High - Very efficient, Medium - Runs in (Network & cloud (Network & cloud
cloud latency, Requires
SharePoint Data runs in main dedicated isolated latency, Requires latency, Requires
CSOM or REST
Access application process Sandbox Process CSOM or REST CSOM or REST
connection points )
connection points ) connection points )
Supports deep
integration with Partially (with web Partially (with web
Partially (with web parts
SharePoint UI and Yes Yes parts and chrome parts and chrome
and chrome controls)
Look & Feel controls) controls)
Components
Supports deep
integration with
SharePoint Not Advisable
Not Advisable
Components & (CSOM and REST Not Advisable (CSOM and
Yes Yes (CSOM and REST
Content (Lists, APIs be limited) REST APIs be limited)
APIs be limited)
Content Types,
fields, page layouts,
pages etc.)
23
24. Apps vs. Solutions – Custom Development Support
Farm Level Sandbox SharePoint Hosted Provider Hosted
Azure Hosted Apps
Solution Solutions Apps Apps
Requires code running on
Yes Yes No No No
Server
SharePoint Farm level
Yes No No No No
Administrative API
Supported APIs - Server Partial - Subset
Full No No No
Side Object Model of Full Trust API
Supported APIs - Managed
Yes Yes No Yes Yes
Client Side Object Model
Supported APIs -
JavaScript Client Side Yes Yes Yes Yes Yes
Object Model & REST APIs
Server Side Code - C# Yes Yes No Yes Yes
24
25. Apps vs. Solutions – Custom Development Support (Continued…)
Farm Level Sandbox SharePoint Hosted Provider Hosted
Azure Hosted Apps
Solution Solutions Apps Apps
Security - Run code with Yes (New App Yes (New App
Yes No Yes (New App Rights)
administrative privileges Rights) Rights)
Apart from .NET, any Non-
Limited (Azure supports
Microsoft Server Side
No No N/A Yes only .NET Framework,
technologies Supported (e.g.
Java, PHP & Node.js)
Java, PHP, LAMP etc.)
Allows you to take benefits on
latest/future Sever Side
No No No Yes Yes
technologies - newer version of
ASP.NET MVC or .NET
Allows you to take benefits on
latest/future Client Side
Yes Yes Yes Yes Yes
technologies - newer version of
ASP.NET MVC or .NET
25
26. Apps vs. Solutions – Custom Development Support (Continued…)
Farm Level SharePoint Provider Hosted
Sandbox Solutions Azure Hosted Apps
Solution Hosted Apps Apps
Requires Local Farm or
Development Environment Yes Yes No No No
for Developers
Remote deployment and
debugging from Visual No No Yes Yes Yes
Studio
Developer Productivity, Medium (New
Medium (New Medium (New Technology)
less complex moving High High Technology)
Technology)
parts
Custom Timer Jobs or
Yes No No No No
Farm Integration
26
27. Apps vs. Solutions – Deployment, Packaging, and Maintenance
SharePoint Provider Hosted
Farm Level Solution Sandbox Solutions Azure Hosted Apps
Hosted Apps Apps
Requires Server Access
Yes No No No No
for customizations
Requires outage of
Yes, requires IIS Partially, During Partially, During Partially, During
Application during Partially, During Upgrade
Reset Upgrade Upgrade Upgrade
deployment
Upgrade Concerns Yes No No No No
OK (Better than farm level
Maintenance Story - Good (Requires
but requires discipline for Great Great Great
Install/Upgrade/Uninstall disciplined approach)
large # of Site Collections)
Yes (code runs under Yes (site collection locks No (Only
Terminates the Process No (Only No (Only
same IIS worker down if resource quota functionality
in case of failure functionality outage) functionality outage)
process) exceeded) outage)
High (farm solutions Medium (can't affect Low (Hosted on Low (Hosted on Non-
Low (No Server
IT Pros Concerns may cause damage server resources, depends Non-SharePoint SharePoint
Side code)
and server touch) on resource quota) environment) environment
27
28. Apps vs. Solutions – Infrastructure
Farm Level Sandbox SharePoint Hosted
Provider Hosted Apps Azure Hosted Apps
Solution Solutions Apps
Additional Hardware, No (hosted in Yes (App Domain on Yes (Windows Azure
No No
Software, and Licensing SharePoint) dedicated server) Subscription)
Yes (But stored in the
Additional Capacity Yes (Additional data Yes (Additional data
No No same site collection
Planning storage) storage)
content database)
SP Backup &
Business Continuity - Requires Additional Requires Additional
File System for SP Backup Only SP Backup Only
DR, Backup-Restore Consideration Consideration
Customizations
Load-balancing & SharePoint SharePoint Requires Additional Requires Additional
SP Backup Only
Redundancy Farm Farm Consideration Consideration
Yes (only for OAuth for
Additional Subscription Yes (tied with Office
No No No ACS integration, not for
Fees 365 subscription)
STS or High-Trusted)
Apart from IIS, any Non-
No (hosted in Yes, only Windows
Microsoft Server Side No No Yes (Any stack)
SharePoint) Azure
technologies Supported
28
29. Apps vs. Solutions – Business Direction
Farm Level SharePoint Provider Hosted
Sandbox Solutions Azure Hosted Apps
Solution Hosted Apps Apps
Distribution via
No No Yes Yes Yes
Marketplace
Supports Business
Strategy - No Custom No No Yes Yes Yes
Code on SharePoint
Supports Business
Strategy - Less
Hardware, Software, Yes Yes Yes No No
Licensing Budget &
Architecture Complexity
Decoupling business
solutions from No No Yes Yes Yes
SharePoint
29
30. Apps vs. Solutions – Usability Perspective
Farm Level SharePoint Provider Hosted
Sandbox Solutions Azure Hosted Apps
Solution Hosted Apps Apps
End-Users End-Users End-Users
Who Installs and
Farm Admin Site Collection Admin (IT still required for (IT still required for (IT still required for
Uninstalls
Administration) Administration) Administration)
Yes (requires
Search Farm/App No (Search can’t Yes (requires additional
Yes Yes additional
Solutions Data crawl App Web) consideration)
consideration)
Collaborative Solutions
(Side by Side existence
Yes Yes No No No
of Applications and
Data)
Seamless Experience
while browsing Apps Yes Yes No No No
and SharePoint
30
31. Prescriptive Guidance of when to use SharePoint Solutions vs. Apps
Golden rules when to use which APIs
Use Apps whenever you can – Requires philosophical change architecting SharePoint Applications
Keep in mind - Apps are limited to what CSOM and REST API Supports
Use Apps for decoupling independent business applications (e.g. scenario based applications)
Use SharePoint Hosted Apps for small, reusable standalone applications (e.g. stocks, maps, RSS feeds, social integrators etc.)
Use Provider Hosted Apps for large corporate business applications (e.g. Time sheet system, budget tracking application)
Use Azure Auto Hosted Apps for wide-reach, public market place, scalable solutions
Avoid Apps & Use Farm Level or Sandbox solutions for tight UI and features integration
Use Farm or Sandbox Solutions for SharePoint Deep Integrated Applications (e.g. Collaborative Applications)
Use Apps or Sandbox Solutions to take away code from server & minimize risk to the farm for
better upgrade stories in future
Use Farm Level solutions for administrative interfaces to extend SharePoint functionalities
31
32. Additional Apps Resources
Microsoft
Developer Ignite Training Videos - http://msdn.microsoft.com/en-US/office/apps/fp123626
Build Apps for Office and SharePoint - http://msdn.microsoft.com/en-us/office/apps/fp160950.aspx
3 Parts Series of Inside apps for Office and SharePoint - http://channel9.msdn.com/Series/Inside-apps-for-Office-and-
SharePoint
Community
Andrew Connell's Understanding SharePoint 2013 Apps -
http://www.andrewconnell.com/blog/archive/2012/07/16/understanding-sharepoint-2013-apps-aka-apps-101.aspx
Ted Pattison's Apps Series - http://blog.tedpattison.net/Lists/Posts/Post.aspx?ID=14
Chris O' Brien's Series - SharePoint apps: working with the app web, and why you should -
http://www.sharepointnutsandbolts.com/2012/09/sharepoint-apps-working-with-app-web.html
Analben Mehta’s 30 Articles series for Apps development for SharePoint -
http://aanuwizard.wordpress.com/2012/09/16/30-articles-series-for-apps-development-for-sharepoint/
32
33. • Thanks for attending the session!!
• Follow SharePoint Fest Chicago
• Twitter - @SharePointFest - https://twitter.com/sharepointfest
• Website - http://www.sharepointfest.com/Chicago/
33