<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Amit Gandhi's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/amigan/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/amigan/feed.xml</link>
    <description>This blog will display posts about SharePoint 2013</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:47:13 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Part 4 - SharePoint-Hosted App</title>
      <link>https://docs.microsoft.com/archive/blogs/amigan/part-4-sharepoint-hosted-app</link>
      <pubDate>Tue, 15 Jan 2013 23:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Amit Gandhi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amigan/2013/01/15/part-4-sharepoint-hosted-app/</guid>
      <description><![CDATA[This post is in continuation to my previous posts about SharePoint 2013 App Model. You can see the...]]></description>
      <content:encoded><![CDATA[<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;"><span style="font-family: Calibri;">This post is in continuation to my previous posts about SharePoint 2013 App Model. You can see the previous posts here:</span></span></p>
<ul>
<li><a href="https://blogs.msdn.com/b/amigan/archive/2012/12/10/part-1-why-apps-are-needed-for-sharepoint-2013.aspx"><span style="font-family: Calibri; font-size: small;">Part 1 - Why Apps are needed for SharePoint 2013</span></a></li>
<li><a href="https://blogs.msdn.com/b/amigan/archive/2012/12/10/part-2-introduction-to-sharepoint-2013-app-model.aspx"><span style="font-family: Calibri; font-size: small;">Part 2 - Introduction to SharePoint 2013 App Model</span></a></li>
<li><a title="Part 3 - Apps Hosting and Branding" href="https://blogs.msdn.com/b/amigan/archive/2012/12/12/apps-hosting-and-branding.aspx"><span style="font-family: Calibri; font-size: small;">Part 3 - Apps Hosting and Branding</span></a></li>
</ul>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-weight: bold;">SharePoint-Hosted App</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">A SharePoint hosted app is one where the business logic is implemented within the client (browser). These types of apps do not have any external dependencies nor do they use any server-side code but they can utilize some SharePoint artifacts such as lists and libraries for storing content. SharePoint will host the app in a special isolated subweb (SPWeb) that has all the same capabilities of a regular SPWeb. All logic &amp; code runs in the client. Apps could make external service calls from the client using some provided tools.</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-weight: bold;">Understanding the App URL</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">Consider an app installed in the SPWeb <a href="https://intranet.mydomain.com">https://intranet.mydomain.com</a>&nbsp;.The app URL will be (for example): <a href="https://app-bf473b5225nn0f.apps.mydomain.com/SharePointAppWebTitle">https://app-<span style="font-weight: bold;">bf473b5225nn0f</span>.apps.mydomain.com/<span style="font-weight: bold;">SharePointAppWebTitle</span></a></span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">AppUID and AppName are highlighted in bold in the above Url. App UID is a unique 14 character identifier that is given to each app installation in that particular customer /tenancy. This makes the domain unique for each app. App Name is the name of the SPWeb folder under which the app is installed. Currently this is a GUID and is automatically generated. In the case of a hosted deployment, the root domain (mydomain.com in the above scenario) is always SharePoint.com.</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-weight: bold;">Explore App Solution Structure</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; color: #333333; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">Once you have set up your VM for SharePoint 2013, open Visual Studio 2012 and create a new project using template "Apps for SharePoint 2013" for creating apps for SharePoint.</span></p>
<p style="margin: 0in; color: #333333; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; color: #333333; font-family: Calibri; font-size: 11pt;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/6242.AppForSharePointTemplate.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/6242.AppForSharePointTemplate.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/6242.AppForSharePointTemplate.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/6242.AppForSharePointTemplate.png" alt="" border="0" /></a></p>
<p style="margin: 0in; color: #333333; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">Provide the name of the SharePoint app, the SharePoint which you will use for debugging and select the option where you would like to host SharePoint app. For this post, we will select "SharePoint-hosted" as shown in screenshot below:</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/4048.AppForSharePointTemplate2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/4048.AppForSharePointTemplate2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/4048.AppForSharePointTemplate2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/4048.AppForSharePointTemplate2.png" alt="" border="0" /></a></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">The following screenshot shows a new project created from "Apps for SharePoint 2013" template in Project Explorer and illustrates its structure.</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/3108.SolutionStructure.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/3108.SolutionStructure.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/3108.SolutionStructure.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/3108.SolutionStructure.png" alt="" border="0" /></a></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p><strong>App Manifest</strong></p>
<p><span style="font-size: small;">Any app for SharePoint (be it SharePoint hosted or cloud hosted) includes an&nbsp;appmanifest.xml file. The appmanifest.xml defines the high level app's attributes like the title, internal name, icon path and version of the app. The most important item specified in the app manifest is the URL of the start page, which is the page that opens when the app is started.</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/2072.AppManifest1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/2072.AppManifest1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/2072.AppManifest1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/2072.AppManifest1.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;">If app needs to access any SharePoint resources outside the app web, then requests for permission is also defined in the app manifest via Permissions tab. You can also define a list of the prerequisites in app manifest, if any, that must be available to the app in order for the app to be installed. For example, certain features may need to be installed and activated, and certain services may need to be licensed and installed. You can right click on app manifest and select "view code" to view the details:</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/8032.AppManifest.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/8032.AppManifest.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/8032.AppManifest.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/8032.AppManifest.png" alt="" border="0" /></a></p>
<p><span style="font-size: small;">Notice that with&nbsp;start page, there is a dynamic token prefix as ~appWebUrl, and SharePoint will replace this dynamic token at runtime depending on which site the app is installed.&nbsp;App Principal is needed for identification, for authentication and authorization purposes, of the app. For SharePoint hosted app, App Principal will always be internal as SharePoint is going to track the identity of the app internally and does not need any outside help.</span></p>
<p><strong><span style="font-size: small;">Default.aspx (i.e. Default Start Page)</span></strong></p>
<p><span style="font-size: small;">Once you open the&nbsp;default start page of the SharePoint hosted app (i.e. default.aspx), you'll find that Visual Studio automatically adds two content place holders&nbsp; in it i.e. PlaceHolderAdditionalPageHead and PlaceHolderMain. Inside of </span><span style="font-size: small;">PlaceHolderAdditionalPageHead, Visual Studio automatically adds the jQuery libraries and link to app.css and app.js. You can directly start adding styles for default.aspx in app.css and can add scripts in app.js.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/3731.DefaultASPX.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/3731.DefaultASPX.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/3731.DefaultASPX.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/3731.DefaultASPX.png" alt="" border="0" /></a></span></p>
<p><span style="font-size: small;">A SharePoint hosted app can have many pages, it's just the template provides you with the default start page. You can add as many pages or script files or CSS.&nbsp;&nbsp;</span></p>
<p><strong><span style="font-size: small;">Hello World SharePoint Hosted App</span></strong></p>
<div>
<p><span style="font-size: small;">Without making any code modifications in above project, if you right click on the project, and select "deploy", it will deploy the app to SharePoint site. You can also change the site URL to deploy the app to your O365 tenant site collection. You can go</span><br /><span style="font-size: small;">to site content and clicking on the app "My First SharePoint App" will open up the default page of the app as shown below.</span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/6406.MyFirstSharePointApp.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/6406.MyFirstSharePointApp.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/6406.MyFirstSharePointApp.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/6406.MyFirstSharePointApp.png" alt="" border="0" /></a></p>
<p>The hello world app "My First SharePoint App" deployed above displays the name of the logged in user. This name is fetched using the SharePoint 2013 Client Side Object Model (CSOM) via JavaScript. CSOM can be used using JavaScript or by using code behind files. Since in SharePoint-hosted app, any server side code is not allowed, thus SharePoint content can be accessed using the following ways:</p>
<ol>
<li>
<div style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-family: Calibri; font-size: small; font-style: normal; font-weight: normal;">Using client side object&nbsp;model via JavaScript</span></div>
</li>
<li>
<div style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-family: Calibri; font-size: small; font-style: normal; font-weight: normal;">Calling&nbsp;REST based APIs via JavaScript</span></div>
</li>
</ol>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">In the above hello world app, the logged in user's name is fetched using the following CSOM code in App.js:</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/6153.CSOM.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/6153.CSOM.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/6153.CSOM.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/6153.CSOM.png" alt="" border="0" /></a></span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><strong><span style="font-size: small;">Debugging SharePoint-Hosted App via F5</span></strong></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-size: small;">Once you're done with the development of your app, you can directly hit the F5 key, its going to package your source files to install the SharePoint app on the target test site. Visual Studio then starts a session of IE, and direct you to the start page of the page, Also, note when you close the session of IE, Visual Studio starts the uninstallation and retraction process of app from the target SharePoint site. Please note that when you hit F5, Visual studio attaches the JavaScript debugger as well to IE, because of which you can directly debug the JavaScript files inside Visual Studio. </span><span style="font-size: small;">However, if you would like to use JavaScript debugger built into IE (i.e. IE Developer Tools), just use Ctrl F5 instead of F5.</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Part 3 - Apps Hosting and Branding</title>
      <link>https://docs.microsoft.com/archive/blogs/amigan/part-3-apps-hosting-and-branding</link>
      <pubDate>Tue, 11 Dec 2012 18:17:00 GMT</pubDate>
      <dc:creator><![CDATA[Amit Gandhi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amigan/2012/12/11/part-3-apps-hosting-and-branding/</guid>
      <description><![CDATA[This post is in continuation to my previous posts about SharePoint 2013 App Model. You can see the...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;"><span style="font-family: Calibri;">This post is in continuation to my previous posts about SharePoint 2013 App Model. You can see the previous posts here:</span></span></p>
<ul>
<li><a href="https://blogs.msdn.com/b/amigan/archive/2012/12/10/part-1-why-apps-are-needed-for-sharepoint-2013.aspx"><span style="font-family: Calibri; font-size: small;">Part 1 - Why Apps are needed for SharePoint 2013</span></a></li>
<li><a href="https://blogs.msdn.com/b/amigan/archive/2012/12/10/part-2-introduction-to-sharepoint-2013-app-model.aspx"><span style="font-family: Calibri; font-size: small;">Part 2 - Introduction to SharePoint 2013 App Model</span></a></li>
</ul>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Before we get into the details of building useful apps using SharePoint 2013, we need to go over the app model architectural overview.</span></span></p>
<h1><span style="text-decoration: underline;"><span style="font-size: medium;"><span style="font-family: Calibri;">Apps for SharePoint hosting options</span></span></span></h1>
<p><span style="font-size: small;"><span style="font-family: Calibri;">The SharePoint 2013 app model provides two broad approaches to hosting your apps for SharePoint: </span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">SharePoint</span>-<span style="font-family: Calibri;">hosted</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Cloud</span>-<span style="font-family: Calibri;">hosted</span></span></li>
</ul>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Within</span> <span style="font-family: Calibri;">the</span> <span style="font-family: Calibri;">cloud</span>-<span style="font-family: Calibri;">hosted</span> <span style="font-family: Calibri;">approach</span> <span style="font-family: Calibri;">there</span> <span style="font-family: Calibri;">are</span> <span style="font-family: Calibri;">two</span> <span style="font-family: Calibri;">important</span> <span style="font-family: Calibri;">subcategories</span>: </span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Provider</span>-<span style="font-family: Calibri;">hosted</span> </span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Auto-hosted</span></span></li>
</ul>
<p><span style="font-size: small;"><span style="font-family: Calibri;">&nbsp;</span></span><span style="font-size: small;"><span style="font-family: Calibri;">These</span> <span style="font-family: Calibri;">are</span> <span style="font-family: Calibri;">not</span> <span style="font-family: Calibri;">exclusive</span> <span style="font-family: Calibri;">categories</span>: <span style="font-family: Calibri;">An</span> <span style="font-family: Calibri;">app</span> <span style="font-family: Calibri;">for</span> <span style="font-family: Calibri;">SharePoint</span> <span style="font-family: Calibri;">can</span> <span style="font-family: Calibri;">have</span> <span style="font-family: Calibri;">both</span> <span style="font-family: Calibri;">SharePoint</span>-<span style="font-family: Calibri;">hosted</span> <span style="font-family: Calibri;">and</span> <span style="font-family: Calibri;">remotely</span> <span style="font-family: Calibri;">hosted</span> <span style="font-family: Calibri;">components</span>. <span style="font-family: Calibri;">Each</span> <span style="font-family: Calibri;">approach</span> <span style="font-family: Calibri;">has</span> <span style="font-family: Calibri;">key</span> <span style="font-family: Calibri;">features</span> <span style="font-family: Calibri;">you</span> <span style="font-family: Calibri;">should</span> <span style="font-family: Calibri;">consider</span> <span style="font-family: Calibri;">when</span> <span style="font-family: Calibri;">deciding</span> <span style="font-family: Calibri;">how</span> <span style="font-family: Calibri;">to</span> <span style="font-family: Calibri;">host</span> <span style="font-family: Calibri;">your</span> <span style="font-family: Calibri;">apps</span>.</span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><strong><span style="text-decoration: underline;">SharePoint Hosted App</span></strong></span></span></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/4784.SharePoint-Hosted-App.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/4784.SharePoint_2D00_Hosted_2D00_App.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/4784.SharePoint-Hosted-App.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/4784.SharePoint_2D00_Hosted_2D00_App.png" alt="" width="402" height="70" border="0" /></a></p>
<p><span style="font-family: Calibri;"><em>Figure 1: SharePoint-hosted apps</em></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">SharePoint hosted app runs within the context of SharePoint, but there is no server side code. Any kind of logic is going to run in the client side using JavaScript. You can leverage some of the SharePoint artefacts like lists, document libraries, pages without code behind and out of the box web parts. </span></span><span style="font-family: Calibri; font-size: small;">SharePoint-hosted apps for SharePoint are installed on a SharePoint 2013 website, called the&nbsp;</span><em>host web</em><span style="font-family: Calibri; font-size: small;">, and that have their resources hosted on an isolated subsite of a host web, called the&nbsp;</span><em>app web</em><span style="font-size: small;"><span style="font-family: Calibri;">.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><strong><span style="text-decoration: underline;">Cloud-hosted apps</span></strong></span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/0638.Cloud-Hosted-App.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/0638.Cloud_2D00_Hosted_2D00_App.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/0638.Cloud-Hosted-App.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/0638.Cloud_2D00_Hosted_2D00_App.png" alt="" width="460" height="105" border="0" /></a>&nbsp;</span></span></p>
<p><span style="font-family: Calibri;"><em>Figure 2: Cloud-hosted apps</em></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In cloud hosted apps, the logic resides outside of SharePoint. The logic can reside either on IIS server OR Windows Azure OR some other cloud solution and it is going to talk to SharePoint using client side object model (CSOM) or REST services and have to be granted permission to SharePoint using OAuth. </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">Within this category there are two types of apps:</span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;"><strong><span style="text-decoration: underline;">Provider hosted</span></strong></span></span></li>
</ul>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">Provider-hosted apps for SharePoint includes components that are deployed and hosted outside of the SharePoint farm, usually by the developer. </span></span><span style="font-size: small;"><span style="font-family: Calibri;">The provider-hosted app for SharePoint interacts with a SharePoint 2013 site but also uses resources and services that reside on the remote site.</span></span><span style="font-size: small;"><span style="font-family: Calibri;">This approach enables you to use any hosting service you want, but it places the responsibility for creating the installation, upgrade, and uninstallation logic of the remote components on the developer.</span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;"><strong><span style="text-decoration: underline;">Auto-hosted</span></strong></span></span></li>
</ul>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;">Apps that include a Windows Azure Web Site, and possibly also a SQL Azure database, that are automatically installed when the app is installed. The Windows Azure web site and optional SQL Azure database can be included in app package, such that when you provision the app, it automatically creates Windows Azure web site and optional SQL Azure database in Azure. If you are using auto hosting for your app, each installation of the app provisions its own Windows Azure web site. The Windows Azure web sites infrastructure handles load balancing, multi-tenancy, and other important maintenance tasks for you.</span></span></p>
<p style="padding-left: 30px;">&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="background: yellow;" valign="top" width="1465">
<p><span style="font-size: small;"><span style="font-family: Calibri;"><em>Note: Cloud-hosted app is the most preferred hosting model for almost all apps. You can get full power of the web, you can choose your infrastructure and technology, you can run in IIS or in Windows Azure or even on other non-Microsoft infrastructure. Whereas SharePoint hosted apps is good for smaller apps with limited resource storage.</em></span></span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong><span style="font-family: Calibri;"><span style="text-decoration: underline;">App Shape and Branding</span></span></strong></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">&nbsp;</span></span><span style="font-size: small;"><span style="font-family: Calibri;">When you build SharePoint apps, one of the design decision is how apps are going to look like and be presented to the user. To design the user experience of the app, you need to understand the following:</span></span></p>
<ul>
<li><span style="font-size: small;"><span style="font-family: Calibri;">App Shape</span></span></li>
<li><span style="font-size: small;"><span style="font-family: Calibri;">Branding</span></span></li>
</ul>
<p><span style="font-size: small;"><span style="font-family: Calibri;">&nbsp;</span></span><span style="font-size: small;"><span style="font-family: Calibri;">Apps for SharePoint fit seamlessly into the SharePoint website where they are installed. </span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/1447.apps-shape-options.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/1447.apps_2D00_shape_2D00_options.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/1447.apps-shape-options.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/1447.apps_2D00_shape_2D00_options.png" alt="" width="372" height="110" border="0" /></a></span></span></p>
<p><span style="font-family: Calibri;"><em>Figure 3: App Shapes option</em></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">As shown in figure above, the apps can have three possible type of shapes:</span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;"><strong>Immersive</strong>: An app for SharePoint provides a fully immersive experience and optionally can extend some of the existing UI, such as in menus, or by providing embeddable parts for other pages. Immersive apps will take entire browser experience. </span></span></p>
<p style="padding-left: 30px;">&nbsp;<span style="font-size: small;"><span style="font-family: Calibri;"><strong>App Part</strong>: App parts surface an IFrame element that contains content from your app.&nbsp;Imagine these apps as the ones which add something like a web part to the SharePoint site e.g. weather monitor app. An App Part is nothing but a type of Web Part that is represented by the&nbsp;</span></span><strong>ClientWebPart</strong><span style="font-size: small;"><span style="font-family: Calibri;">&nbsp;class. This kind of Web Part is essentially a wrapper for an IFrame that would host a page of the app.</span></span></p>
<p style="padding-left: 30px;">&nbsp;<span style="font-size: small;"><span style="font-family: Calibri;"><strong>Extension App</strong>: You need to use extension app when you create new actions for documents or list items. Ribbon or context menu extensions make your app available on list items, documents, or anywhere else a ribbon is shown. An app can add links like ribbon, custom actions or ECB menu to the host web. When user will click on the link, user will be redirected to the app web.</span></span></p>
<p>&nbsp;<span style="font-family: Calibri; font-size: small;">All apps have a default page which might take the full page. Apps show custom action or app part in the host web. The app might take the full page by redirecting user from host web url to app web. For example, the host web url is&nbsp;</span><a href="https://www.hostweb.com/">https://www.hostweb.com</a><span style="font-family: Calibri; font-size: small;">&nbsp;and an app is installed in the host web which adds a custom action. When user clicks the custom action, the user will be navigated to a new url (say,&nbsp;</span><a href="https://www.appweb.com/">https://www.appweb.com</a><span style="font-family: Calibri; font-size: small;">). So the app takes the full page (so it&rsquo;s called Immersive Full page). However user will not notice the url changes as the new app site will have the same UI look and feel. The idea of having the app web to have similar look and feel like host web is achieve thorough a new concept in SharePoint 2013 &ndash; called <strong>Chrome Control</strong>. This is a javaScript based object that allows custom app to consume and import the css and stying of the hosting parent appweb.</span><span style="font-size: small;"> <span style="font-family: Calibri;">Also</span> <span style="font-family: Calibri;">the</span> <span style="font-family: Calibri;">chrome</span> <span style="font-family: Calibri;">control</span> <span style="font-family: Calibri;">create</span> <span style="font-family: Calibri;">a</span> <span style="font-family: Calibri;">SharePoint</span> <span style="font-family: Calibri;">2013</span> <span style="font-family: Calibri;">ribbon</span> <span style="font-family: Calibri;">bar</span> <span style="font-family: Calibri;">in</span> <span style="font-family: Calibri;">the</span> <span style="font-family: Calibri;">app</span> <span style="font-family: Calibri;">site</span>, <span style="font-family: Calibri;">so</span> <span style="font-family: Calibri;">that</span> <span style="font-family: Calibri;">user</span> <span style="font-family: Calibri;">can</span> <span style="font-family: Calibri;">navigate</span> <span style="font-family: Calibri;">back</span> <span style="font-family: Calibri;">to</span> <span style="font-family: Calibri;">the</span> <span style="font-family: Calibri;">hot</span> <span style="font-family: Calibri;">web</span>.</span></p>
<p><span style="font-size: small;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/2664.chrome-control-in-a-web-page.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/2664.chrome_2D00_control_2D00_in_2D00_a_2D00_web_2D00_page.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/57/20/2664.chrome-control-in-a-web-page.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-57-20/2664.chrome_2D00_control_2D00_in_2D00_a_2D00_web_2D00_page.png" alt="" width="420" height="75" border="0" /></a></span></p>
<p>&nbsp;<span style="font-family: Calibri;"><em>Figure 4: Chrome control in a web page</em></span></p>
<p>&nbsp;<span style="font-size: small;"><span style="font-family: Calibri;"><strong><span style="text-decoration: underline;">Apps Branding</span></strong></span></span></p>
<p><span style="font-family: Calibri; font-size: small;">Microsoft has recommended design process as well as basic guidelines for developing quality user experiences for apps. Refer to this link </span><a href="https://msdn.microsoft.com/en-us/library/jj220046.aspx"><span style="font-family: Calibri; font-size: small;">UX design for apps in SharePoint 2013</span></a><span style="font-size: small;"><span style="font-family: Calibri;"> to understand the recommended UX design process for apps for SharePoint.</span></span></p>
<p>&nbsp;<span style="font-size: small;"><span style="font-family: Calibri;">Developers are going to primarily use three different types of branding:</span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;"><strong>App Template</strong>: The app template is the default branding option in Visual Studio when you create an app web and pages within that web. The app template can be used only for SharePoint-hosted ASPX pages. The template includes the&nbsp;</span></span><strong>app.master</strong><span style="font-size: small;"><span style="font-family: Calibri;">&nbsp;master page.</span></span></p>
<p style="padding-left: 30px;">&nbsp;<span style="font-size: small;"><span style="font-family: Calibri;"><strong>Chrome Control</strong>: This is a JavaScript based object that allows custom app to consume and import the css and stying of the hosting parent appweb. If you&rsquo;re not building SharePoint-hosted ASPX pages, but you still want your app to fit in naturally with the host site that it is used from, the chrome control is the right choice. </span></span></p>
<p style="padding-left: 30px;"><span style="font-size: small;"><span style="font-family: Calibri;"><strong>Custom Branding</strong>: If, instead of aligning to the host site&rsquo;s theme and fitting into the SharePoint site where your app is installed, you want to use your own brand inside your app, you will have to build your chrome from scratch. However, you should still have a "back to site" link in the upper-left corner of the page that redirects the user back to the site where the app is installed.</span></span></p>
<p><span style="font-size: small;"><span style="font-family: Calibri;">In the next post, I will mention about details around <a title="SharePoint Hosted apps" href="https://blogs.msdn.com/b/amigan/archive/2013/01/16/sharepoint-hosted-app.aspx">SharePoint Hosted apps</a>.</span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Part 2 - Introduction to SharePoint 2013 App Model</title>
      <link>https://docs.microsoft.com/archive/blogs/amigan/part-2-introduction-to-sharepoint-2013-app-model</link>
      <pubDate>Mon, 10 Dec 2012 03:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Amit Gandhi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amigan/2012/12/10/part-2-introduction-to-sharepoint-2013-app-model/</guid>
      <description><![CDATA[This post is in continuation to my previous post "Part 1 - Why Apps are needed for SharePoint 2013",...]]></description>
      <content:encoded><![CDATA[<p>This post is in continuation to my previous post "<a title="Part 1 - Why Apps are needed for SharePoint 2013" href="https://blogs.msdn.com/b/amigan/archive/2012/12/10/part-1-why-apps-are-needed-for-sharepoint-2013.aspx">Part 1 - Why Apps are needed for SharePoint 2013</a>", wherein I had explained that there have been some issues with fully trusted SharePoint 2010 applications, they can destabilize the whole farm and they are difficult to migrate to newer versions of SharePoint.</p>
<p>The new SharePoint 2013 application model not only addresses concerns around solution packages, custom code on server, but also introduce a lot of new capabilities.</p>
<p><span style="font-size: small; text-decoration: underline;"><strong>Key points about SharePoint Apps</strong></span></p>
<ul>
<li>Everything is in a SharePoint site is now an app</li>
<ul>
<li>Yes, everything in a&nbsp;SharePoint site is an app. This includes lists and libraries. Though the actual implementation of lists and libraries has not changed. They are referred in user interface as apps, to create a more unified experience. For e.g. if you would like to create a new document library, you need to create an app and pick document library and then name it.</li>
</ul>
</ul>
<p>&nbsp;</p>
<ul>
<li>No custom code on SharePoint server</li>
<ul>
<li>As per the new SharePoint 2013 App Model, SharePoint apps do not live in SharePoint, rather they execute within a browser client, or in non-SharePoint server such as IIS server or in cloud server such as Windows Azure. SharePoint apps are granted permissions to get back into SharePoint sites via OAuth and communicate with SharePoint via REST/CSOM.</li>
</ul>
</ul>
<p>&nbsp;</p>
<ul>
<li>Easier to upgrade to future versions of SharePoint</li>
<ul>
<li>This is possible because the&nbsp;apps are running against client side service&nbsp;</li>
</ul>
</ul>
<p>&nbsp;</p>
<ul>
<li>Reduces the ramp-up for those developing apps</li>
<ul>
<li>Developers building SharePoint apps don't need to be familiar with SharePoint specific things&nbsp; e.g. object model. If they want to work with data from SharePoint, then they have the option to leverage some of the standard services or CSOM.</li>
</ul>
</ul>
<p>&nbsp;</p>
<ul>
<li>Leverage hosting platform features in new apps</li>
<ul>
<li>If you develop an app which is going to run in another hosted platform (like Windows Azure OR non-SharePoint server such as IIS server OR any other infrastructure) but it's going to use SharePoint UI such that end user feels that he is in SharePoint and the app looks like SharePoint. However, since the app is running in another environment like Windows Azure, then you can use the capabilities of hosting platform i.e. Windows Azure, which you normally cannot do in SharePoint.</li>
<li>This enables taking SharePoint apps to different levels - further than what can be done with farm/ sandboxed solutions</li>
</ul>
</ul>
<p>&nbsp;</p>
<ul>
<li>Provides additional approach for development</li>
<ul>
<li>The app model does not replace the solution based approach of development/deployment, it is an additional option. Thus, in SharePoint 2013 for development, we can use either of the following approach:</li>
<ul>
<li>SharePoint Apps&nbsp;&nbsp;</li>
<li>Fully trusted solutions</li>
<li>Sandboxed solutions</li>
</ul>
</ul>
</ul>
<p>&nbsp;</p>
<p><span style="font-size: small; text-decoration: underline;"><strong>Which development approach to use - SharePoint Apps, Farm Solution or Sandboxed solution?</strong></span></p>
<p>It is important to understand the differences between the three development models which we have i.e. SharePoint Apps, fully trusted solutions and sandboxed solutions.</p>
<p>&nbsp;</p>
<div>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="189">
<p><strong>&nbsp;</strong></p>
</td>
<td valign="top" width="225">
<p><strong>Farm Solutions</strong></p>
</td>
<td valign="top" width="252">
<p><strong>Sandboxed Solutions</strong></p>
</td>
<td valign="top" width="270">
<p><strong>SharePoint Apps</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>When to develop?</strong></p>
<p><strong>&nbsp;</strong></p>
</td>
<td valign="top" width="225">
<p>Use farm solutions only when you cannot achieve the same via apps</p>
</td>
<td valign="top" width="252">
<p>SharePoint&nbsp;sandboxed solutions are deprecated in SharePoint 2013 in favor of developing apps for SharePoint, but sandboxed solutions can still be installed to site&nbsp;collections on SharePoint 2013.</p>
</td>
<td valign="top" width="270">
<p>Recommended approach - Develop an app whenever you can</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>Use Server-Side SharePoint API</strong></p>
</td>
<td valign="top" width="225">
<p>Fully trusted&nbsp;solutions allow developers to write code that can use server side API.</p>
</td>
<td valign="top" width="252">
<p>They are also&nbsp;called as partially trusted solutions. Server side code&nbsp;runs under a strict CAS policy and provides limited capabilities.</p>
</td>
<td valign="top" width="270">
<p>Server side code running of SharePoint server is strictly prohibited in apps. Any server side code that needs to be used within your app needs to run and hosted outside SharePoint on a different server such as cloud or a different IIS server.</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>Use Client-Side SharePoint API</strong></p>
</td>
<td valign="top" width="225">
<p>Yes</p>
</td>
<td valign="top" width="252">
<p>Yes</p>
</td>
<td valign="top" width="270">
<p>Yes, and the&nbsp;capabilities provided by client side SharePoint APIs in SharePoint 2013 is&nbsp;much more as compared to previous versions.</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>On-Premise Deployment Friendly</strong></p>
</td>
<td valign="top" width="225">
<p>Custom code in&nbsp;these solutions is deployed to the bin directory or to GAC. Code can be&nbsp;secured using CAS policies but is typically runs inside full trust.&nbsp;</p>
<p>These type of solutions are deployed by farm administrator.</p>
</td>
<td valign="top" width="252">
<p>They can be uploaded and deployed by site collection admins and owners. It has limited set of APIs available from server side SharePoint.</p>
<p>In addition server side code cannot make request to externally hosted web services or databases. Though developers can use client side solutions to call external services and even make cross domain calls.</p>
</td>
<td valign="top" width="270">
<p>Yes</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>Hosted Deployment and Cloud support</strong></p>
</td>
<td valign="top" width="225">
<p>Farm trusted solutions cannot be deployed in hosted SharePoint deployment. They are only available in on-premise deployment.</p>
</td>
<td valign="top" width="252">
<p>Sandboxed solutions are the only type of solution that can be deployed to hosted SharePoint installations.</p>
</td>
<td valign="top" width="270">
<p>Yes. In addition, developers will be able to publish their apps to a public marketplace for download &amp; purchases. In addition organizations will be able to create a private corporate marketplace where the apps would be available to the organization.</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>Install/Upgrade/Uninstall</strong></p>
</td>
<td valign="top" width="225">
<p>With these type of solutions, developers should manually code each of type of activity logic when solutions are upgraded or uninstalled</p>
</td>
<td valign="top" width="252">
<p>Similar to farm solutions, developers need to write code to write logic when solutions are upgraded or uninstalled.</p>
</td>
<td valign="top" width="270">
<p>Microsoft has made a lot of investments in install/upgrade and uninstallations of apps to make it end user friendly experience and to ease out developer challenges.</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>Server Outages</strong></p>
</td>
<td valign="top" width="225">
<p>When error occurs in these, they can affect the service app pool and in worst case can even host server outages.&nbsp;</p>
<p>These are the most unrestricted type of solutions that can be deployed in SharePoint 2013.</p>
</td>
<td valign="top" width="252">
<p>Runs on the server farm, but in a dedicated isolated process. Thus, they are considered safe and cannot cause server outage.</p>
</td>
<td valign="top" width="270">
<p>Apps run isolated from a SharePoint farm and cannot cause SharePoint server outages.</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>Authentication Options</strong></p>
</td>
<td valign="top" width="225">
<p>The components in the solution can, and usually do, run in full trust.</p>
</td>
<td valign="top" width="252">
<p>The components in the solution run in partial trust.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</td>
<td valign="top" width="270">
<p>Before you can call SharePoint APIs from your app, you need to authenticate to SharePoint. Which authentication mechanism you use depends upon where the code of your app is running.&nbsp;&nbsp;</p>
<ul>
<li>Inside SharePoint: You have to use HTML and JavaScript, and authentication is already taken care for you.&nbsp;&nbsp;</li>
<li>In the cloud:&nbsp;&nbsp;&nbsp;
<ul>
<li>Use client-side code along with the cross-domain library</li>
<li>Use server-side code along with OAuth</li>
<li>REST APIs</li>
</ul>
</li>
</ul>
<p>&nbsp;&nbsp;</p>
</td>
</tr>
<tr>
<td valign="top" width="189">
<p><strong>What can be developed?</strong></p>
</td>
<td valign="top" width="225">
<p>Almost all components can be deployed as Farm solution.</p>
</td>
<td valign="top" width="252">
<p>Refer to this <a title="link" href="https://msdn.microsoft.com/en-us/library/gg615464(v=office.14).aspx">link</a> to understand in detail what can be implemented in Sandboxed Solutions in SharePoint.</p>
<p>Some of the most common things a sandboxed solution cannot&nbsp;do are:&nbsp;</p>
<ul>
<li>Connect to resources that are not located on the local farm</li>
<li>Access a database</li>
<li>Call unmanaged code</li>
<li>Write to disk &nbsp;&nbsp;</li>
<li>Access resources in a different site collection</li>
</ul>
<p>&nbsp;</p>
</td>
<td valign="top" width="270">
<p>What Can be Created as Apps -&nbsp;&nbsp;</p>
<ul>
<li>Custom Web Parts (remote pages that contain custom Web Parts) &nbsp;&nbsp;&nbsp;</li>
<li>Event receivers and Feature receivers(remote event receivers)</li>
<li>Custom field (column) types</li>
<li>Custom web services built on the SharePoint Service Application Framework Application pages&nbsp;&nbsp;</li>
</ul>
<p>What cannot be created as Apps -&nbsp;&nbsp;</p>
<ul>
<li>Custom site definitions</li>
<li>Custom themes</li>
<li>Custom action groups and custom action hiding User controls (.ascx files)</li>
<li>Delegate controls</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>In my next post, I will discuss <a title="Apps Hosting and Branding" href="https://blogs.msdn.com/b/amigan/archive/2012/12/12/apps-hosting-and-branding.aspx">Apps Hosting and Branding</a> - wherein I will mention about app hosting options, different types of apps, entry points, user experience and branding.</p>]]></content:encoded>
    </item>
    <item>
      <title>Part 1 - Why Apps are needed for SharePoint 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/amigan/part-1-why-apps-are-needed-for-sharepoint-2013</link>
      <pubDate>Mon, 10 Dec 2012 00:28:00 GMT</pubDate>
      <dc:creator><![CDATA[Amit Gandhi]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/amigan/2012/12/10/part-1-why-apps-are-needed-for-sharepoint-2013/</guid>
      <description><![CDATA[Hello everyone, I am planning to write a series of articles on the SharePoint 2013 App Model. This...]]></description>
      <content:encoded><![CDATA[<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">Hello everyone, I am planning to write a series of articles on the <strong>SharePoint 2013 App Model</strong>. This article is the first one in the series -&nbsp;where I will start with a bit of theory first, why APPS are needed?</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">Well, all previous versions of versions of SharePoint had many concepts and artifacts (like pages, lists, libraries, sites, web parts, master pages etc.), which make it difficult for new people to learn SharePoint. Sometimes end users get confused by various number of elements which are visible in ribbon and navigation. The reason of these various concepts and artefacts is because SharePoint can be used for loads of purposes and that&rsquo;s why the SharePoint web application experience is very different as compared to other dedicated web applications. With the new version of SharePoint 2013, Microsoft wants to make it easier for users to learn new concepts.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-weight: bold; text-decoration: underline;">Why Apps are needed? </span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">As per the new web technologies, latest gadgets, smartphones etc. which are coming up nowadays, it is found out that end users primarily understand Sites, People, Apps and Themes. The new SharePoint 2013 experience is centered across these 4 primary concepts - (Sites, People, Apps and Themes), such that it is easier for the end users to get familiarize with SharePoint 2013.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">For end users, these concepts are described as:</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="text-decoration: underline;">Sites</span>: A storage space with content (such as pages, documents and list items).</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="text-decoration: underline;">People</span>: Site will allow users to access the content and collaborate with each other within same space.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="text-decoration: underline;">Apps</span>: Apps are going to provide functionality to make site valuable. It can be anything like web part, document library etc.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="text-decoration: underline;">Themes</span>: Used to improve the look and feel of the site.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">In SharePoint 2010, we already have 3 out of the 4 concepts i.e. Sites, People and Themes. But there is nothing like apps, which provides a specific functionality and end users are fairly comfortable in using it similar to other platforms like phones and tablets. This is the gap which needs to be filled.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-weight: bold; text-decoration: underline;">SharePoint 2010 Application Challenges</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-size: 11pt;"><span style="font-family: Calibri;">There have been some issues with fully trusted SharePoint 2010 applications, they can destabilize the whole farm and they are difficult to migrate to newer versions of SharePoint. SharePoint farm solutions require deployment of solution packages. A lot </span><span style="font-family: Calibri;">of </span><span style="font-family: Calibri;">custom </span><span style="font-family: Calibri;">code </span><span style="font-family: Calibri;">is </span><span style="font-family: Calibri;">there </span><span style="font-family: Calibri;">on </span><span style="font-family: Calibri;">SharePoint</span><span style="font-family: Calibri;">2010 </span><span style="font-family: Calibri;">server</span><span style="font-family: 'Cambria Math';">, </span><span style="font-family: Calibri;">if </span><span style="font-family: Calibri;">it </span><span style="font-family: Calibri;">is </span><span style="font-family: Calibri;">not </span><span style="font-family: Calibri;">written </span><span style="font-family: Calibri;">well</span><span style="font-family: 'Cambria Math';">, </span><span style="font-family: Calibri;">it </span><span style="font-family: Calibri;">can </span><span style="font-family: Calibri;">cause </span><span style="font-family: Calibri;">SharePoint </span><span style="font-family: Calibri;">outages</span><span style="font-family: 'Cambria Math';">. </span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-size: 11pt;"><span style="font-family: Calibri;">The </span><span style="font-family: Calibri;">initial </span><span style="font-family: Calibri;">attempt </span><span style="font-family: Calibri;">to </span><span style="font-family: Calibri;">solve </span><span style="font-family: Calibri;">this </span><span style="font-family: Calibri;">problem </span><span style="font-family: Calibri;">was </span><span style="font-family: Calibri;">by </span><span style="font-family: Calibri;">using </span><span style="font-family: Calibri;">sandboxed </span><span style="font-family: Calibri;">solutions </span><span style="font-family: Calibri;">in </span><span style="font-family: Calibri;">SharePoint </span><span style="font-family: Calibri;">2010</span><span style="font-family: 'Cambria Math';">, </span><span style="font-family: Calibri;">but </span><span style="font-family: Calibri;">it </span><span style="font-family: Calibri;">has </span><span style="font-family: Calibri;">its </span><span style="font-family: Calibri;">own </span><span style="font-family: Calibri;">limitations </span><span style="font-family: Calibri;">and </span><span style="font-family: Calibri;">there </span><span style="font-family: Calibri;">are </span><span style="font-family: Calibri;">limited </span><span style="font-family: Calibri;">number </span><span style="font-family: Calibri;">of </span><span style="font-family: Calibri;">customers </span><span style="font-family: Calibri;">actually </span><span style="font-family: Calibri;">using </span><span style="font-family: Calibri;">it.<br /></span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">Developers who are creating these apps must have good knowledge of SharePoint API.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;"><span style="font-weight: bold; text-decoration: underline;">SharePoint 2013 App Model</span></p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">The new SharePoint 2013 application model not only addresses concerns around solution packages, custom code on server, but also introduce a lot of new capabilities.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">SharePoint 2013 apps do not live in SharePoint rather they execute within the browser client or in a non-SharePoint server such as IIS or Windows Azure. Apps are granted permissions to SharePoint via OAuth, and communicate with SharePoint via REST APIs or via CSOM (Client side object model).</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">Developers will be able to publish their apps to a public marketplace for download &amp; purchases. In addition organizations will be able to create a private corporate marketplace where the apps would be available to the organization.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">Hopefully this post would have given you an idea why Apps are needed for SharePoint 2013. I will be publishing a lot of content on the SharePoint 2013 app model in next few posts. Apps introduce a breaking, now philosophical change to how people extend SharePoint. Upgrading, installing and uninstalling SharePoint applications was not a great story in previous versions of SharePoint. SharePoint 2013 changes this with robust infrastructure to support upgrade, installation&nbsp;&amp; uninstallation of apps. The upgrade story for apps in SharePoint 2013 also ensures that if an app upgrade fails, it is rolled back so the site isn&rsquo;t left in a bad state. One significant change in SharePoint is that everything is now treated as an app. This includes existing lists and libraries. I understand you would be curious with loads of questions running around in your mind about Apps - I am sure most of these questions would get answered in the upcoming posts.</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">---------------------------------------</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">&nbsp;</p>
<p style="margin: 0in; font-family: Calibri; font-size: 11pt;">In the next post - I will mention about the "<a title="Introduction to SharePoint 2013 App Model" href="https://blogs.msdn.com/b/amigan/archive/2012/12/10/part-2-introduction-to-sharepoint-2013-app-model.aspx">Introduction to SharePoint 2013 App Model</a>".</p>]]></content:encoded>
    </item>
  </channel>
</rss>