"ASP.NET MVC" CMS in Sharepoint Services - asp.net-mvc

I'm evaluating the options for a CMS in ASP.NET MVC. I'm currently working on a multi-tenant app that requires CMS functionality. I've been looking at N2, Mojoportal etc, but I'm also interested in what SharePoint Services could bring to the table. Specifically I don't want a SharePoint site but rather I'd like to potentially use the sharepoint object model, db tables, etc. to form the core of the CMS.
Is this possible with SharePoint or am I going down the wrong path? I've not had much experience with it.

SharePoint is not an ASP.NET MVC application, it's all web forms. There is the SharePointMVC CodePlex project that attempts to bring MVC to SharePoint.
At the end of the day you are very likely to need to follow the 'web forms' way of doing things sooner or later with SharePoint. So if MVC is a requirement I would not use SharePoint. However your requirements should probably be around what the customers want, not what technology to use?
I also wouldn't take the approach of using SharePoint's back end only. See this question for some good reasons why.

Related

MVC application inside sharepoint drawbacks

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.
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:
"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?
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.
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.
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.
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.
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
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.

Development of Sharepoint Data Entry Site

I am in the process of developing several data entry forms that the client has asked to be accessible through the SharePoint interface (2007 WSS version).
The forms will, among other requirements, consist of multiple drop downs that have to be loaded from tables in SQL Server. These lists of data are updated frequently through a process that sucks data in from Great Plains.
My inclination is to create a Web Part Page with a Page Viewer Web Part and go full screen like this: http://blogs.msdn.com/b/malag/archive/2008/09/15/story-of-a-mischievous-page-viewer-web-part.aspx
...and then to do the pages in ASP.NET MVC3. Is there a better story than this? The integrated SP development paradigm seems like waaaay more overhead.
This sounds like a common issue with developers new the SharePoint paradigm, especially for 2007. The short answer is that your solution will be the quickest way to get to where you want to go but isn't the "cleanest".
The other option is to create a SharePoint Solution and publish an application page to the _layouts directory. A quintessential "hello world" example can be found at http://msdn.microsoft.com/en-us/library/bb418732(office.12).aspx.
New SP developers will find the hardest transition with deployment. The WSPBuilder codeplex project http://wspbuilder.codeplex.com/ has become the industries default solution for doing this. An example of using this can be found at http://www.greggalipeau.com/category/sharepoint/wspbuilder/.
For you I would say the key words are Application Pages and WSPBuilder.

how do you integrate a save/publish invoked from excel to asp.net mvc?

I've been probing around and have not found any hits nor do I have a lot of experience with this topic. I would like to open an excel document (ideally from an asp.net mvc model) and then post this model back to an asp.net mvc controller action for a save/publish through the application.
I would prefer to stay away from excel storing directly to the database, opting instead to go through the mvc action in order to adjust cache, run business rules, etc.
Any tips on places to look or how this is done? I know TFS 2010 does this fine as does sharepoint but I'm not aware of the underlying technologies.
Thank you in advance!!
Jim
After more research it is apparent the answer to this lies in the VSTO libraries. Initially I had a hurdle in place with our virus scanner which would not allow me to build a custom ribbon giving 'access denied' when attempting to load in my .dll's.
Beyond this, the API is fairly straightforward for adding a custom ribbon which has access to WCF, among any other .NET APIs within Excel (or any office tool). This WCF service can invoke the MVC Controllers, if required, or directly perform business logic themselves - the sky's the limit.

Building a CMS in ASP.NET MVC

