Renewing DDDSample.Net, iteration 0
As I promised in one of the previous posts, I am now in process of renewing the DDDSample.Net source code. It’s been quite a while since I published the first version of it. Many technologies have changed and my take on Domain-Driven Design and software architecture also has changed slightly.
First of all, the repo was moved to github. Hurray! In the process of transforming TFS repository into a git one I lost the branch structure. Originally all versions were branched one from another which made updating all samples a little bit easier since (ideally) I had to change only one and then merge this change. With git I am thinking of a slightly different structure. I am pretty sure I can freeze some portions of the solution (like routing engine and most of the UI) and move them to separate repos. Then I can import them as submodules to each of the samples.
At first I just wanted to add new features to the existing samples but when I opened the vanilla version (a port of Java DDDSample) I found out that it is so outdated that it urgently needs to be renewed. The changes I made so far include:
- Upgrading solution to VS2010 format
- Removing the web setup project (I guess nobody used it, ever)
- Switching to NuGet for resolving most of the packages (using don’t commit packages workflow described here by David Ebbo)
- Upgrading some dependencies (like NHibernate) to the newest versions
- Switching from using façade-like classes in application layer to commands and command handlers implemented using brand new tiny LeanCommandUnframework (a separate micro project hosted here on github)
- Switching from Unity 1.2 to Autofac
- Removing dependency on NServiceBus
- Cleaning up the global.asax file
I am now quite happy with the solution. Everything seems to have its place in the architecture. There are some things yet to be clean up such as changing the way command handlers are created but these should be minor fixes. If you have some spare time, please clone the repo and check if you like what I did. And please note that only Vanilla version was updated.