SharePoint 2013 introduces a new model for building applications against SharePoint and Office 365: the Cloud App Model.
The new app model allows developers to extend the capabilities of a SharePoint website by building apps like a self-contained pieces of functionality. This allows to build apps with few or no dependencies with the SharePoint platform moving custom logic “up” to the cloud or “down” to client computers.
This new model to build apps for SharePoint brings a lot of benefits for developers and IT Pros: it allows to decouple business logic from presentation logic; it allows to build three-tier applications using patterns, technologies, skills and standards that developers love; and it allows to deploy apps by removing outages and impacts on the SharePoint environments, in other words it allows to exit from the hell of how to upgrade a SharePoint solution and allows to fit better the application lifecycle practices.
To meet this goals, the new Cloud App Model introduces three types of hosting options for the apps:
- Autohosted – allows to takes the components that the developer built for the app and deploys them at installation time to a special Windows Azure website and/or database that is designated for the SharePoint instance.
- Provider-hosted – allows to build apps that are hosted remotely from SharePoint, on Windows Azure, on Internet Information Services (IIS) or a PHP server running on Linux and can contain server-side logic.
To choose the hosting option and development pattern to use, the approach should be to start with requirements, technologies and goals of the solution and find which hosting option better fits. Remember that the model allows also to mix hosting options.
What is an app
An app for SharePoint is a web application that is registered with SharePoint using an app manifest. An app for SharePoint provides different user experience options to fit seamlessly into the SharePoint website where it is installed:
- Full page app: provides a fully immersive experience by using the entire page;
- App part: an iframe element inside your page that contains content from your app;
- Extension app: ribbon or context menu extensions to make your app available on list items, documents or wherever a ribbon is shown.
Anatomy of an app
Apps for SharePoint are distributed as packages with “.app” extension that contain the following items, depending on where the app is hosted:
- App manifest: An app manifest is a required XML file named appmanifest.xml that defines important properties of the app, such as its title and the permissions it needs to run (for more information, see App for SharePoint manifest file).
SharePoint Solution Packages: When an app includes SharePoint components like pages, list instances, views, documents, Web-scoped Features (for more information about components can be included in SharePoint apps, see Types of SharePoint components that can be in an app for SharePoint), the app includes a SharePoint solution package (.wsp file). SharePonit components included in the app are not deployed on same website where the app is installed, the host web, but are deployed to a different web site in an isolated domain called app web (for more information about app web and host web, see Host webs, app webs, and the isolated domain).
Host web Features with Custom Actions or app parts: an app for SharePoint can include components, like custom actions and app part, deployed to host web instead of the app web. This is accomplished by including in the app package a Feature that is not inside the package’s .wsp file. The feature called host web Feature consists of a standard SharePoint 2013 feature.xml file and one or more associated elements.xml files.
Localization resource files (.resx): this files allows to localize aspects of the app manifest (like the app title) or the host web Features. Instead aspects included in the .wsp file or an external web site need to be localized in the same manner as if this items were not part of an app for SharePoint.
- Data Tier Application Packages (DACPACs): an optional package used in an autohosted app to install a SQL Azure database.
- Web Deploy Packages: an optional package used in an autohosted app to install a Windows Azure Web Site.
- Apps for Office Manifests: an optional manifest to package an app for Office.
When you develop an app for SharePoint do you have available a lot of development technologies. The choose of which technology to use is related also to the kind of hosting option you select:
The app catalog
Tha App Catalog is a site where an organization can deploy and make available the interanlly developed custom apps. Site owners can then add these apps to their own websites. The App Catalog site also allows to install third-party apps.
In addition Microsoft hosts and regulates the Office Store, where developers around the world can publish and sell their custom apps for SharePoint.
The cloud app model for Office and SharePoint offers a new way to customize and extend SharePoint functionality. This new way provides a lot of new advantages and new opportunity for developers to build apps to sell and make available in the Office Store, so start to reimagine the SharePoint development thinking in the app way!