Sharepoint Apps vs sandbox vs farm solutions
Need For Cloud Apps Model in SharePoint:
In SP2010, Sandbox Solutions were introduced to remove issues related with Full Trust Farm Solutions which were:
1. All code in full trust app runs in SP’s own server process so any corruption has the potential to crash the entire farm.
2. Any slow/inefficient code has the potential to increase CPU cycles,memory usage leading to affect servers performance.
3. If appropriate care not taken about security measures it can compromise information stored in farm because full trust solution can elevate privileges whenever its needed for any action.
Sandbox solutions:
1. Sandbox apps do not run with full trust and can't elevate their privileges.
2. They run in separate isolated processes to prevent them from corrupting servers farms own process.
3. They are allowed to access subset of SharePoint server object model through proxy object that forwards the request to main SharePoint process.
4. Sandbox apps are deployed and managed at the site collection level and can access resources within a local site collection. They can't access resources within farm not even by using Client object model.
Instead of improving these things Sandbox solution turns out to be problem due to limitation of its own which were:
1. The code in Sandbox solutions still runs in Sharepoint farms thus poorly written ones can still affect performance.
2. Sandbox solutions that corrupt their own memory or use too many resources may be restarted automatically further reducing server resources.
3. Since they can access limited resources they are not much useful for enterprise applications.
4. Since they are maintained at site collection level they are managed by Site Collection Administrators. So they have install,activate,configure and remove these packages for each site collection they own. Thus, if they are non technical users it creates challenges.
Apps Development in SharePoint 2013:
1. No end users involvement as in Sandbox solution or site collection administrators.
2.App can be acquired from SharePoint app store similar to Google Play store.
3. App may add lists ,sites, web parts to site while it is installed.
Differences between Full Trust solution and app:
1. App doesn’t contain server side code at all.
2. All data access, business logic, UI logic is executed outside SP server farm.
3. Sharepoint may host HTML, CSS, JS files but logic executes entirely within browser or user agent or removes web server outside of farm.
4. Thus making it more scalable and stable as end user is completely out of question during the entire process.
5. Thus SP act as portal for storing data and exposing apps rather than directly hosting their logic.
- Cloud App Solutions:
It is different from traditional SP development which includes a server (SharePoint) or two servers (client and server). This will be having one client side user agent which can be browser/mobile device and one or more servers out of which one will always be SharePoint server.
Design patterns for SharePoint App:
-
- Client side code.
- Server side code getting executed outside SharePoint.
App Development Decisions:
Choose API amongst following:
1. SharePoint hosted: no server side code permitted all logic in client layer itself.
2. Auto Hosted: It has both server side (i.e. SharePoint app web list,library) and client side (remote app web ie. ASP.NET pages with server side code) technologies.
The deployment of remote web is automated by SharePoint using Azure cloud. Each instance will have its own app and remote webs.
3. Provider Hosted: same as above but remote web is centrally hoisted by vendor which is hard coded into app when it is distributed and shared by all users.
We can create Apps either by using Visual Studio or by Using Napa (a tool provided by Microsoft for app development). We have to make achoice which one to choose depending on our requirement as except auto hosted and provider hosted apps all other apps can be developed in Napa.
Choose target SharePoint environment:
On-Premise Farm: Physical computer systems/virtual systems running under Hyper-V. It provides more flexibility for organization as support cost is of organization itself.
Online Farm: set of virtual servers in IaaS (infrastructure as service) cloud like MS Windows Azure. It has limited environment to deploy and debug. It can be shared (each organization act as Tenant) or dedicated (organization rents a entire farm for its own use which is managed by cloud).