An example of how to use Domain Driven Development to create a simple NHibernate based application.
This project is still in its early stages. I hope the early progression will be like this:
- Develop basic
Domain Model for a simple e-commerce system.
- Run applications like NDepend and Sandcastle over the code and make any changes they require.
- Map the code to a relational database schema.
- Introduce more complex requirements, including complex state changes and validation rules.
Currently the domain model itself is undergoing design, one this is done I will map the classes to the database and then go about adding more realistic details.
I was originally planning to put up blog entries
describing the domain class and related design decision but I now plan to include all the content on this site.
If you have read "Domain Driven Design" by Eric Evans then you will know just how good a book it is. It really inspires you to try to move your software development on to new levels and provides a set of patterns and practices that we can all apply
in our design.
When you come to try to put the patterns and ideas into practice you'll find that you do face some big choices:
- What technologies should I use?
- How can I apply the technologies available without sacrificing DDD?
- How can I get the benefits of DDD without sacrificing elsewhere?
- How can I ensure my domain model incorporates the expertise of other authors?
Although I cannot say whether this project will answer these questions it might help, at least by showing a few ways to deal with some of the issues you will face.
I'll also be referencing Eric's book very widely. I'm doing this as Erics book has a lot of knowledge packed into it and it can be difficult to find what you need when you need it, hopefully by referencing individual pages/chapters I'll make
it easier to find the information next time I need it (at the very least I'll find it useful!)
I would imagine that the project will be most useful to people using similiar technologies to the ones we used, in particular:
- ASP.NET - Though I will not create a Web application to use I will show you how to use NHibernate with a Web application.