<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Organizing Namespaces with DDD</title>
	<atom:link href="http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/</link>
	<description>Just another LosTechies site</description>
	<lastBuildDate>Thu, 13 Sep 2012 07:11:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: Jason Meridth</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-44</link>
		<dc:creator>Jason Meridth</dc:creator>
		<pubDate>Wed, 03 Oct 2007 10:29:21 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-44</guid>
		<description>I am also re-reading the book.  I&#039;m on my second round and feel just as &quot;over whelmed&quot; as I did on my first.  The only other book that has had this much information in it has been the bible.  No religous comparison there, well, maybe.  If we all just adhered to Evan&#039;s book, bliss and happiness would overwhelm the software industry and there would 1000 years of peace.  :)</description>
		<content:encoded><![CDATA[<p>I am also re-reading the book.  I&#8217;m on my second round and feel just as &#8220;over whelmed&#8221; as I did on my first.  The only other book that has had this much information in it has been the bible.  No religous comparison there, well, maybe.  If we all just adhered to Evan&#8217;s book, bliss and happiness would overwhelm the software industry and there would 1000 years of peace.  <img src='http://lostechies.com/seanchambers/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nelson Montalvo</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-43</link>
		<dc:creator>Nelson Montalvo</dc:creator>
		<pubDate>Wed, 03 Oct 2007 08:29:05 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-43</guid>
		<description>Sean, 

This version can hold you over in the meantime: http://www.infoq.com/minibooks/domain-driven-design-quickly

The e-book is a summarized version of the Evans book. 

I&#039;m on my third reading of the Evans book and as Joe said, I&#039;m always learning something new as well  (although I&#039;m way behind Joe&#039;s level of understanding).</description>
		<content:encoded><![CDATA[<p>Sean, </p>
<p>This version can hold you over in the meantime: <a href="http://www.infoq.com/minibooks/domain-driven-design-quickly" rel="nofollow">http://www.infoq.com/minibooks/domain-driven-design-quickly</a></p>
<p>The e-book is a summarized version of the Evans book. </p>
<p>I&#8217;m on my third reading of the Evans book and as Joe said, I&#8217;m always learning something new as well  (although I&#8217;m way behind Joe&#8217;s level of understanding).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Chambers</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-42</link>
		<dc:creator>Sean Chambers</dc:creator>
		<pubDate>Wed, 03 Oct 2007 02:25:45 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-42</guid>
		<description>thanks joe.

the only thing that stinks is amazon says it will be 3 weeks before they can ship it out =(

oh well.</description>
		<content:encoded><![CDATA[<p>thanks joe.</p>
<p>the only thing that stinks is amazon says it will be 3 weeks before they can ship it out =(</p>
<p>oh well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Ocampo</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-41</link>
		<dc:creator>Joe Ocampo</dc:creator>
		<pubDate>Tue, 02 Oct 2007 19:10:23 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-41</guid>
		<description>My only recommendation is study it like you are a taking a course on it.  You can&#039;t read it like other technical material.  Each chapter builds on the other.  I hate to say this but every time I reread a chapter I gain new incite.

Nillson&#039;s books is close but it only scratches the surface of what you are about to learn.

Good luck.</description>
		<content:encoded><![CDATA[<p>My only recommendation is study it like you are a taking a course on it.  You can&#8217;t read it like other technical material.  Each chapter builds on the other.  I hate to say this but every time I reread a chapter I gain new incite.</p>
<p>Nillson&#8217;s books is close but it only scratches the surface of what you are about to learn.</p>
<p>Good luck.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Chambers</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-40</link>
		<dc:creator>Sean Chambers</dc:creator>
		<pubDate>Tue, 02 Oct 2007 18:10:01 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-40</guid>
		<description>Joe,

I ordered Eric Evans book yesterday on Amazon. I couldn&#039;t hold back any longer =)</description>
		<content:encoded><![CDATA[<p>Joe,</p>
<p>I ordered Eric Evans book yesterday on Amazon. I couldn&#8217;t hold back any longer =)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Chambers</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-39</link>
		<dc:creator>Sean Chambers</dc:creator>
		<pubDate>Tue, 02 Oct 2007 01:57:10 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-39</guid>
		<description>Actually when I first made IPost it was quite awhile ago. I launched this CMS for my work and at the time they needed the blog post aspect right away. I hastily tested it, coded it and published it to our production server and then began work on the rest of the app.

Now I finally have a chance to go back and do some quality refactorings on this kind of stuff, hence the namespaces and also elimited unnecessary interfaces. IPost is definately a good candidate =)

the funny part is it doesn&#039;t have many responsibilites at all. i think i smell something =)</description>
		<content:encoded><![CDATA[<p>Actually when I first made IPost it was quite awhile ago. I launched this CMS for my work and at the time they needed the blog post aspect right away. I hastily tested it, coded it and published it to our production server and then began work on the rest of the app.</p>
<p>Now I finally have a chance to go back and do some quality refactorings on this kind of stuff, hence the namespaces and also elimited unnecessary interfaces. IPost is definately a good candidate =)</p>
<p>the funny part is it doesn&#8217;t have many responsibilites at all. i think i smell something =)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Scheirman</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-38</link>
		<dc:creator>Ben Scheirman</dc:creator>
		<pubDate>Tue, 02 Oct 2007 01:40:30 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-38</guid>
		<description>IUser I definitely see.

I&#039;d be suspicious of why you couldn&#039;t just construct your scenario using real objects, so IPost just seems to stand out as weird to me.  Maybe a sign that it has too much responsibility, I don&#039;t know.

I see what you mean.  You aren&#039;t just blindly creating interfaces for all your domain classes just for the sake of having interfaces. :)</description>
		<content:encoded><![CDATA[<p>IUser I definitely see.</p>
<p>I&#8217;d be suspicious of why you couldn&#8217;t just construct your scenario using real objects, so IPost just seems to stand out as weird to me.  Maybe a sign that it has too much responsibility, I don&#8217;t know.</p>
<p>I see what you mean.  You aren&#8217;t just blindly creating interfaces for all your domain classes just for the sake of having interfaces. <img src='http://lostechies.com/seanchambers/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Chambers</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-37</link>
		<dc:creator>Sean Chambers</dc:creator>
		<pubDate>Tue, 02 Oct 2007 01:29:25 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-37</guid>
		<description>@Ben, are you referring to IUser, IComment and IPost?

IUser I mock quite a bit in the tests, in addition to exposing the interface to my controllers assembly. IComment is a bad example because I actually no longer am using that.

IPost was made to mock posts attached to users and websites.

All in all, not that many entities implement interfaces. Once a couple of them got quite complex I refactored to interfaces to minimize coupling, seemed to work alright for the time being.</description>
		<content:encoded><![CDATA[<p>@Ben, are you referring to IUser, IComment and IPost?</p>
<p>IUser I mock quite a bit in the tests, in addition to exposing the interface to my controllers assembly. IComment is a bad example because I actually no longer am using that.</p>
<p>IPost was made to mock posts attached to users and websites.</p>
<p>All in all, not that many entities implement interfaces. Once a couple of them got quite complex I refactored to interfaces to minimize coupling, seemed to work alright for the time being.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Scheirman</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-36</link>
		<dc:creator>Ben Scheirman</dc:creator>
		<pubDate>Mon, 01 Oct 2007 16:23:02 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-36</guid>
		<description>What benefit are you gaining by using interfaces for your domain entities?

I&#039;ve never seen a need to mock these, so I&#039;m wondering what value you&#039;re getting out of them.</description>
		<content:encoded><![CDATA[<p>What benefit are you gaining by using interfaces for your domain entities?</p>
<p>I&#8217;ve never seen a need to mock these, so I&#8217;m wondering what value you&#8217;re getting out of them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe Ocampo</title>
		<link>http://lostechies.com/seanchambers/2007/09/29/organizing-namespaces-with-ddd/#comment-35</link>
		<dc:creator>Joe Ocampo</dc:creator>
		<pubDate>Sun, 30 Sep 2007 02:43:51 +0000</pubDate>
		<guid isPermaLink="false">/blogs/sean_chambers/archive/2007/09/29/organizing-namespaces-with-ddd.aspx#comment-35</guid>
		<description>&gt; I apologize for my relative newbism related to DDD.

Don&#039;t apologize, I took me 2 years, rereading Evan&#039;s book 3 times making lots of mistakes before I really felt comfortable discussing it with other people.

&gt;In other words, the namespace organization shouldn&#039;t define boundaries or do you mean something different?

The exact opposite, they should define &quot;Context Boundaries&quot;.  Evan&#039;s refers to this as &quot;Bounded Context&quot; [Evans pg. 335] and may be overkill for most projects but I like to still discuss them because that are the natural evolution of &quot;Modules&quot; [Evans pg. 109]. 

Modules offer low coupling between context boundaries and high cohesion within.

If you think of let say an eCommerce system and you are building an enterprise system I can think of several modules off the top of my head

MyCompany.eCom.Warehouse.InventoryMangement
MyCompany.eCom.Warehouse.VendorManagement
MyCompany.eCom.Store.OrderManagement
MyCompany.eCom.Store.CustomerManagment
MyComapny.eCom.Store.SecurityMagnement
etc.

As you can see each module has a context that is specific to it&#039;s operation and function within the company.  Could each of these be thier own assembly?  (Drum role) It depends, on a large scale enterprise application there can be multiple development teams working on each bounded context. Which would warrant multiple assemblies being developed.  If there isn&#039;t multiple development teams then best judgment should be utilized.  If one of the context boundaries begin to grow out of control consider moving it to its own assembly and distill accordingly. 

The way you would further insure that you adhered to low coupling between each context is utilize an Anti Corruption Layer between each context. [Evans pg. 364]

&gt;...whether my authentication classes should live within my Controllers assembly or my core assembly.

OK this is where I get kind of Anal. LOL Stop thinking like a developer!  Hard to do, trust me I know.  

Let&#039;s assume that you have a domain expert that you are working with in creating your application.  It is important that you and the domain expert form a &quot;ubiquitous language&quot;.  Is the &quot;authentication&quot; class an entity or a service?  From a domain perspective does the product owner even understand what you mean by authentication service or is it a module that exist within the domain where within the authentication module there is a authenticationService that accepts a Credential value object and returns a User entity? &quot;  The important concept here is agreement by both you and your domain expert on ALL of the domain concepts.

If you are the domain expert than put on your product owner hat and explain in English what the objects are called from a product owner perspective.

By far this is the most difficult part of teaching DDD to developers.  They immediately starting thinking in design patterns.

To get a better understanding of what I mean read this post on my blog.

http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/02/a-discussion-on-domain-driven-design.aspx
http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/14/a-discussion-on-domain-driven-design-entities.aspx
http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/23/a-discussion-on-domain-driven-design-value-objects.aspx

Hope this helps.</description>
		<content:encoded><![CDATA[<p>> I apologize for my relative newbism related to DDD.</p>
<p>Don&#8217;t apologize, I took me 2 years, rereading Evan&#8217;s book 3 times making lots of mistakes before I really felt comfortable discussing it with other people.</p>
<p>>In other words, the namespace organization shouldn&#8217;t define boundaries or do you mean something different?</p>
<p>The exact opposite, they should define &#8220;Context Boundaries&#8221;.  Evan&#8217;s refers to this as &#8220;Bounded Context&#8221; [Evans pg. 335] and may be overkill for most projects but I like to still discuss them because that are the natural evolution of &#8220;Modules&#8221; [Evans pg. 109]. </p>
<p>Modules offer low coupling between context boundaries and high cohesion within.</p>
<p>If you think of let say an eCommerce system and you are building an enterprise system I can think of several modules off the top of my head</p>
<p>MyCompany.eCom.Warehouse.InventoryMangement<br />
MyCompany.eCom.Warehouse.VendorManagement<br />
MyCompany.eCom.Store.OrderManagement<br />
MyCompany.eCom.Store.CustomerManagment<br />
MyComapny.eCom.Store.SecurityMagnement<br />
etc.</p>
<p>As you can see each module has a context that is specific to it&#8217;s operation and function within the company.  Could each of these be thier own assembly?  (Drum role) It depends, on a large scale enterprise application there can be multiple development teams working on each bounded context. Which would warrant multiple assemblies being developed.  If there isn&#8217;t multiple development teams then best judgment should be utilized.  If one of the context boundaries begin to grow out of control consider moving it to its own assembly and distill accordingly. </p>
<p>The way you would further insure that you adhered to low coupling between each context is utilize an Anti Corruption Layer between each context. [Evans pg. 364]</p>
<p>>&#8230;whether my authentication classes should live within my Controllers assembly or my core assembly.</p>
<p>OK this is where I get kind of Anal. LOL Stop thinking like a developer!  Hard to do, trust me I know.  </p>
<p>Let&#8217;s assume that you have a domain expert that you are working with in creating your application.  It is important that you and the domain expert form a &#8220;ubiquitous language&#8221;.  Is the &#8220;authentication&#8221; class an entity or a service?  From a domain perspective does the product owner even understand what you mean by authentication service or is it a module that exist within the domain where within the authentication module there is a authenticationService that accepts a Credential value object and returns a User entity? &#8221;  The important concept here is agreement by both you and your domain expert on ALL of the domain concepts.</p>
<p>If you are the domain expert than put on your product owner hat and explain in English what the objects are called from a product owner perspective.</p>
<p>By far this is the most difficult part of teaching DDD to developers.  They immediately starting thinking in design patterns.</p>
<p>To get a better understanding of what I mean read this post on my blog.</p>
<p><a href="http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/02/a-discussion-on-domain-driven-design.aspx" rel="nofollow">http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/02/a-discussion-on-domain-driven-design.aspx</a><br />
<a href="http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/14/a-discussion-on-domain-driven-design-entities.aspx" rel="nofollow">http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/14/a-discussion-on-domain-driven-design-entities.aspx</a><br />
<a href="http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/23/a-discussion-on-domain-driven-design-value-objects.aspx" rel="nofollow">http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/23/a-discussion-on-domain-driven-design-value-objects.aspx</a></p>
<p>Hope this helps.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
