jmcd's Stuff -> Now at http://jmcd.nu/blog

Jan 31
Permalink

New Project --> Choosing Tools

I have a project I’d like to try for fun and learning.  It’s been rattling round in my head for quite a while, and I think I’m finally ready to get going on it.  It’s going to be a web application, and its green-field.

I have a rough idea of the domain, and some idea of bits of the UI.  I’m pretty much free to choose whatever I like technology-wise.

I used to be a pure Java kind of guy, but in the last few years I have mostly been a user of Microsoft tools.  I feel at this moment that the .NET platform is stronger that Java in terms of language implantation/features and in terms of developer tools.  An added incentive to choose .NET is the new language features in c#, which I am pretty keen to try.

Choosing .NET for the domain doesn’t necessarily tie me to a Microsoft UI and/or database, but choosing SQL Server and ASP.NET does make things simpler.

Not a fan of traditional ASPX applications.  Most of the time spent on an ASPX application seems to be developers struggling to fit in with the framework.  The ASPX model is a mess; Microsoft tried to make it easy for developers to write applications by squeezing the Windows forms model of events and controls into a place where it only kinda’ fits via heavy ViewState and developer abstraction from the “metal”.  Writing unit tests for ASPX code behind is pretty awful; you struggle to test the interaction of the user without using or implementing some MVP/MVC solution.  So I was pretty stoked when I heard about the MVC framework that Microsoft is producing to address these issues, so I’m going to give that a try.  If there were no MVC solution forthcoming from Microsoft I’d be going for Monorail, but there are extensions for the MVC framework that make writing RESTful applications easier that I want to try.

I’m going to pick a bit of Domain Driven Design that I like and have domain entities that are ignorant of persistence, and have repositories handle the interaction with the database.  No one rolls their own DAL any more (unless they really have to), so I reckon I’m going to use Linq to SQL (I want to know about the Lambdas).  I think this solution is appropriate when you are in a position to make the domain match the database schemata, but might not work if you have to interact with a legacy database.

Another choice which seems to provide a lot of Free Good Stuff is Rob Conery’s SubSonic.  I don’t really know much about SubSonic, so I’ll investigate.

Comments (View)