SharePoint 2013 Hosting :: Apps in SharePoint 2013


SharePoint App is a new way of develop and deliver custom functionality. Like any other apps on phone or tablets you can add, update and remove apps using public or private app stores. Each app is an isolated application. It has no dependency on any other app. When you add a new app to SharePoint it will be stored in a new sub site. This actually to keep it isolated from other apps. App model doesn’t allow server side code in app. Also it is convenient to install, just discover from an app store and add it. You don’t need any on prem deployment or help from site collection admins. This also implies that it is a suitable option for cloud. Yes finally something that can work for cloud. So if you choose an app development methodology, you don’t need to worry what will happen if your company decided to move on to cloud.

Apps vs Other Solutions

It is interesting to know how the apps are different from other solution options. Farm and Sandboxed are the other solution option to develop custom functionality for SharePoint sites.  One thing to consider here is that Farm and Sandboxed solutions are not deprecated. They are still there and you can use these options in SP 2013 as well.

Both Farm and Sandboxed solutions required server side code. Farm solution can only deployed in on prem deployment option. This is not suitable for cloud at all. Yes you can use Sandboxed solutions for cloud but it has a lot of limitations which put users off from it. For example you cannot call external web services from Sandboxed solutions or you can only access the limited set of SharePoint API etc.

Compare to the Farm and Sandboxed options Apps are suitable for cloud. It doesn’t use server side code so no confusion about limited access to API. It works on top of the SharePoint framework. Only use client side code developed in JavaScript, JQuery or other client side web standards. Because it doesn’t interfere with the object model it is not harmful for the server. It also keeps the environment light. No on prem deployments required, site owner can easily find the app in App store and can add in their sites. One very interesting thing is that apps makes migration very convenient. Think when you have to perform a migration which sites are difficult to migrate, simply when you have heavy customisations. As the apps are not parts of the customisations in that way. So you can easily perform migration of your apps and sites between servers.

What we can do in Apps

It is important to understand what user can achieve from apps and what cannot be achieved. As per my knowledge so far user can deliver below items using apps.

Custom Web parts (using custom remote pages containing the web parts. Another option is to expose a remote page in an app part, this page may look like a web part)

  • User can have remote event receivers
  • User can deploy new fields based on existing field types
  • User can consume custom web services
  • App can have custom pages which can work as application pages for all the sites use the app
  • App can provisioned lists, content types, and other SharePoint artefacts within app web site

What we can’t do in Apps

There are few things we can’t do in apps. For these user needs to use Farm or Sandboxed solution.

  • Custom site definitions
  • Delegate controls
  • Custom themes
  • Custom action groups and custom hidings
  • User controls (.ascx files)
  • Timer jobs

Apps Deep Dive

So if we look at the apps architecture in detail, we find few important things to consider. Each app requires a separate web site. Also app is web scoped only. But you can design it in a way to make it available for a bigger set of audience. This depends on your architecture. Each app has a unique URL. You can apply a template to change the URL. Benefit of using a unique URL is that it provides isolated domain name for each web app. It adds extra layer of isolation and security to the other apps and user data in SharePoint sites. It prevents the unauthorised access to user data and cross site queries.

An app can have three possible experiences. Or simply you can have three ways to present the app to the users. App can have all the possible three options or just the one. First option is called Immerse Experience; this is when app takes the whole page. This could be the default app page or may be just the about page. Second option is App Part; this is when you present app in an existing page. It could be like a web part display. Third option is Custom Action App; this is when you app work as a custom action in ribbon control.

Apps Stores

We read earlier that apps can be downloaded from the app stores. For the app stores there could be different options. User can download the apps from either Microsoft App Store hosted in Windows Azure, Third Party App Stores or the private Corporate App Stores. Big enterprises can hold their own corporate app stores, to allow users to add apps as per their need. Microsoft will also have its own app store hosted in cloud. User will be able to purchase and download apps from the Microsoft app store. When a user downloads an app from the Microsoft store it will automatically create the SharePoint web site for the app. It will also manage the URL and licensing of apps as well. Developers can develop and sell their apps through Microsoft app store. There is a possibility that in future third parties will also launch their app stores. This will add extra spice to the app market and help boosting the healthy competition.

Hosting Options

Once you start development of apps, you will have a thought that how to host the app. There are three hosting options available for SP 2013 apps.

SharePoint-Hosted: In this option everything will reside in SharePoint. It means when you install an app it will create a new site within SharePoint and it will keep all the app content (e.g. site columns, lists, content types, pages) within SharePoint.  Also in this scenario all the processing will happen in client browser using client side scripting (JavaScript, JQuery etc.). External-Hosted: It is also named as Developer or Self hosted scenario. In this scenario all or part of business logic resides in external to SharePoint. It could be in any technologies e.g. .Net, Java, PHP etc. In this approach SharePoint part of the app will could be just a launching pad for the external app. Auto-Hosted: it is also named as Azure or SharePoint Online hosted scenario. In this scenario user’s app will reside in cloud. When a user purchase and install the app to the SharePoint site. It will automatically create the site for SharePoint and will also manage the URL for the app site. Initially this will only be available through Azure and SharePoint online.

Plan for the Apps

So what is required to plan for the apps development? There are few considerations before starting the development of apps.

  • Subscription service and App Management Service Application must be running for apps usage
  • You need to create the DNS domain to create the unique URLs for apps. That’s all and you are good to start developing your new SharePoint 2013 app.