This document discusses the new application development model for SharePoint 2013 called "Apps for SharePoint". It describes the different types of apps - SharePoint hosted, autohosted, and provider hosted. Provider hosted apps allow developers to build a custom web application that integrates with SharePoint using APIs and app parts. The new model aims to employ modern web development practices like MVC, web services, and single page applications while leveraging existing skills. It isolates custom code and allows more scalable, distributed applications than the previous farm solution model.
2. Application development models in
SharePoint 2010
● sandboxed solutions:
○ limited server side API access;
● farm solutions:
○ installed using "*.wsp" packages that have impact on
the whole SharePoint farm when installed or
updated
○ on a production system these solutions have to be
installed out of hours;
3. Application development models in
SharePoint 2013
● sandboxed solutions: deprecated;
● farm solutions: only use for applications targeted at
SharePoint administrators;
● new "apps for SharePoint" model:
○ THE recommended model for end user applications;
○ derived from SharePoint Online and Office 365
requirements;
○ isolates all custom server-side code from the
SharePoint instance
4. "Apps for SharePoint" types
● There are 3 new types of SharePoint
solutions:
○ SharePoint hosted, autohosted and provider hosted;
○ they all create a new ".app" file that has to be
deployed to SharePoint using a very complex
process;
● SharePoint hosted app: a SharePoint app project
containing SharePoint assets(lists, workflows, etc.) +
web pages that can only use client side code;
5. "Apps for SharePoint" types(cont.)
● Autohosted and Provider hosted apps:
○ both have a SharePoint app project and an ASP.
NET web project: a SharePoint app and a web
application;
○ the Autohosted solution packages all assets
(including the website and the database scripts) in
the ".app" file;
○ the Provider hosted solution packages only the
SharePoint app project into the ".app" file. The web
application deployment is done independently.
6. Provided hosted apps - integration
● the web application communicates with SharePoint
using:
○ a shared security certificate;
○ a helper library "AppForSharePointWebToolkit"
(available as a NuGet package);
○ the SharePoint Client Object Model(CSOM);
○ the SharePoint app manifest needs to list the
SharePoint permissions that your app needs;
7. Provided hosted apps - integration
(cont.)
● the web application can expose "app parts"
to SharePoint: <iframe> elements that render
content from the web application;
● the SharePoint app can:
○ package SharePoint assets(lists, content types,
workflows, etc.);
○ extend SharePoint menus;
8. What this all means
● employ modern web development practices:
develop clean, testable applications;
● leverage existing web development skills: you
don't need advanced SharePoint knowledge to
accomplish even the most basic tasks;
● scalable, distributed web applications: you can
allocate more resources to an app for SharePoint if and
when needed;
● support for other application frameworks?
9. Scenarios enabled by Apps For
SharePoint
● use SharePoint as a data store together with
a custom web application;
● use a third party data store together with a
custom web application;
● mix and match SharePoint and external data
stores;
● provide "app parts" to SharePoint;
10. Current SharePoint application
architecture
● the entry point for all applications is a
SharePoint page;
● the SharePoint app delivers all SharePoint
specific assets;
● the web application will render all UI
components;
● the web application will interact with
Sharepoint using the current user identity or
using a custom identity within a scheduled
job;
11. Development update
● Bootstrap is everywhere:
○ Bootstrap master pages now deployed on the
SharePoint server;
○ Bootstrap is used to style the app for SharePoint;
○ The result is consistent styles applied throughout;
● ASP.NET MVC:
○ provides Windows authentication and session
identity;
○ builds the single page application skeleton;
○ minifies and concatenates all assets;
12. Development update (cont.)
● ServiceStack: used to build RESTful , testable web
services (90% server side code coverage with
AutoFixture);
● AngularJS:
○ MV* framework for single page applications;
○ reusable web components(a.k.a the future of web);
○ testable code via dependency injection;
● Kendo UI Web: powerful grid and other widgets plus
IE8 support (now compatible with AngularJS);
● Entity Framework 5: using the code first model with
database migrations.
13. Notes
● Reimagine SharePoint Development: http:
//msdn.microsoft.com/en-
US/office/apps/dn133840
● Deciding between apps for SharePoint and
SharePoint solutions: http://msdn.microsoft.
com/library/sharepoint/dn268593(v=office.
15)