There does not seem to be any clear explanation of the different hosting types and technology abbreviations, so I decided to make a community post about the different types.
Perhaps there will never be any good distinctions, but we here at SharePoint Stack Exchange can at least coin our own definitions and perhaps live by these. I believe this could make everything much easier. I hope others will edit this post so it becomes even more correct, as there are probably a lot of errors and subjective ignorance.
-
4Great initiative Eirik!– Robert LindgrenMar 18, 2014 at 8:18
-
Any thoughts on whether it would be appropriate to incorporate remote applications (e.g. desktop/winforms) which sync or present data in SharePoint? They can't reliably use SSOM if they are indeed remote, but they could definitely use CSOM if they're in .Net or can implement the assemblies (Powershell, perhaps) -- these possibilities don't seem to be well represented here, possibly because they're not incredibly popular(?)– Code JockeyAug 27, 2015 at 15:06
1 Answer
#2013
Model Types:
- CSOM: Client-side object model. C# (or Visual Basic) only, use NuGet, at the moment same package for both 2010 and 2013.
- JSOM: JavaScript object model. JavaScript only.
SP.ClientContext.get_current()
for normal use.new SP.ClientContext('url...')
for specificSPSite
. Note this works cross-SPSite in 2013.
- SSOM: Server-side object model. C# (or Visual Basic) only, use
Microsoft.SharePoint
(15) DLL. Must be deployed on same farm. - REST: REST web technologies and standard Open Data Protocol (OData) syntax.
- Either JS (JavaScript) or C# (or Visual Basic) helper package in NuGet.
Hosting:
- SharePoint hosted: JavaScript and templates only. By templates I mean list templates, content types, etc. Anything that can be uploaded to the SharePoint virtual file system can also be added, such as .aspx-pages.
- Autohosted: C# (or Visual Basic) only. Currently only supported on Office 365. On app purchase an Azure instance will be automatically provisioned. Uses OAuth to comunicate to SharePoint site.
- Provider hosted: C# (or Visual Basic). Similar to Autohosted, but is meant to be hosted more manually (i.e. On Azure). So you fire up a web application, on any server, and then use S2S to connect to SharePoint.
- Sandboxed: Remnant from 2010, can be uploaded to Solution gallery. Support for limited subset of the SSOM. No file access, so can not deploy anything to _layouts folder. If you use the limited SSOM-part (C#) your solution will be considered deprecated. Support for templates such as list templates and content types, deployed directly to host web.
- Farm solution: Full access, deploy through PowerShell.
Technologies table:
+--------------------------------------------------------+
¦ ¦ CSOM ¦ JSOM ¦ SSOM ¦ REST JS ¦ REST C# ¦
¦---------------+------+------+------+---------+---------¦
¦ JavaScript ¦ ¦ x ¦ ¦ x ¦ ¦
¦ C# ¦ x ¦ ¦ x ¦ ¦ x ¦
¦ From browser ¦ ¦ x ¦ ¦ x ¦ ¦
¦ From server ¦ x ¦ ¦ x ¦ ¦ x ¦
¦ OAuth2 ¦ x ¦ x ¦ x ¦ x ¦ x ¦
¦ S2S ¦ x ¦ ¦ x ¦ ¦ ¦
+--------------------------------------------------------+
Hosting table:
+---------------------------------------------------------------------+
¦ ¦ CSOM ¦ JSOM ¦ SSOM ¦ REST JS ¦ REST C# ¦
¦---------------------+------+------+-------------+---------+---------¦
¦ SharePoint hosted ¦ ¦ x ¦ ¦ ¦ ¦
¦ Autohosted ¦ x ¦ ¦ ¦ ¦ x ¦
¦ Provider hosted ¦ x ¦ ¦ ¦ ¦ ¦
¦ Sandboxed solution ¦ x ¦ x ¦ x(limited) ¦ x ¦ x ¦
¦ Farm solution ¦ x ¦ x ¦ x ¦ x ¦ x ¦
+---------------------------------------------------------------------+
#2010
Model Types:
CSOM: Client-side object model. C# (or Visual Basic) NuGet
JSOM: JavaScript object model. JavaScript only.
SP.ClientContext.get_current()
for normal use.new SP.ClientContext('url...')
for specificSPWeb
. Note that you are only able to access content within the current site collection in SharePoint 2010.
SSOM: Server-side object model. C# (or Visual Basic) only, use
Microsoft.SharePoint
(14) DLL. Must be deployed on same farm.REST: REST in 2010 is only for
ListData.svc
. Note that SPServices (jQuery plugin) utilizes the .asmx services in _/vti/bin , such as _/vti_bin/Webs.asmx
Technologies table:
+--------------------------------------------+
¦ ¦ CSOM ¦ JSOM ¦ SSOM ¦ REST ¦
¦---------------+------+------+------+-------¦
¦ JavaScript ¦ x ¦ x ¦ ¦ x ¦
¦ C# ¦ x ¦ ¦ x ¦ x ¦
¦ From browser ¦ ¦ x ¦ x ¦ x ¦
¦ From server ¦ x ¦ ¦ x ¦ ¦
+--------------------------------------------+
Hosting table:
+---------------------------------------------------------------------+
¦ ¦ CSOM ¦ JSOM ¦ SSOM ¦ REST JS ¦ REST C# ¦
¦---------------------+------+------+-------------+---------+---------¦
¦ Sandboxed solution ¦ x ¦ x ¦ x(limited) ¦ x ¦ x ¦
¦ Farm solution ¦ x ¦ x ¦ x ¦ x ¦ x ¦
+---------------------------------------------------------------------+
-
-
Hi @Nikhil, what do you mean? Perhaps we could start a chat, I imagine a lot of questions/suggestions/changes might need some discussion.– eirikbMar 29, 2014 at 21:04
-
-
2Something like this: chat.stackexchange.com/rooms/13812/csom-vs-jsom-vs-ssom-vs-rest– eirikbMar 31, 2014 at 6:05
-
1I know I am a bit late to the party, but could you clarify what you mean by "Hosting"? I'm not sure I understand what is going on there ;). Feb 22, 2017 at 7:26