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.
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.
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.
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.
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.