Is there a sample application to demonstrate best practices for Asp.Net? I am looking for something like SharpArch (for Asp.Net)?
Not really no. Domain Driven Design is a design process. It would be as meaningless to have a sample application as it would be to describe a marathon by telling someone only where the finish line is. The route itself - analogy stripped; the process of how the application was created and why certain decisions were made - is the truly important part. Really you must do the reading, participate in discussions and try it out yourself.
If you're really really looking for samples, the following is the best I can offer:
- Jak Charlton tried to do something like this but I don't think he got too far.
- Mark Nijhof did a sample application to demonstrate the CQRS Event Sourcing architecture
- This stackoverflow question
And some resources:
- Presentations by Stephen Bohlen at the Virtual Alt Net meetings 1 2
- InfoQ Domain Driven Design Quickly Ebook.
By the way SharpArch is not a DDD sample application. It is a framework that aims to make some of the patterns posed by the DDD book easier to implement. Every bit of the DDD-related stuff that is in SharpArchitecture can be transfered to an ASP.NET application with almost no modification. I have done this myself in the past - just include SharpArch.Core and start using the Entity and ValueObject base classes. Also try to structure your solution following the guidelines Billy puts in that giant Word doc.
That being said, it sounds like you are confusing the specific patterns discussed in the big-blue-book (Entities, ValueObjects, Aggregate Roots, Repositories) with Domain Driven Design as a philosophical guideline. There is a WORLD of difference. DDD is a lot more than patterns, its the insight that you cannot make a meaningful tool for your clients without first understanding - in their language - how it is supposed to work. You have to become knowledgeable in their domain. Beyond the patterns, what the book really does, is teach you how to compartmentalize that knowledge and translate it into concepts that can have meaning in code.
This is why a DDD sample application is ultimately so difficult, for the end result to have any meaning as a sample application the domain has to be one that all the people reading it are familiar with. Obviously, if you're talking shipping, routing, or finance, that's not likely to be the case.