RE: Technology Brainstorm
(Because I often get tired of writing my verbose comments in a 300×300 text
box…)
Colin seems to [find
himself in a pretty good spot](http://colinramsay.co.uk/2007/10/10/technology-brainstorm/trackback/). The wonderful world of Greenfield
development. But of course with this comes…decisions. MVC or Web Forms?
ActiveRecord or PI (persistent ignorant)? .NET or Ruby? (the latter being the
question I’m starting to ask on new projects)
Colin seems to be pretty set on Castle Windsor+MonoRail+ActiveRecord which is
a wonderful combination. The simplicity of AR is just dang nice. And with
things like the ActiveRecordMediator in Castle and the Repository
techniques made popular by Ayende, it seems like you can remove some of the
“persistence tax” from your entities while still remaining pretty simple. I say
“it seems like” because unfortunately I haven’t had a chance to try out
ActiveRecordMediator+Repository
attractive.
I still struggle with the decision between MR+AR vs. MR+PI (persistent
ignorant) myself, in the .NET world at least. (I’m finding this decision in a
dynamic language like Ruby to be a whole different kind of conversation
though.) The purist in me wants to have a 100% “pure” domain model and not let
any of that pesky “infrastructure” stuff pollute my precious domain model. And
then the simplicityness (yes, I made that up) in me says “is that really
necessary?”. Eric Evans himself recently [said he
noticed a lot of overuse of DDD](http://www.infoq.com/interviews/domain-driven-design-eric-evans), which I admit to being guilty of. But, I’m
still learning (something I hope I’m always doing…)
So since Colin asked for suggestions, here are a couple things I’d look into
for use on a brand new MR project (most of which I haven’t used yet…):
-
[Castle
Generator](http://macournoyer.wordpress.com/category/castle/generator/) (Scaffolding, project file(s) builder, .NET DB Migrations)
-
[Castle
Contrib Code Generation](http://using.castleproject.org/display/Contrib/Castle.Tools.CodeGenerator) (strongly typed property bags/flash…I really need
to start using this!)
Oh, and I absolutely agree on using Windsor from the start. That’s what I’ve
done on my current project and you start getting giggly once you realize how
easy it is to shift responsibilities among classes. Not to mention the nice
decorator chains that can be created to help you adhere closer to OCP.
That’s it for now. After all, this was just supposed to be
a comment. 🙂