When not to use prebuilt CMS? - asp.net

Is there any case that creating your own CMS for a specialized website more advantageous than using a prebuilt CMS such as dotnetnuke or umbraco? Can anyone site a project when they had to create a custom CMS and not used a prebuilt CMS? Where to draw the line from using a prebuilt CMS to a customize CMS? Or is using prebuilt CMS always more advantageous than building your own CMS in any type of content driven website?

With the quality and variety of current open source offerings, I would say it's almost never a good idea to start from scratch. It really comes down to requirements and features. There's a huge variety in the features and user experience of different systems out there. You really need to figure out the priorities (performance vs. ease of use vs. flexibility vs. extensibility vs. SEO) to choose the right one.
I generally go with DotNetNuke with an assortment of custom modules to enhance aspects of its CMS and SEO capabilities. There's just not much you can't do with DNN once you really get to know it. But if performance is your highest priority, another option might be preferred.

I think it depends what the overall goal of the project is. If you are building a marketing website or your project can be easily accomplished with a pre-built CMS then you should certainly start there and build modules or customize a little if needed.
However, if you are building a web application that's core functionality is not just content, page management you have to consider going a custom route. Pintrest, Facebook, Flickr, etc. would definitely not start with a pre-fab CMS.
The Onion started with Drupal at one point but realized their needs were so custom that they ended up doing it all in Python/Django. Plus, with frameworks like Python/Django and Ruby on Rails if you are building web apps you can easily create the CMS features you need.
We do a lot of DotNetNuke, some Drupal and all of our custom web apps we are doing with Ruby on Rails. Once you have the requirements and goals of the project you have to look at your tools and see what is the best for the job. And sometimes it's making your own tools :]

if you move for a prebuilt CMS, you have to use their available functions and do improve whatever your features. but if you go fro a new custom CMS, you are free to customized to the maximum.

What are your requirements? If the majority of your requirements (65% +) are CMS related requirements, than I would strongly recommend looking into existing CMS solutions (opensource or commercial).
On other hand, if your CMS requirements are about 35% of your total requirements, then I would consider implementing in-house, fairly light-weight CMS.
Be aware, CMS sounds like an interesting and easy to tackle task, but when it comes to it, it is likely to be the most complicated project that you have ever worked on, mainly due to its extensibility, security and efficiency related requirements.

It all depends on what the requirements are for the project.

Related

how large E-Commerce applications can be created using CMS tools?

Can one create a good e-Commerce application using a tool like DNN merged with some ready made shopping cart? I did not use DNN before, but I think, it will be tough thing to do, I think I will face troubles with performance and maintainability.
Further I think it is almost impossible to convert asp.net web application to DNN, this will wast more time even if I throughaway the UI layer.
Probably it is good to create a small e-commerce application using DNN, that kind of applications that costs 3000 USD, created for once, and not likely to extended.
Talk to me about this.
Thanks
Can one create a good e-Commerce application using a tool like DNN merged with some ready made shopping cart? Yes... But you'll be better served by just using some of the off the shelf cart modules for DNN.
Further I think it is almost impossible to convert asp.net web application to DNN, this will wast more time even if I throughaway the UI layer. This entirely depends on your skill level in writing DNN modules and the needs of the application. No way to even answer other than to say: Why bother? If the application is done and ready to go, there's probably not much of a reason to rebuild it within DNN.
Probably it is good to create a small e-commerce application using DNN, that kind of applications that costs 3000 USD, created for once, and not likely to extended. There are numerous free and open source eCommerce modules for DNN. There are also several good paid for eCommerce modules. Why bother creating your own? Especially if you don't have much experience in writing modules for DNN...
I'm not clear on what your goal is. Plenty of people operate e-commerce sites using DNN. If by large you mean you are looking to take on Amazon then DNN is not for you.
In my opinion DNN's strength is around content management, if you need significant content management and commerce functionality then DNN is likely a good choice. If your primary concern is commerce functionality with little or no other content management needs, then I would look to something more focused on commerce.
It is very possible to convert existing apps to DNN. You will need some understanding of how module development and skinning in DNN works, and then you will find that much of the existing code can likely be copy paste into a module. Once you understand how/when skins and modules are run you will find you can drop in pretty much any ASP.Net code and expect it to work. Of course to take advantage of DNN core features (membership and permissions are common items) you will need to use the DNN APIs. Also it is possible to run DNN side by side with an existing application under the same website.
To me it makes sense to build on DNN if your application will receive significant benefit from off the shelf core and extension module functionality. If you can't remove significant features from your development schedule by using DNN, then you probably shouldn't use DNN.
I haven't found the currently available DNN E-Commerce modules to be good enough to run a site that is really focused on E-Commerce. You should make sure NBStore (a free an Open Source Module) won't meet your E-Commerce as it is very well built but isn't particularly feature rich. Catalook, while feature rich, is terribly written, and I highly recommend avoiding it. Most the other available modules don't have all the needed features for a serious online store.
We've been using AbleCommerce when E-Commerce is the primary focus. AbleCommerce is feature rich, very well built, and relatively easy to customize and extend. We have done basic integration between AbleCommerce and DNN where we used DNN for the main site and AbleCommerce for the E-Commerce piece. AbleCommerce just ran as a Virtual Directory within the DNN site. We did not integrate login/user functionality which was fine for the site. If you truly need the capabilities of DNN, this may be a good way to go.

