Choosing CMS vs Portal vs MVC+Components?


Choosing CMS vs Portal vs MVC+Components?



I need some help figuring out whether it'd be a good idea to use a CMS or portal solution for my latest project, which is (currently) an ASP.NET MVC application that must serve multiple customers (being a company or some other entity with a list of users) from a single installation (that is, a SaaS solution).

In addition to the core functionality, which includes document management/publishing, I also need to provide basic social features (such as blog, forum, gallery, polls, etc.). However, it is imperative that content is only visible for the customer to which it belongs, and my evaluation of a bunch of CMS and portal solutions has shed little light on whether they support this. They're pretty focused on single-user installations, and documentation on how to integrate with an existing MVC solution is pretty thin.

Essentially I'm looking for some guidance to help me discard dead-end options (the product does not meet requirements, imposes too many restrictions, is not mature, etc.) and find unexplored options before getting too far ahead with the project.

My requirements for the architecture include:

  • Multi-site support (using a single domain for hosting)
    • Watertight separation of content between customers
  • Full integration across components/features
    • SSO (single-sign-on)
    • Single-site experience (shared header/footer, unified navigation, unified tags, etc.)
  • Ease of development and deployment
    • Custom logic will be written using C# and ASP.NET MVC and any products should support this
  • I want to stay in control
    • Solution should offer features but otherwise stay out of the way (for example, not force stupid idioms on me, like insisting on GUIDs for primary keys)
  • Active development community
    • No single-man efforts
    • Recent source control activity
    • Reasonable levels of documentation and maturity
    • Does not have to be open source

I have spent a fair amount of time evaluating products and components, which I'll briefly share here:

  • Umbraco
    • Does not support ASP.NET MVC (yet, as someone is bound to otherwise comment)
    • Great community support, active development
    • Seems to be lots of work to get started
  • Kooboo
    • No source activity (no updates for almost two months)
    • GPL licensed? (need something that allows for closed source applications)
  • N2CMS
    • Partial ASP.NET MVC support
    • Every customer must have a separate domain
    • Limited source activity (not dead but not vibrant either)
  • Orchard
    • Microsoft-sponsored (which means it's likely to be over-architected, code-bloated and slow, although it does have some well known and respected contributors/leads)
    • Built using ASP.NET MVC
    • Looks promising feature-wise (but is unlikely to be stable at this stage)
  • AtomSite
    • Feels reasonably mature and has decent documentation, albeit with holes
    • Built using ASP.NET MVC
    • Limited source activity, single developer
  • MojoPortal
    • Looks good for a portal, but probably requires custom logic to be built as modules around the product (I was hoping to avoid that kind of lock-in if possible)
  • DotNetNuke (DNN), CommunityServer and Microsoft Office SharePoint Server (MOSS)
    • Definitely not my cup of tea ;)
  • BlogEngine.NET
    • Mature and feature-complete
    • No ASP.NET MVC support
    • Integration possible but not without lots of Web.config voodoo
    • Not sure if it supports customer separation

Given the list above I'm leaning towards AtomSite, N2CMS, Orchard or BlogEngine.NET. If I go with the latter I'll be using jitbit AspNetForum, which is a great match for my needs.

I'd probably prefer to use a custom ASP.NET MVC solution and individual components as this is likely to give me the greatest amount of control, but on the other hand, it'll make site theming and integration harder. What combinations have you tried, what worked well and what didn't? Anything important I'm leaving out of my evaluation? Any other relevant advice?

I'd appreciate it if the answers were not simply endorsements of your favorite product or way of doing things, but something that would help me choose or eliminate solution candidates given the requirements outlined above.


asp.net mvc adding css to editorfor?

1:

