SharePoint offers multiple APIs for extending the capabilities of the platform. Each of these APIs has different use cases and limitations. Choosing the appropriate API for a given use case can sometimes be challenging and, in many cases, a custom SharePoint solution or application will require the use of more than one. There is a good paper on choosing the appropriate API(s) for a specific SharePoint customization on MSDN at http://msdn.microsoft.com/en-us/library/jj164060.aspx, but the following few paragraphs give a summary of the APIs, their common use cases, and limitations.
The SharePoint Server Object Model (SOM), which predominantly resides in the Microsoft.SharePoint
namespace and identically named assembly, provides the broadest and deepest programmatic access to SharePoint. It can be used to create custom ASP.NET pages and user controls, web services, Web Parts, complex workflows, central admin extensions, and extensions that have pretty...