Re: Re: Conformist
"Tom Eugelink [email protected] [domaindrivendesign]" <[email protected]> Fri, 18 Mar 2016 07:31:04 +0100
| Newsgroups | gmane.comp.programming.domain-driven-design |
|---|---|
| Message-ID | <[email protected]> |
--------------060801070605020302020108 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Thomas, It most definitely makes sense and I was not arguing that conformist is a w= ise pattern to follow. As Paul says in his email, and you as well, it most = likely leads to a shared kernel. But the moment you put an ACL between the = two models, they no longer are conforming. So with that conclusion, I'd say= conformist means direct usage? Tom On 17-3-2016 00:03, [email protected] [domaindrivendesign] wrote: > > Tom, > > I agree that there is only little advice on how to implement the concepts= of DDD. Most of the samples one can find are way to simple to be a guidanc= e for the questions arising from real world implementation problems. > > Let's for a moment assume that you are right. What are the consequences o= f A directly using entities and domain services of B? How to they align wi= th some of the more general goals of software architecture and DDD in parti= cular? > > > If A directly references entities of B, the B developers are no longer fr= ee to change their entities without the risk to break something in A. That = is not only a compile time problem. Usually A starts piling up assumptions = on the behavior of the B entities nobody outside of A is aware of. Changing= the behavior of an entity in B could break those assumptions causing bugs = in A that are hard to find because they show up much later. Choosing this p= ath deliberately could be called =E2=80=9EShared Kernel=E2=80=9C. Anyway, o= nly after some time you will probably call it =E2=80=9EBig Ball Of Mud=E2= =80=9C. > > > The idea of bounded contexts is to divide the whole system into several s= maller systems by setting up boundaries between them. There are good reason= s for that explained in the blue book. One that goes for the developers: It= gives you more freedom to change your stuff within the context without rai= sing the risk to break something outside. But you will have to respect the = boundaries=E2=80=A6 > > > Does that make sense? > > > Rgs, > > > Thomas > > >=20 --------------060801070605020302020108 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit <head> <style type="text/css"> <!-- /* start of attachment style */ .ygrp-photo-title{ clear: both; font-size: smaller; height: 15px; overflow: hidden; text-align: center; width: 75px; } div.ygrp-photo{ background-position: center; background-repeat: no-repeat; background-color: white; border: 1px solid black; height: 62px; width: 62px; } div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited { text-decoration: none; } div.attach-table div.attach-row { clear: both; } div.attach-table div.attach-row div { float: left; /* margin: 2px;*/ } p { clear: both; padding: 15px 0 3px 0; overflow: hidden; } div.ygrp-file { width: 30px; valign: middle; } div.attach-table div.attach-row div div a { text-decoration: none; } div.attach-table div.attach-row div div span { font-weight: normal; } div.ygrp-file-title { font-weight: bold; } /* end of attachment style */ --> </style> </head> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> </head> <body bgcolor="#FFFFFF" text="#000000"> <!-- |**|begin egp html banner|**| --> <br><br> <!-- |**|end egp html banner|**| --> <div class="moz-cite-prefix">Thomas,<br> <br> It most definitely makes sense and I was not arguing that conformist is a wise pattern to follow. As Paul says in his email, and you as well, it most likely leads to a shared kernel. But the moment you put an ACL between the two models, they no longer are conforming. So with that conclusion, I'd say conformist means direct usage?<br> <br> Tom<br> <br> <br> On 17-3-2016 00:03, <a class="moz-txt-link-abbreviated" href="mailto:[email protected]">[email protected]</a> [domaindrivendesign] wrote:<br> </div> <blockquote cite="mid:[email protected]" type="cite"> <span style="display:none"> </span> <div id="ygrp-text"> <p class="p1"><span class="s1">Tom,</span></p> <p class="p1"><span class="s1">I agree that there is only little advice on how to implement the concepts of DDD. Most of the samples one can find are way to simple to be a guidance for the questions arising from real world implementation problems. </span></p> <p class="p1"><span class="s1">Let's for a moment assume that you are right. What are the consequences of A directly using entities and domain services of B? How to they align with some of the more general goals of software architecture and DDD in particular?</span></p> <p class="p2"><span class="s1"></span><br> </p> <p class="p1"><span class="s1">If A directly references entities of B, the B developers are no longer free to change their entities without the risk to break something in A. That is not only a compile time problem. Usually A starts piling up assumptions on the behavior of the B entities nobody outside of A is aware of. Changing the behavior of an entity in B could break those assumptions causing bugs in A that are hard to find because they show up much later. Choosing this path deliberately could be called „Shared Kernel“. Anyway, only after some time you will probably call it „Big Ball Of Mud“.</span></p> <p class="p2"><span class="s1"></span><br> </p> <p class="p1"><span class="s1">The idea of bounded contexts is to divide the whole system into several smaller systems by setting up boundaries between them. There are good reasons for that explained in the blue book. One that goes for the developers: It gives you more freedom to change your stuff within the context without raising the risk to break something outside. But you will have to respect the boundaries…</span></p> <p class="p2"><span class="s1"></span><br> </p> <p class="p1"><span class="s1">Does that make sense?</span></p> <p class="p2"><span class="s1"></span><br> </p> <p class="p1"><span class="s1">Rgs,</span></p> <p class="p2"><span class="s1"></span><br> </p> <p class="p1"><span class="s1">Thomas</span></p> <div><br> </div> </div> <!-- end group email --> </blockquote> <br> <br> <!-- |**|begin egp html banner|**| --> <br> <br> <!-- |**|end egp html banner|**| --> <div width="1" style="color: white; clear: both;"/>__._,_.___</div> <div id="fromDMARC" style="clear:both; margin-top: 10px;"> <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> Posted by: Tom Eugelink <[email protected]> <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;"> </div> <!-- Start Recommendations --> <!-- End Recommendations --> <!-- |**|begin egp html banner|**| --> <img src="http://geo.yahoo.com/serv?s=97476590/grpId=8116923/grpspId=1705007181/msgId=24747/stime=1458282664" width="1" height="1"> <br> <!-- |**|end egp html banner|**| --> <!-- |**|begin egp html banner|**| --> <br> <!-- |**|begin egp html banner|**| --> <div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;"> <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; "><a href="https://groups.yahoo.com/neo/groups/domaindrivendesign/info;_ylc=X3oDMTJldWtxMjB0BF9TAzk3MzU5NzE0BGdycElkAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ1ODI4MjY2NA--" style="text-decoration: none;">Visit Your Group</a></span> <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;"> <li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;"> <span class="cat"><a href="https://groups.yahoo.com/neo/groups/domaindrivendesign/members/all;_ylc=X3oDMTJmNzJ0ZHA5BF9TAzk3MzU5NzE0BGdycElkAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzE0NTgyODI2NjQ-" style="text-decoration: none;">New Members</a></span> <span class="ct" style="color: #ff7900;">1</span> </li> </ul> </div> <div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;"> <a href="https://groups.yahoo.com/neo;_ylc=X3oDMTJkMGVjM3NnBF9TAzk3NDc2NTkwBGdycElkAzgxMTY5MjMEZ3Jwc3BJZAMxNzA1MDA3MTgxBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxNDU4MjgyNjY0" style="float: left;"><img src="http://l.yimg.com/ru/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a> <div style="color: #747575; float: right;"> • <a href="https://info.yahoo.com/privacy/us/yahoo/groups/details.html" style="text-decoration: none;">Privacy</a> • <a href="mailto:[email protected]?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> • <a href="https://info.yahoo.com/legal/us/yahoo/utos/terms/" style="text-decoration: none;">Terms of Use</a> </div> </div> <!-- |**|end egp html banner|**| --> </div> <!-- ygrp-msg --> <br> <!-- |**|end egp html banner|**| --> <div style="color: white; clear: both;"/>__,_._,___</div> </body> </html> --------------060801070605020302020108--