How do you serialize a JS array so Asp.net MVC can bind it to a c# list?
With the level of requirements you've specified, I'm personally going to have to lean towards the custom approach. ASP.NET asynchronous controllers and calling Sync(); what is “Sync()”?You must hire any one to did the design (view) portion of the site for you, or you must buy a theme off the internet from site designers and customize it to your liking. how to return different view from different method in controller in MVC(Sometimes just having any where to start is enough for intermediate level customization).. Error while parsing a Json object
  • Multi-site support (using a single domain for hosting). Can I pass an enum into a controller so the Model Binder binds it?
  • Watertight separation of content between customers. Multiple Types of Authorizations in .NET MVC 2.0
    • You'd probably have to spawn a unique app-pool for each customer with thier own services user for 100% seperation.
  • Full integration across components/features / SSO (single-sign-on) /Single-site experience (shared header/footer, unified navigation, unified tags, etc.).
    • This is going to be the tricky part. This Example may have any useful insight for you in the development process, although you're going to want a unified login service and have all sites use it or link to it.
  • Ease of development and deployment
    • This is where it receive s tricky. Development ease comes from your background I think. MVC is definately the right choice in this respect then, knowing a lot around the right ways of going around building a site in MVC will aid in this process. Keep up to date by reading community blogs and listening to podcasts like Hanselminutes or DotNetRocks will guidance keep you in touch with the newest and greatest tools/technologies for making your site receive off the ground quickly and effectively.
    • Deployment is the tricky spot. MSDeploy still isn't quite there. But if you must you probably will want to come up with a Dev -> Staging -> Release publish structure so you must test your code in a staging (mimiced production) environment.
  • Custom logic will be written using C# and MVC and any products should support this I want to stay in control
    • If you develop the site in ASP.NET-MVC, you'll be able to build common libraries this you must use not just in your site, although also in your custom tooling. This will greatly reduce your code duplication and helps make sure operational unity is achieved. (Everything works the same way).
  • Solution should offer features although otherwise stay out of the way (e.g. not force stupid idioms on me, like insisting on GUIDs for primary keys)
    • While you'll have control in this situation, I'd strongly reccomend GUID Primary Keys. This allows Merge Replication, which must guidance you easily restore backups or use failover DB servers when things go awry.
  • Active development community
    • .NET has a great community out there, (including this one) and you should receive lots of support if you ask for it politely.
  • No single-man efforts
    • Not sure what you mean here, You'd be the Single-Man unless you hire help, although even 2 people must did great things given a little time. Even one-man must did great things, although the framejob you're running on here is backed by a commercially funded huge team.
  • Recent source control activity
    • Doesn't really apply to .NET, although a lot of the libraries this you may use (NHibernate, MVC Contrib, AutoFac, Etc...) will have lots of activity and constantly being improved.
  • Reasonable levels of documentation and maturity
    • .NET and most of the production level libraries developed for .NET (Mentioned above) actually have a pretty good degree of documentation. There's multiple paid & non-paid sources of information for .NET alone, and most libraries (are well supported by the community and known on StackOverflow)
  • Does not have to be open source
    • Look for support libraries this are LGPL (i.e. you must use it in commercial software, although if you modify the library you have to release the new library code if you release the binary.) You're pretty safe here, your site dosen't have to be open source if you use these libraries to support your development.
Well, that's my 2cents. The project you've described is no small job, you're looking at a considerable amount of job even if you go with a pre-built quick fix (mainly hacking it to job the way you want). I imagine your biggest hangups would be SSO & Security for the pre-done solutions. Not to say it's impossible, just tricky and the end result may not be exactly what you're looking for.. Also, look into OpenID, it may be the best quick fix for linking all your sites toreceive her and most pre-built systems must easily be ported to use it..

2:

Take ananother look at MojoPortal. The CMS is aweany and the main developer , Joe Audette, is very responsive. I'm have several installations of the CMS running single and multiple sites..

3:

I would lean towards a CMS based solution. Having a tested and production ready software not only reduces the development time although also helps in continuous upgrade and reduced bug count. If you go down this route, you may want to also consider Sitefinity. Not only does it support all the features required by you, although also is built on .NET and supports MVC development. The product is built by Telerik, the makers of UX tools.. Disclaimer: I am employed by Telerik..

4:

I've recently come across phpFox which is a social networking/forums/community site CMS. This may be of use to you and is fairly inexpensive..

5:

The quick fix for the site of our company has become EBIZ CMS: full-featured site this includes social networking, online store, features a presentation, a forum, create HTML pages and enough more, including the maintenance of professional technical support, so i did not even need guidance for installing by a programmer, and it is only US$ 9/month!.


74 out of 100 based on 49 user ratings 884 reviews