11

Sharepoint Apps, can be installed in multiple site collections.

According to everything I have read about apps, sharepoint apps are isolated from the sharepoint environment and I can completely understand that.

Chris O Brien says this: If you’re getting into developing apps for SharePoint, then I’m assuming you know something about the separation of apps and host webs. In a nutshell, apps are kept separate from ‘real’ end-user SharePoint sites – any lists and document libraries created by the app, any files and web pages, all live in a separate web application to the host site. When a user clicks on the app, they leave the host site behind and get redirected to a web which was created when the app was installed for this site. Effectively an ‘app web’ gets created for every site the app is installed to, in a structure which mirrors the host sites themselves.

In this article: http://www.sharepointnutsandbolts.com/2012/08/create-lists-content-types-files-etc.html

So, where are the list, content types, hosted? it says they live in the web application, but my questions is about storage?

Apps need to be installed in a site collection, are those lists stored in the site collection where the app is installed? that wouldnt make sense to me.

Lets say I created an app with 10 list and 100000000 items, and now I want to backup its data to restore it somewhere else, how can I backup the app to restore it somewhere else?

4 Answers 4

5
+50

In SharePoint, the lists are created in the App Web. From the browser perspective, they are in a different domain. A separate IIS Web Application is used to respond to requests in that separate domain.

App data in a SharePoint-Hosted app is not intended to be backed up independently of SharePoint data. If your requirement is to allow that, then you need to create a provider hosted app.

(Think if it like this -- if you backup your "My Documents" folder, it does not make a backup of word.exe or excel.exe.)

3
  • so if I make a backup of a site collection which has 10 sharepoint hosted apps, and then I use restore-spsite in a different environment, then the app will come with the backup with all data too? Feb 20, 2014 at 22:42
  • Most likely, yes. But, if you restore "somewhere else" there is no guarantee that the App will be installed in the other location. And installing the app after the restore will not make the data magically appear, since the instance of the app is created when installed. It will not re-use the app web that was restored. Feb 20, 2014 at 23:18
  • This (backup/restore of a site with a SharePoint-hosted app) would be an interesting test to try! As Paul said I'm guessing the data would be restored but you might loose the plumbing that allows you to access it.
    – Louis
    Feb 21, 2014 at 4:00
5

From Host webs, app webs, and SharePoint components in SharePoint 2013

The special website to which the app is deployed is called an app web. The website to which the app is installed is called the host web. Although the app web has its own isolated domain, it is in the same site collection as the host web. (One exception to this rule is when the app is installed with tenant scope. In that scenario, the app web is in the site collection of the corporate app catalog.)

Except when installing the App at tenant scope, the App Web is a child site of the Host Web.

1
  • When app is installed at tenant scope an app instance,i.e., appweb would be created as a subsite of app catalog and all hostwebs uses this one appweb/app instance. App catalog itself is a "special" site collection created to manage apps in a web application.
    – Ken
    May 19, 2014 at 13:15
1

What I understand is both SharePoint-hosted and provider-hosted apps have a child site called "App web" to hold its lists and libraries.

When you create a SharePoint-hosted app you have these many templates that can be added to your apps.

enter image description here

When you create a provider-hosted app also you have the same templates in the apps project.

enter image description here

When you examine the AppManifest.xml file for Share-point hosted app, start page is

~appWebUrl/Pages/Default.aspx?{StandardTokens}

and for provider-hosted app, it is

~remoteAppUrl/Pages/Default.aspx?{StandardTokens}

Below blogs give some idea about the location of the "app web".

http://blog.sharepointsite.co.uk/2013/05/creating-related-lists-for-sp-hosted.html

http://blogs.msdn.com/b/bharatgupta/archive/2013/03/10/sharepoint-2013-app-model-how-to-view-list-list-settings-inside-app.aspx

4
  • 3
    You've got some of this wrong. An Auto-Hosted or Provider-Hosted App has two parts: What gets deployed in a remote location (Azure, other server) and what will go in SharePoint in an App Web. It's just that for these 2 types the App Web only has a manifest. In your second screenshot, you can see your actual App project ("Provider"), what you have selected is your Provider-Hosted App (that can be anything)
    – Louis
    Feb 21, 2014 at 3:57
  • SharePoint-Hosted Apps only have the SharePoint parts. P-Hosted and A-Hosted Apps CAN have content types, lists, etc. in their App Web
    – Louis
    Feb 21, 2014 at 3:57
  • Thanks for the information and it helps. I haven't tried adding SharePoint Lists, content types etc. in Provider-hosted app. You say that I can add those(list.content types etc) too in provider-hosted app. Feb 21, 2014 at 7:55
  • 1
    Of course you can do that. Right click on the app project which is created apart from the web project in Provider Hosted app. You will get all the options which you showed in first screenshot. Feb 21, 2014 at 10:12
1

Microsoft's guidance on App model is still evolving and it gets confusing for most of us SharePoint folks on where and how list data/content should be stored.

My 2 cents on this topic. In general, all SP content should reside in host web, especially sizable assets. Storing content other than configuration data in app web is very likely to cause issues during the upgrade/ALM process. Not to mention critical data might get wiped out upon removing an app. NONE of the critical data/data structures/data you would like to retain even after removing an app from the site should be in app web.

Notion of a SharePoint app should be similar to mobile "apps". For eg: Let's say, we install a video player to play videos, create playlists etc.. Ideally in few months/years, you would want to uninstall this app when you are ready to try a new shiny and simple video player app. You assume you could still keep videos and playlists even after uninstalling the app. At least the videos as YOU, the user, owns them. You would hate losing videos. Wouldn't you? Ignoring different app models, business vs consumer apps etc..etc..why should SharePoint app be any different?

Good app design should not only takes care of SharePoint app hosting models but also consider the above mentioned "notion" of an app. Site owners or administrators have more power in the app ALM process unlike in the previous SP versions where deployment process is mostly done by IT professionals. SharePoint app can quickly become a nightmare if not designed properly.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.