0
votes

We're doing an application which takes feeds and items in that feed to entities on our own site. This is supposed to be an open site which anybody can sign up to. All of this is done with MVC + knockoutjs. We are thinking about managing the entities from that site using Sharepoint 2013, essentially replacing our SQL tables of those entities, and putting them into lists on in our Sharepoint instance. We're also thinking of doing the same thing for users and passwords and such. Then we might have a setup for a single sign on for any other sites my company makes. Currently we're using NHibernate and SQL server.

Are we are naive to think that Sharepoint could handle the amount of traffic, with outside users using our site, along with customers. I've heard that it's doable, I'm just wondering if it's a smart thing to do, and if there are hickups, limitations that any of you have run into trying to do this.

3

3 Answers

1
votes

We went pretty far down the Sharepoint-as-a-development-platform path and ultimately ended up scrapping what we had done and rewriting it in other technologies. That doesn't necessarily mean it is not the right choice for your situation, but there a few things to consider:

  1. "Why do it this way?". What are the benefits to adding the Sharepoint layer to your technology stack? If not Sharepoint, what do the alternatives look like?
  2. Do you already have a solid Sharepoint admin team in place? Sharepoint definately requires a dedicated admin or team of admins that really understand the product to keep it performant and to help you troubleshoot when things are not working correctly.
  3. Do you have Sharepoint development talent already in house? Good Sharepoint developers are harder to find and are typically more expensive than your regular .NET developer. Also, some existing .NET developers may not be interested in learning Sharepoint.
  4. What is your expected traffic, and can Sharepoint handle it out of the box? At least in previous versions of Sharepoint there were internal limits on the amounts of data that could be stored in each list. On top of that, there were practical limits before the performance of the app becomes totally unacceptable. Understanding what those limits are should be a part of your initial due diligence so you can plan for those eventualities.
  5. Will you be extracting operational data for external reporting or warehousing purposes? Is your data team already familiar with getting data out of Sharepoint?

Ultimately, the reason we failed was we ran down the path after the promise of "easy" development without really committing to the product. When we started running into problems, we struggled with basics like troubleshooting because we had lost a couple key people and our regular devs and admins struggled to figure out what was going on. If we had had the right people in place, our experience might have been different. We didn't, however, and we eventually chose to move away from Sharepoint and rebuild on our standard MVC/SQL platform.

0
votes

SharePoint has come a long way in a short time to allow external applications to interact with it in the way you describe. I wouldn't try it with anything but SharePoint 2013 mostly because the licensing allows for this without additional cost per user and partly because what I mention next isn't available in 2010 or earlier.

You can use a MVC/knockout frontend but, the MVC app for SharePoint template isn't exactly what you want unless you will provision every user as a SharePoint user account. That template is still an SP app which means it's run by an SP user. I would look at SharePoint as just an OData service that your app writes back to. You can either use the client object model (SCOM) and write back directly (each user exists as a SharePoint user), or you can proxy the data access from your MVC controller and use a 'service' SP user to connect to SharePoint using SCOM. SCOM is just REST and OData so you can use any web-capable language you choose. I know there are examples for C# and JavaScript (node.js). There may be others.

If you are expecting a lot of volume, I would suggest you host this application on SharePoint Online (Office 365), if possible, and configure it to federate with the rest of your environment. That way you only need to add more space as your data grows (rather than more and more servers as load grows).

Here's a nice overview of the APIs available to you: http://msdn.microsoft.com/en-us/library/office/jj164060.aspx

SharePoint 2013 Developer Center: http://msdn.microsoft.com/en-us/library/office/jj162979.aspx

5 minute video on SharePoint 2013 SCOM: http://www.microsoft.com/office/preview?videoid=1e859ac8-58ca-46d0-a8e0-00f4189761a8&from=sharepermalink-link

Timely blog on anonymous access to SCOM: http://blogs.msdn.com/b/kaevans/archive/2013/10/24/what-every-developer-needs-to-know-about-sharepoint-apps-csom-and-anonymous-publishing-sites.aspx

0
votes

There is no point to redesign you application only for replacing your database tables with sharepoint lists. Performance is one issue. Sharepoint list limitation is another issue, you will lose flexibility from relational database design and give your life to a black box design called sharepoint list.