Tuesday, January 24, 2012

understanding domain driven design

What is DDD ? Actually I've always developed code in a SOA type of way. I prefer overall architecture as SOA and I know SOA and DDD are two conflicting styles :P


Anyway today i got chance to review code based on DDD. So I have started reading DDD. Still I am unable to completely grasp the concept of Entity vs Value objects. ;-)


I am interested in

  1. An illustrative Domain Model
  2. Repositories
  3. Use of Domain/Application Services
  4. Value Objects
  5. Aggregate Roots

If you can help then it would be appreciable. 



Well i am looking for how fit SOA and DDD together ? well we can create a domain model that encapsulates domain concepts, and expose entry points into that model via services.
Maybe the problem we can face is that create services like "UpdateOrder" which takes an order entity and tries to update this in a new session?
We should try to avoid that kind of services and instead break those down to smaller atomic commands.
Each command can be exposed as an operation, or you could have a single service operation that receives groups of commands and then delegate those to command handlers.
Well you can read more from web .. here are few good links.
Finally summarizing all important key role of DDD.
  • Only use one level of indentation per method
  • Don't use the else keyword
  • Wrap all primitives and strings
  • Use only one dot per line
  • Unless explicitly using a fluent interface over an OO model
  • Don't abbreviate
  • Keep all entities small (no more than 50 lines)
  • Don't use a class with more than two instance variables
  • Use first class collections
  • Don't use any getters/setters/properties
  • On a class, it's fine to do this with a data object, such as a DTO
  • Don't give a data object behavior
  • But don't build an illogical model, if a data object needs behavior, make a class
Ending my post with following :P enjoy :-)
I was once asked what my personal motto is. Funnily enough, I had never really decided on one, but I guess it would be:-
“Choose a job you love and you will never have to work a day in your life”
--Confucius
But if you really dig, you’ll find that this line describes best:
“You aren’t remembered for doing what is expected of you”
--Perfect.


No comments:

Post a Comment