Should I avoid using a CMS if I want to be able to quickly make good sites with more features/options to customize than Wordpress?

Should I avoid using a CMS if I want to be able to quickly make good sites with more features/options to customize than Wordpress?
I want to become a better webdeveloper and able to quickly make good, fast, secure websites with lots of functionality without being limited so as I'd be with Wordpress. I don't see writing lots of plug-ins to reach the same functionality as a nice solution for doing my own programming.
I have written a few games, quizzes and other scripts I'd like to be able to recycle or easily adapt to work with the CMS.
I currently have a multi-lingual website that works with a /nl/ and /en/ part, that has a few self-written games I wrote in PHP.
CakePHP has a very good CMS called Croogo. It's still quite a young project (still in beta and being actively developed), but the great thing about it is that its a Cake app so it's coded to the well-documented Cake standards.
Whereas customizing/extending Wordpress, Joomla, Drupal et al would mean you'd have to invest a huge amount of time learning about their respective frameworks, all for the sake of one part of any given website (the CMS), if you learn CakePHP, you're learning a much more advanced and flexible framework that can pretty much be used to do anything well beyond the confines of CMSes.
If you learn Cake (or if you already know Cake) you'll find that you already understand Croogo without having to invest much additional time at all. Code you write in Cake can easily be packaged to be a Croogo plugin and even if Croogo doesn't stay around for the long term (I hope it will!), it wouldn't be difficult to re-factor all the plugins you've written to work in any other Cake-based CMS that comes along in the future, or even your own Cake apps.
Croogo is pretty basic, but quite powerful. It has a Wordpress-like feel to it, it supports nice URLs via an amazing reverse-routing system, the /en/ /nl/ language thing you mentioned works out of the box and it's very easy to get any of the huge array of Cake components and plugins working in harmony with the CMS through the use of hooks.
I'm currently working on a project using joomla and there are a ton of custom features that I need to implement. I usually have to create a plugin or module in that case. It's a pain. I'd much prefer doing most of this from scratch instead of hacking at the code. If I had a choice, I would not use a CMS. I hate them.
I think ultimately it's about long term support. When you build a custom CMS in cake or another framework it is much easier and faster for you to customize and build the way you wan too. This works great if this is a project you are planning on supporting (by this I mean bug/user support for when you unleash this CMS on non devs). This can become a headache pretty fast when things need updates and clients are looking for fixes and changes. It's completely manageable, just more of a headache then something with community support.
That being said, if you are comfortable in wordpress the amount of support that exists in that community is huge. So often times you can leave the project knowing updates for the CMS and plugins will come in at a regular speed.
TLDR So if it's a project you know you will be supporting long term (or people with the same comfort and skill level as you) then I would say build it your self for ease of build and customization. If this is a one off or something you plan on handing off to a client with little to no support, building inside of a community supported platform is best.
I really comes down to priorities, if you what to build a site really fast a CSM is hard to beat, but you do not have the same control over the core as you do when you wright it from scratch.
But you can do most any thing with plugins/modules so the control is there if you are willing to work for it. If you wright it your self you will be the only set of eyes most of the time so it will in most cases be slower to implement new standers and security fix's (because you will need to find them first) but with a CMS you will have many people working to make it better and safe at the same time.
If you want to be well rounded I think youe need to be able to do both, you can't control what the customer wants to use some times.
You can make site very quickly with a CMS like Joomla but the problem is even having over 7000 extensions sometimes for your particular purpose you don't find an extension and developing an extension can be real tough. it requires a comprehensive knowledge of Framework. If all you need to do is manage content CMS is the best choice. If it is like a web app and require more interactions go for some framework which provide the basic skeleton of your app. e.g. for CRUD operation many frameworks provide scaffolding feature and make this thing a piece of cake. CakePHP, CodeIgniter, Kohana are some of the best PHP frameworks you can use.
Using Chinese Cms DedeCms or phpcms And developer it more easily !
I like PHPCMS, it works with nginx, fasctcgi, mysql on linux or windows.
I use it to make portal site or enterprise sites group. The multi-site architecture and PHPSSO works well. Template engine is also strong enough.
take a look at big mysite: xinm123.com
Most important thing: it's open source.

