Colin and I are having lots of fun building a training application at work at the moment. We've only been at it for a week or two but we've made some decent progress.
Our overall architecture (more of which later) involves a lot of different moving parts which, taken together, can obfuscate the detail and make it difficult to see what's going on. So, with that in mind, we've decided to concentrate on some of more important pieces to start with, and build a relatively simple application to demonstrate those pieces. In no particular order, that means:
- Domain Driven Design with NHibernate
- Building a UI with ASP.NET MVC and jQuery
- Inversion of Control with Autofac
- Test Driven Development with xUnit and Rhino Mocks
- Agile Planning with Extreme Programming
So, still a number of ideas and technologies involved there but probably the bare minimum to build a decent application. We have a set of stories to do with out scenario (around job application management, candidates, interviews and so on. We've almost got to the point where we have a decent skeleton which every/most application needs - page management, users, security, basic administration and so on.
We're hoping to be able to put the source out there - it's self-contained and uses SQLite for the database and NHibernate automatically generates the schema.
So far, we haven't done anything super-clever, though Colin has come up with some nice code to deal with MVC Model Binders and I've got a decent page management domain model, from which we automatically generates Routes and hook up some convention-based UI (AJAX calls and so on).
We've just started 4 new graduates at our company, so in a few weeks time they will get the chance to work with the application, implementing some of the stories themselves and learning the technologies and ideas involved.
Having this application available is also useful for us to be able to implement a new technology or try out some different ideas without having to start from scratch every time.
Phase 2, we're going to lever in a service-based approach, using technologies and ideas like WCF, REST and
Mass Transit.
Comments [0]