I'm curious to know if any basic CMS code has been written for ASP.NET MVC.
The reason I ask is, I'm making a data-driven website for a client, and I've already spent a significant amount of time building it from the ground-up in MVC, but now the client wants content management facilities.
Basically they want to be able to add/edit/remove articles and have revision control.
It would be great if I could somehow 'bolt on' the content management without having to start again from scratch, developing it under an existing CMS.
Should I build the article management and revision control myself, or should I re-use some existing package?
N2 does what you describe - "bolts on" to existing ASP.NET solutions (including MVC).
Also, kooboo is interesting http://www.kooboo.com
(I know this question is old, but it still comes high up for the relevant search terms.)
Today I discovered Meek, http://www.adventuretechgroup.com/labs-meek/, and it was very simple and unobtrusive to add to my MVC project, which I believe is what the original poster would have wanted - bolting on CMS as a feature rather than having it take over your entire site.
Piranha CMS is well suited to bolting on to an existing application. The author of it describes why and how here. To quote straight from that source:
"Our focus is content management and to have a transparent and lightweight API for developers. Piranha CMS has almost no components or helpers that render any HTML at all, it simply provides a database, a manager interface and a routing mechanism for retrieving the correct data for the current request.
In the case of you having an existing website you could actually bypass the routing completely, add one page at a time in the manager interface and then manually load the Page model in you existing page. This would allow you to keep your original application exactly the same but manage the content form the manager interface."
If you are still looking, I've published my new open source CMS here:
MVCwCMS
I'm actively working on it so I will push more updates soon.
Here is also a quick summary as to how Telerik Sitefinity does it:
http://www.sitefinity.com/mvc-cms
in brief - allows you to plug in standard system.web.mvc.controller classes as widgets, lets you use the API for anything including model binding, standard Razor for a view engine etc.
There is also Oxite which I believe is more of a blog engine.
Heve a look at AtomicCms it's a free open source content management system based on ASP.NET MVC 1.0
http://atomiccms.codeplex.com
Check for Orchard ;-)
It is based on asp.net mvc.

Are there any cms system in asp.net mvc like drupal

I'm new to asp.net mvc world. Are there any cms system based on asp.net mvc like drupal (php, cms, plugin modules). I dont like dotnetnuke because they use webform and difficult to extends.
thanks
Without having too much Drupal experience, Umbraco is a nice choice if you want .NET (despite the fact that they have an animated favicon). There's professional support also if you need it.
I am surprised nobody mentioned Orchard.
Basic Orchard Concepts
Orchard is a Web CMS, which essentially aims at helping you build web
sites from existing pieces. Those pieces come in a few different sizes
and shapes that need to be well understood if you're going to be
productive with them. This article will go through those pieces and
explain their names and behavior.
More info: http://docs.orchardproject.net/Documentation/Basic-Orchard-Concepts
BeerHouse.
From their website:
TheBeerHouse is a website developed with pure ASP.NET 2.0 which includes a number of features and modules that you expect from a typical CMS / e-commerce website, such as:
* Layout with user-selectable themes.
* Membership system with registration, login, profile setup and complete administration.
* Content management system for publishing and syndicating articles and photos, with support for categories, comments, rating and profile-based personalization.
* Opinion polls with support for multiple active polls and archived polls.
* Mailing lists with support for HTML and plain-text newsletters, background transmission and real-time AJAX-based feedback.
* Forums with support for multiple categories, custom pagination, avatars, signatures, moderation, and complete administration.
* E-commerce store with support for real-time credit card processing, with support for multiple categories, percentage discounts, zoomable pictures, ratings, availability display and more.
* Homepage personalization with webparts.
* Localization.
I didn't think DNN was difficult to extend, but I don't have much experience with it. ASP.Net MVC wise there isn't a huge amount, which isn't surprising considering it's not actually out yet :-)
The main, if rather simple, one is Oxite which is on CodePlex. It wasn't considered a particularly "good example" of MVC when it was first released, but there's been quite a lot of refactoring help from the community so it's worth looking at. It is only a relatively simple blogging thing though, rather than a full on CMS, so don't expect Drupal :-)
I'm currently playing around with the N2 cms. I've not got my head fully around it yet, but you can plug it into web forms or asp.net mvc (they have some sample sites for both platforms). It can use a wide variety of database platforms as well due to nhibernate. It basically sorts out the back end so you can concentrate on the front. N2 cms click here
I can recommend to use MojoPortal, it has a great Framwework and it works perfectly on Linux and Windows :) the url is => http://www.mojoportal.com/
you can also have a look at: http://cmsmvc.codeplex.com/ which is a CMS built using asp.net mvc with plugin and theme support
There is a project going on to port Drupal to .NET platform named Drupal.NET which is currently under development.

Resources