Drupal as framework

Can we use Drupal as a framework for larger application? Is it suitable for developing big application in its framework, or is there any limitation of it?
I want to use Drupal as a framework in my application. Is it worth?
If you are looking for a development-framework, Drupal is probably not the right choice. If you are looking for a suite to build websites, Drupal is probably the right tool.
People often tell that Drupal is a CMF, where the F stands for Framework, but in reality, Drupal is simply a flexible CMS.
On a high level, web application framework are split into two categories: the MVC and the CMS. Model View Controller being what most people call a framework. CMS being simply a flexible CMS with application-development abilities.
In practice, what Drupal lacks is:
Proper architecture. Most things in Drupal, evolved organically; which causes inconsistency, unexpected behaviour and unexpected barriers. Not saying that Drupal is not build up properly: just saying it has not been architectured: designed as a whole.
Principle of least surprise. Many frameworks allow skilled developers to create sites in a few hours. With Drupal you must gain a lot of experience and best-practices before you can be confident to roll out websites on planning.
MVC. Drupal has a distinct database-layer and a theme(view) layer, but they are unconventional, and often misused. And certainly not after a structural pattern.
unopinionated behaviour: a framework can force certain methodologies, libraries or even encourage certain behaviour, but it should not have hardcoded/none-overridable defaults that dicate your end-product. Or, in English: Drupals core has many defaults that dictate how you are going to set up, layout and structure your website, regardless of your (clients') needs or wishes. Modules or addons come even momre often with behaviour and often looks built-in and/or hardcoded.
DRY, don't repeat yourself: Drupal heavily depends on repeating oneself. Its entire theme-system depends on copying pieces of code into custom files and changing tidbits. Its form-override system requires copying large parts of the default form into custom modules and changing the parts that one wants modified.
Many of these lackings are the main cause for delay and budget-slips, as seen in my +10years Drupal-experience. Where the unopinionated behaviour part has proven the most nasty one to most of the projects I was involved in. Apparent simple features or ideas prove to take up large parts of the entire budget; Tiny details eating away development-weeks; that last 20% taking not just 80% of the effort, but sometimes 300%.
Besides that, Drupal does not follow OO patterns, which (according to the general consensus) is a bad thing. There is no inheritance, not DRY-practice, no object-relation-mapper*) and no unittesting-practice.**).
This might all sound negative, but in reality, people manage to build nice Drupalsites despite all these "downsides". That is because they adhere to the defaults by Drupal mostly (standard where possible, addons where changes wanted, custom development when no other option is left).
*) In fact there is; in Drupal 7, PDO was introduced, but is not (yet?) used as ORM much/at all.
**) In fact: all of core and many contributions have tests, but these are integration tests and a rare unit-test. Integration-tests (DrupalWebTest) install a clean Drupal-codebase+database for each single test. Your average core-testsuite taking over 8 hours to run is not an exception. TDD is simply not (yet) possible.
EDIT Reading into your examples: Drupal is particularly bad in the area of "form wizards", though it has seen improvement in Drupal 7. Another notable lack, in Drupal, is a proper, programmable workflowing system. There are several modules that enhance or replace the simple workflow-system in core, but they are not easy, nor efficient (development-effort-wise) to program against. It sounds like the main features you want, are amoungst the most underdeveloped areas in Drupal
This really depends on the needs of your application. Drupal, while flexible and extensible, is first a CMS and comes loaded with features which may or may not be desired for a web application. But if out-the-box or with additional modules it provide a large matches for the more classic web application features (ie. user management, content management, plugin system, theme layer, etc.), Drupal provides a great framework to avoid re-inventing the wheel (or dependencies on third party/less-mature framework plugins).
Drupal as a steeper learning curve compared to most framework. As a framework, Drupal is build and designed to for the CMS it is. Historically, Drupal puts almost everything in database. The situation is now better with the generalization of exportables and tools like the Features module. Also, unlike most framework Drupal does not use MVC and is mostly not object oriented.
Yes! You can use it as a framework. You'd want to be happy with some of the core APIs like the menu, node and probably the form API. The menu router and access control are quite good.
I've worked on a couple Drupal sites that didn't quite work because the core requirements had little to do with a CMS. Drupal is very flexible but it most suited to content management. You can of course use it as some satellite CMS for some other application. Drupal can also be used for service driven architecture.
If you want to scale up big, you might consider a framework that places more importance on testing and test driven practices. Drupal is a late adopter of these practices and is not mature in this area. It's something that I find frustrating especially on large sites where regression error becomes an issue. Consider something like Ruby on Rails if this is of interest to you.
Good luck!
Note to self: Why would I wish someone luck on a software project? ... interesting.
Drupal 8 change a lot.
- It is OOP
- Using Composer
- Have good cache mechanism in core
- RESTful in core
So now it is easy can be used as framework for any app. At end web all ways have content. E-commerce have content. And so on.

