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.