There’s a little flurry of activity going around comparing Castle MonoRail to the Web Client Software Factory (WCSF). Here’s a synopsis.
- David Hayden, who admittedly is very familiar with WCSF and not very familiar with MonoRail, touts the future of WCSF and the concerns about the lack of resources working on MonoRail in order for it to compete long-term.
- Scott Bellware talks about evaluating MonoRail for an enterprise application, and he mentions his horrible experience setting up and comprehending WCSF.
- Hammett, one of the key Castle Project people who admittedly is not familiar with WCSF, talks about the need for WCSF to compete with MonoRail, not the other way around.
Where do I stand? Before answering, I need to explain my history with web development, ASP.Net, and MonoRail.
I started doing web development in the late 1990’s coding by hand and using ColdFusion on the server-side. I migrated to ASP and, ultimately, to ASP.Net, as most people did.
Since the beginning, I’ve had a love/hate relationship with ASP.Net. I love the .Net Framework, C#, and Visual Studio .Net. I hate ViewState, complex web controls that do unpredictable things, and the difficulty injecting JavaScript into ASP.Net web pages (id="ctl00___ctl00___ctl00_ctl00_bhcr_t___TitleBarSearchText", anyone?).
When I stumbled across MonoRail some time in 2006, I liked what I read, but didn’t have the time to explore it further. Towards the middle of 2006 I was working on my own Model-View-Presenter web architecture that was simple but effective, and even started transitioning my only claim to fame, CSFBL, to it. Then, I decided to give MonoRail a try.
I never turned back.
MonoRail is everything I wanted. It provides a simple yet powerful Model-View-Controller architecture. It avoids things like ViewState and bulky web controls. It’s a breeze marking up web pages and adding JavaScript to them. It allows me to work with the tools I like (such as my own model layer, Prototype, and Scriptaculous) without getting in the way.
As for WCSF, my experience with it was similar to Scott Bellware’s — I was frightened by the weight of it from the start, and it didn’t alleviate my existing WebForms issues. It simply didn’t stack up to MonoRail’s powerful simplicity.
Having said that, how does MonoRail compete with WCSF? I think MonoRail’s "weaknesses" are its strengths. It doesn’t try to do everything; instead, it does enough things just right. It’s scalable and super-fast. It has a reasonably short learning curve, which is more impressive considering the fact that it is lacking in documentation in some areas.
Hayden’s comment that "the MonoRail Project just does not have enough resources" doesn’t pan out. MonoRail is already an excellent, stable framework, and it didn’t get that way because its resources were lacking. There’s a big difference between "enough" resources and "not enough" resources; more does not mean better in this case. Look at Prototype or Scriptaculous; both are among the most widely-accepted JavaScript libraries around, yet neither has the backing of huge development teams with billion-dollar corporations behind them.
I’m on the MonoRail bandwagon, and plan to be for a long time.
davepaulino says:
Nice blog. I really love the MonoRail framework. Castle rocks!
gbr says:
I’m in the process of comparing products. Do you have any comments on the WCSF 2.0 which has been released since you post?
brian says:
I haven’t worked much with WCSF, but I continue to do a lot with Castle MonoRail and ActiveRecord, and would strongly suggest using them for any web project you’re considering.
axdkcd says:
WCSF seems much better integrated with MS technologies (WCF, WWF, WPF, and Visual Studio). Is that not reason enough to consider it over MonoRail if we are already knee deep in .NET + Visual Studio?
brian says:
It really depends on what you need. MonoRail has some WCF facilities available, and is built using the same .Net Framework and Visual Studio as the others. WCSF is really a different beast than MonoRail (or Microsoft’s MVC) both under and over the covers.
Something I noticed while doing a little reading on WCSF. From http://msdn.microsoft.com/en-us/library/bb264518.aspx:
>> Note The software factory is optimized to create online business transaction processing Web sites. It is not optimized for Web content sites or collaboration sites.
Not sure what “optimized” means in this context, but it seems WCSF’s documentation authors are hinting at not suggesting WCSF for some (vague) uses.
Generally, the Microsoft solutions are chock-full of wizards and helpers to generate code for you. MonoRail doesn’t have these. I consider this a blessing in disguise. If you like wizards and tools to help you generate code, WCSF is worth looking in to. I’d prefer using MonoRail or ASP.Net MVC.
gordon says:
I agree with you, Brian.
I first jumped on the WCSF bandwagon because of all the cool things I heard it did. They were all things I wanted to know more about. But I was overwhemled and ultimately disapointed.
WCSF works great and DOES do all these cool things… but for the most part they’re done for you with all this code generation. It’s not the best learning experience. They tell you how to use the wizards and what they do for you BUT I WANTED TO WRITE CODE!
I was very interested in understanding IoC and dependency injection, but with the Factory there’s so much code generation I didn’t even realize how I (or the generators) were using ObjectBuilder to achieve what I wanted to know.
With WCSF, it comes down to trying to deconstruct all the generated stuff to see whats actually going on. There’s nice things like the SiteMapProvider and I do like the way it organizes your project. But it’s sooooo much. Even when they started “bundling” it… I gradually realized I was better off just using the bits of Enterprise Library I liked.
But MonoRail… when I first started with that this year… I fell in love. You can get your hands much dirtier, and you have so much more responsibility… which is what it’s all about!! That’s how you learn and I very quickly realized it was exactly what I was looking for.
I don’t want to put down WCSF or WSSF… the Service Factory especially has some nice things you can use without dragging in the whole works… I’m not anti-Microsoft and I appreciate what the P&P team is doing on CodePlex.
I wouldn’t kick and scream at having to do a WCSF project, but it’s not fun, and that’s why I do coding… I love it. And MonoRail is FUN… because you write code! It’s taught me so much about architecture and development in general that I consider it heaven on earth for me and any devs looking to ramp up their skills. You never stop learning. I want to eventually start contributing – and getting up to that level is my goal for 2009.
I love absolutely everything about the Castle Project.
brian says:
Well written comment, Gordon — it should be a blog post unto itself! 🙂 I agree very much regarding the pitfalls of designer-generated code. I like frameworks and libraries; I don’t like designers that generate code — unless that code is very fundamental, boiler-plate stuff (like CodeSmith templates to define, for example, classes based on a given generic implementation — think CodeSmith templates as used with WilsonORMapper (http://code.google.com/p/wilsonormapper/). 😉
Arvind Kumar says:
I want to Know WCSF (Web Client Software Factory)
and
What code where to Write.. If I Get Print screen as well it will be more help full
Please Help Me..
Thanks