Whether to use CMS or not

I've started to wondering whether ASP.NET Webforms/MVC even have a place in the web developers toolbox anymore... It seems that CMS systems like Umbraco have replaced the web developers job. Yes I know that those CMS systems are built with ASP.NET Webforms/MVC - however is there even any reason for learning those things if all you gonna do is to use a CMS system anyway? - Also I cant find any situation where a CMS system can be replaced by your own web application.
My question is therefore: Is there any reason for learning Webforms/MVC when using a CMS?
EDIT:
My question might be more like: When should I use a CMS, and when should I go and build my own web app?
The problem with CMS solutions, and I mean all CMS solutions (not just Umbraco, or other .NET solutions, but in any language) is that you will always pay a price for using them. You may gain more from the time-savings afforded by using the CMS, but there are trade-offs to consider:
You will sacrifice a great deal of flexibility
You could pay a significant performance penalty. Many CMSs load a large amount of modules and code to service every request, and much of this is not relevant to a particular page function. (though some CMSs are more monstrously heavy than others!)
The future of your project is tied to yet another vendor, and their own choices
Very often, you rule out the possibility of using other databases that might have better fit your customer's needs (Umbraco doesn't support PostgreSQL, Kentico only supports SQL Server)
Once you start using a CMS you will be tied into satisfying the architectural decisions and API of the CMS framework, and you could eventually be backed into a corner.
This can be particularly problematic if your 'site' is more of a web application than a pure content delivery site. In such cases it can make more sense to choose to build using the full flexibility of the web application framework, rather than risk getting backed into an architectural corner.
On the other hand, if you are building a web site that has potentially hundreds of pages, with a lot of user-contributed content and is much less of a web application, then often a CMS is the way to go, and makes a lot of sense. But remember, you now have two frameworks and two APIs to learn and manage (your platform's framework and the CMS framework).
Writing a CMS is like invading Afghanistan.
Everybody gets a turn but nobody wins.
I don't think that Stack Overflow could have been built with a CMS. Does that answer your question? =)
Update
To answer your updated question.
If you want a regular corporation web containing news, articles, forum etc: Go ahead and use a CMS.
If you need to build a more custom web site like stackoverflow, a web interface for a system or anything like that: Built it using MVC etc.
I personally use a CMS for our corparate website and a MVC framework to build user and administration interfaces for our products.
Not every problem needs a CMS. In the same way not every problem needs a bespoke MVC/webforms website. It depends on what your requirements are. You pick the technology to solve the problem.
Build vs buy is the hardest decision to make. As a developer build always looks best. You can do better than that pile of carp they want to buy. Nevermind that you're reinventing the wheel, axel, cart, etc. To users/management buy always looks best. They don't have to think to hard about what they want and can have it now, not 3 months later after you write it. They forget it'll cost the same again to customise & make it impossible to upgrade.
I'll stop ranting now.
Umbraco is a pretty bare minimum CMS. To customize it (e.g. Version 7+) you'll need to know Heavy MVC, JSON, XML, Sql, etc.
In fact a Site built on Umbraco 7+ is entirely based on MVC views you set yourself and assign to SurfaceControllers (which are MVC controllers) and all you are really getting is the ability for users to edit things about your pages and have Umbraco manage it for you in a DB.
In short you still need experienced web developers to build a site on Umbraco, they just save a lot of time by not having to build the entire backend from scratch.
You use Umbraco to organize Document Types that define what Templates (MVC Views) are used for rendering different types of documetns (e.g. Web Pages) and then you built the template from the ground up with 100% control over the HTML, Css, and Javascript that get's output.
Imo Umbraco is more of a Framework like Django than a complete CMS.
Sure you can build a site in Umbraco and not customize anything, but it would be a pretty cheesey site.
The whole point to Umbraco is to give skilled .Net Developers a good platform for building a site on top of it, but they still have to build it.
Now sharepoint would be more of a complete CMS out of the box that you can do a lot with, but let's see a few problems with SharePoint...
Resource Heavy, eats 50+ Gig's to install
Eats 16 GB of ram just to boot it up (Sharepoint 2013)
Requires Sql Server 2008 R2 or equivalent (enterprise license, $$ chaching)
Requires Windows Server ($$chaching)
It's a monster basically, if all you need is a user editable blod platform... man what a waste of money. Foundation is free, but doesn't include things like the Blog Site Template, so you buy a server enterprise license ($$ big cachinge, 40,000$+ in some scenarios...)
Agreed. A CMS like Umbraco provides a (very) good out-of-the-box solution for the most basic applications. Any sort of specialized purpose is going to require additional programming knowledge. Anymore, though, and your major, if not primary need is going to be a good understanding of the business need. I think we're getting away from building the Legos themselves and on to building the neat toys with the Legos. Cheers!
A CMS (or similar application framework) will provide you with a lot of functionality out of the box, and many of them also have a good library of plug-ins. But you'll still need to write WebForms/MVC code if you want to add any custom features.

Comparisons of DotNetNuke with other CMS's/Web Application Frameworks such as WordPress or CodeIgniter

I have never used DotNetNuke before. I'm thinking about giving it a try to help me build websites, and I'd like to hear from other developers who are in a position to compare DotNetNuke with other CMS's/Web Application Frameworks.
I have used both DNN and Drupal to build fairly large, content-based sites. My focus is more on the production side... UI/themeing, module configuration, etc. I'm sold on Drupal, but there may be other choices that meet your needs just as well. I just happened to work with both systems in recent months.
Drupal's core taxonomy module gives you the benefit of creating a relationship between different kinds of content. If you have "article" and "video" content types, you can easily display data from both types based on the shared taxonomy terms. This is huge and something DNN lacks.
Drupal's hook system is also a big benefit when building your own modules or creating "sub-modules" to alter or add to the default functionality of an existing module. This allows you to customize functionality or take advantage of another module's functionality as your application runs. If you purchase a module for DNN, you will have to alter the module if it doesn't meet your needs. Once you do this, you will need to update it each time there's a new release that you would like to take advantage of. DNN modules seem to be more stand-alone solutions. For example, if a DNN module has a rating system, it's only a part of that solution. With Drupal, I can use the "5 Star" rating module in my forums, my blogs, my articles, my videos, etc. There's central configuration for it and I only theme it once.
The themeing layer in Drupal also gives you a large amount of flexibility in that process. My frustration with themeing DNN sites was that I was stuck working with the markup the developer used, with no option for altering the output without hacking the module. With theme hooks and function overrides, I can change the output from those modules to meet my needs (not completely sometimes, but enough), without touching the module code itself.
The biggest problem I had with DNN modules, including some of the most popular, was just a lack of documentation or discussions available for how to achieve your goal. While Drupal's forums can be hard to navigate and you might not always find the answer you are looking for, there are many outlets for gathering information. Honestly, using DNN made me appreciate the community approach of Drupal more.
I was left feeling that DNN would be fine for building sites with more basic needs. But for that, I would still choose something like WordPress or Joomla, considering they have much larger user bases and, in my opinion, are more sophisticated.
Hope this helps you some.
DNN is a pretty good .NET solution for CMS. If you want more flexibility, I would look at SiteFinity for .NET CMS systems. This is a very flexible and elegant CMS for .NET
If you venture out of .NET and want to look at PHP solutions, then DRUPAL, JOOMLA, and WORDPRESS are best solutions. Some comments about each:
WORDPRESS - Is the simplest and most elegant CMS to work with. Originally a blogging software, it has a super-easy user interface, although that also reads as more limited power and features. It's excellent for content driven websites and templates are easily built.
DRUPAL - Is very flexible and configurable, but I find it more complicated than the others. The Admin interface requires more programming knowledge to pull off and adding components and extras is a little more complicated. But, DRUPAL has been proven in the business and government world as a secure and reliable CMS.
JOOMLA - Is my personal favorite. It is also very powerful and I prefer the Admin. interface. Joomla allows for much flexibility and has the most user created modules and plug-ins out there. You have to invent near nothing with this one. I am biased in favor of Joomla, because I use it the most. That said, it has limiting factors against DRUPAL, such as user security features. But this is being fixed in the next upgrade.
Hope that helps as well.
I have development experience using both DNN and Drupal to build content-rich websites. My preference is Drupal for a number of reasons:
Development time-line was shorter; I was able to produce more in less time.
Drupal has a larger and more active developer community. More resources are available to aid in development.
DNN is not actually a CMS. It is only a framework; Drupal is a framework with a foundational CMS.
Drupal is easier to install.
DNN modules cost money; Drupal modules are free.
Actually, I put together some notes a while back when trying to understand the architectural differences between DNN and Drupal. Found those notes, they are here: DNN versus Drupal. Hope this is helpful.
I experienced a fairly high degree of frustration when working with DNN and I don't believe I am alone in that regard. About a year ago, ASPdotnetStoreFront abandoned their involvement with DNN calling it a "disaster to work with".
I am curious to know what piqued your interest in DNN and if you have a specific website project in mind. Regardless, I wish you success and I hope this helps.
I worked in a .NET development shop utilizing Kentico CMS. I agree, it is feature rich and stable. The API and DB are documented well. Overall, it is a great CMS. There is a limited free version: http://www.kentico.com/freecms.aspx
I'm testing out DNN right now. So far, so good, but I think it depends a lot on what you are using it for. I've only been looking at it for 3 days, but so far I do find the documentation lacking or outdated.
I evaluated many of the different Portal/CMS systems out there back in 2004 and DotNetNuke ended up being my choice and I've been very pleased with it, for everything but E-Commerce, ever since. DotNetNuke is endlessly extensible, easy to skin, easy for non-technical folks to update, has a great 3rd party eco-system, and the development team is very active and talented. There isn't a great Articles module in the core but there are several really good ones available from 3rd parties for a reasonable price.
I tried using Joomla a few years ago and hated it. Wordpress is good for a blog style site but doesn't have nearly the power or flexibility of something like DNN. I am intrigued by SiteFinity, Umbraco, and Kentico for sites where all that's really needed is a CMS, but not enough that I've bothered trying them over DNN.
Another good .NET solution - from what I've read - is Umbraco.
Take a look at Kentico CMS. It's commercial, but still affordable. In my experience from dozens of projects on both CMS, Kentico is much more feature-rich, stable and well documented.

Resources