The upcoming release of Castle Project’s (www.castleproject.org) MonoRail marks the end of what seems like years of being in alpha, beta, and rc status. If you don’t know what the Castle Project is, and you code in .Net, you’re missing out. They have an incredible set of libraries you can use to really improve your code and decrease your dev time. Some of the coolest:
- MonoRail — It’s an MVC framework that’s mature and stable. An absolute breeze to whip up a website. I’ve been using MonoRail for many years now, well before they had an official “release”, and well before Microsoft finally jumped on the MVC bandwagon. If you’ve used Ruby-On-Rails, this framework will feel very familiar.
- ActiveRecord — Basically Ruby’s ActiveRecord for .Net. If you haven’t been using an ORM, you must be living in a cave. ActiveRecord (AR)’s attribute-based mapping is very elegant, and quite extensible. There’s a good database support (it’s build upon NHibernate), and you don’t have to write XML to configure (unless you really want too…)
- MicroKernel / Windsor — Castle’s implementation of an IOC container. If you haven’t worked with IOC, it’s worth looking into as a design pattern. In almost all but the simplest of projects, you’ll find IOC makes your code more organized. Castle has two flavors for their IOC engine: MicroKernel provides rather basic functionality, and Windsor extends MicroKernel to satisfy just about every imaginable need. While other IOC libraries exist, Windsor is by far the most configurable.
- DynamicProxy — This nifty little library allows you to dynamically create proxies for your objects, so you can do neat things like intercept methods.
One of the greatest features of the Castle Project is how well each of these libraries can “play well” together. You can mix and match ActiveRecord with MonoRail, and even implement your MonoRail website using a Windsor container for your controlllers, helpers, and other supporting infrastructure. But the individual components are also “open” enough to allow you to use other supporting libs if you so choose.
Overall I can’t say enough about the code over at CastleProject. I’ll always use their libs for any of my .Net projects, and I hope to continue to contribute to their ongoing, active development.
Note — they may not have the direct download links for some of the releases active yet, but you can always grab the source code and compile on your own!
Cheers!