Everybody knows I’m far from a Micro$oft fanboy, but if you think about this under a pragmatic perspective, you’ll come to the conclusion that, even if they are a force of Evil, we must handle them and those who use their technology, some of them under coercion :). So, how can we go about it? Well, my short answer is ASP.NET MVC.

ASP.NET MVC is a quite open-source (there are some limitations in the license) which breaks with the dreaded Webforms model and bring some MVC goodness to the M$ table. In the recent years we’ve seem many MVC web frameworks in the spotlight, my favorite being, of course, Ruby on Rails, but there are Django (Python), Joomla (PHP), Groovy on Grails (Java based – horrible name), Catalyst (Perl), and many more, so it was time to do the same with ASP.NET.
In fact, the .NET guys already had a MVC web framework, the Monorail (can you guess what inspired it?), a open-source project by the guys from the Castle Project that ported some of the ideas an practices from the Rails world. The problem is obvious: it’s not mothership certified and you can’t get a certification, so it never received the deserved attention when compared to the official choice. That sucks, but they were smart and hired Hammet, the founder of Castle, and I believe he is working on the MEF team. Back to ASP.NET MVC.
It’s a nice framework, quite well thought, much more adapted to the current best practices for web development and, the best part, stateless. For me this is its the best feature, no more ugly and heavy view state, no more magic, no more leaky abstractions. If you want to keep state in a stateless architecture be my guest and do it yourself. The “bad” side (not for me) is that you loose all the fancy webcontrol stuff and must learn some good practices and HTML, CSS, Javascript, Dependency Injection and ORM-techniques for real (at least for someone who’s interested in doing a good work).
My objection to ASP.NET MVC is that it’s not opinionated enough, but being a happy railer that’s just natural. Even though the framework gives you a pre-built structure and many of the tools you need to create a good app, you still need to make a lot of choices: which ORM? which Dependency Injection tool? how to create templates? and many more. It’s quite hard to start from scratch and choose all this, specially when we have so many options for each (which is very good).
Of course I wasn’t the only one, many people from the ALT.NET world embraced the ASP.NET MVC idea, complained about (more or less) the same stuff and decided to create a common infra-structure with all of these choices sorted out. Led by Billy McCafferty, they created the S#arp Architecture project.
As we’re approaching the official 1.0 version of ASP.NET MVC, these guys worked hard to sync their project up to the latest functionalities of the release candidate version, and they made a very good job. With S#arp Architecture it’s much easier to start developing the application, with many good default choices already made, some architecture guidelines to make it testable and maintainable, making it possible to capture all the value the framework can give us.
Most of the options (if not all) use open-source projects like Castle Windsor, NHibernate, Fluent NHibernate, NInject, etc. You can choose what to use, and reap the benefits of the many hours of tears and sweat it’s developer poured into it.
The downside (for some) is that you need to take sometime to study these choices to use it well, but I’m sure it would be much, much, much worse without it, and there are lots of documentation. Billy himself wrote an article about the project to InfoQ, and I recommend that you take a look at it, and after that go to the project’s page, download and take it for a spin.
And remember: it’s a open-source project. If you want to contribute go to their group, talk to them, discuss your ideas and see what you can do together.
Comments
-
Tue, 17 Mar 2009 17:32:44 -0300
Bem legal a iniciativa so Sharp Architecture.
Vou começar a brincar com ele.
Ótimo post!!!!
[]´s
-
Thu, 17 Sep 2009 09:34:56 -0300
Cara.. o post é bacana, mas acho estúpido esse ódio em relação a microsoft. tem espaço pra todo mundo…








