If you are a developer who has been assigned to develop a SharePoint 2013 app, you likely know that there is now an app model as well as actual solutions. So which is right for your company?
Is it Apples to Oranges?
Not completely, but there are some key differences between the two concepts. Your first consideration should be whether the solution needs to accommodate Office 365 or whether it is being used exclusively on premise. If you are using Office 365, there are different restrictions on what can and cannot be used, from a coding perspective, for both SharePoint solutions and applications.
For more on developing SharePoint Online solutions, Click Here
For Microsoft’s view on App vs Solution, see here.
The next major consideration is on how you want people to add the new product to SharePoint. Are you building something that might be used multiple times in different parts or the site? Or are you building something that should just be activated across all areas immediately? The new app model tends to lend itself to better control and management if you expect SharePoint Administrators to add apps to their SharePoint sites. While solutions can be built to do this as well, SharePoint apps are designed to provide this mechanism as part of the overall functionality.
What About Functionality?
Functionality wise, both can deliver amazing results within their respective boundaries. As mentioned, the larger consideration is knowing the environment where it will be delivered; in the cloud or on premises. The next step is to identify what we call “the top 3” which is the 3 hardest development components about what you are trying to build. If you already know what they are, search around to see whether it is feasible for a SharePoint solution or application to even do it given the environment.
Our Cheat Sheet
To recap, here is how we go about determining whether to use a SharePoint application versus a SharePoint solution:
1. Know your environment. You might be on premises today, but are there plans of moving to the cloud later this year?
2. Know your audience. Do users expect that they will be adding to what you built or do they simply “want it to work”?
3. Know your limitations. There are limitations when you take a matrix of #1 and #2 into account with the functionality of what you are developing.
Do some homework to see if any other surprises may come up before you start