C# Domain-Driven Design Sample Released
- by Artur Trosin
In the post I want to declare that NDDD Sample application(s) is released and share the work with you. You can access it here: http://code.google.com/p/ndddsample. NDDDSample from functionality perspective matches DDDSample 1.1.0 which is based Java and on joint effort by Eric Evans' company Domain Language and the Swedish software consulting company Citerus. But because NDDDSample is based on .NET technologies those two implementations could not be matched directly. However concepts, practices, values, patterns, especially DDD, are cross-language and cross-platform :).
Implementation of .NET version of the application was an interesting journey because now as .NET developer I better understand the differences positive and negative between these two platforms. Even there are those differences they can be overtaken, in many cases it was not so hard to match a java libs\framework with .NET during the implementation.
Here is a list of technology stack:
1. .net 3.5 - framework
2. VS.NET 2008 - IDE
3. ASP.NET MVC2.0 - for administration and tracking UI
4. WCF - communication mechanism
5. NHibernate - ORM
6. Rhino Commons - Nhibernate session management, base classes for in memory unit tests
7. SqlLite - database
8. Windsor - inversion of control container
9. Windsor WCF facility - for better integration with NHibernate
10. MvcContrib - and in particular its Castle WindsorControllerFactory in order to enable IoC for controllers
11. WPF - for incident logging application
12. Moq - mocking lib used for unit tests
13. NUnit - unit testing framework
14. Log4net - logging framework
15. Cloud based on Azure SDK
These are not the latest technologies, tools and libs for the moment but if there are someone thinks that it would be useful to migrate the sample to latest current technologies and versions please comment.
Cloud version of the application is based on Azure emulated environment provided by the SDK, so it hasn't been tested on ‘real' Azure scenario (we just do not have access to it).
Thanks to participants, Eugen Gorgan who was involved directly in development, Ruslan Rusu and Victor Lungu spend their free time to discuss .NET specific decisions, Eugen Navitaniuc helped with Java related questions. Also, big thank to Cornel Cretu, he designed a nice logo and helped with some browser incompatibility issues.
Any review and feedback are welcome!
Thank you,
Artur Trosin