﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>MrObvious commented on Review: Microsoft N Layer App Sample, Part I</title><description>I don't suppose you actually opened the guide, which in fact states when you should NOT use this approach?</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment82</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment82</guid><pubDate>Thu, 03 Nov 2011 18:00:22 GMT</pubDate></item><item><title>william simons  commented on Review: Microsoft N Layer App Sample, Part I</title><description>I really wished you had approached this from a different angle
If you did not like the code in this book than please just show me other books and articles that can benefit me. I personally love the thought of domain development and yes prism and unity. I really believe when you are talking about ddd
than that's when disagreements always start. I do applaud microsoft for at least starting to put something down to try to help the developer. Ayende, Please realize I believe it is never too late to learn. That's why, I challenge developers who truly care and want to help people to write books(dont tell me it cant be done,People have climbed mountains so yes getting a book published can be done) At the very least top developers can write ddd .net code to help people over the internet. So yes If something makes you upset than it's up to you to give feedback to microsoft or write your own code to improve it.                          </description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment81</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment81</guid><pubDate>Fri, 02 Sep 2011 02:39:22 GMT</pubDate></item><item><title>Arnis Lapsa commented on Review: Microsoft N Layer App Sample, Part I</title><description>@Sergio

-"In N-Layered Domain-Oriented Architecture you cannot find anything like this"

take a look at ayende`s "part-iv-ioc-ftw" http://bit.ly/o3NnLM
it's not about calling IoC directly from domain entity, it's about calling IoC directly in general.
normally you want to use constructor injection.

2nd thing is about abstracting IoC itself (IoCFactory class).
it makes no sense unless you are building re-usable framework. that isn't the case.

argument that "you will be able to switch container lately to another one" is weak because there should be 1 place only where you talk to container - at so called composition root (application entry point, in mvc it's usually controller factory). therefore - creation of an abstraction just to abstract away one method call is yet another overkill.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment80</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment80</guid><pubDate>Fri, 08 Jul 2011 10:37:46 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>@Arnis, the sample of the article you reference is an antipattern because the call to the IoC framework is done within a Domain Entity. In N-Layered Domain-Oriented Architecture you cannot find anything like this. The calls to IoC Framework are done only on entry-points of the app. The thing is that I think that Ayende says that at this entry.points the resolve call should be  resolved directly by the factory instead of having to call to the factory to obtain the abstraction of the IoC who will resolve our request. Ok that's right you avoid one step and make it more simple, but id doesn't change nothing on the architecture. The project didn't use any antipattern neither before this change nor after.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment79</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment79</guid><pubDate>Tue, 05 Jul 2011 12:46:49 GMT</pubDate></item><item><title>Arnis Lapsa commented on Review: Microsoft N Layer App Sample, Part I</title><description>@Sergio
take some time and read this article thoroughly: http://bit.ly/a7lU76</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment78</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment78</guid><pubDate>Mon, 04 Jul 2011 10:01:42 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>I understand, you agree with the factory but you don't like the extra abstraction for the container when its code can be simply within the factory. Yes you're right, but it doesn't makes a big difference on the sample architecture. In fact originally when I was even  more ignorant than now, when I saw it for first time It reinforced on me the idea that this project had Microsoft technologies but I could change it in a very easy way. I don't think it is a big sin.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment76</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment76</guid><pubDate>Sun, 03 Jul 2011 19:52:32 GMT</pubDate></item><item><title>Mike commented on Review: Microsoft N Layer App Sample, Part I</title><description>So they've reinvented Java?</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment75</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment75</guid><pubDate>Sun, 03 Jul 2011 19:27:47 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Sergio,
MVC Controllers, WCF services, as I said, everywhere.
You don't call IoC from places that run code that you usually touch. You get _one_ location in the application to call the container, other than that, it is forbidden.
</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment74</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment74</guid><pubDate>Sun, 03 Jul 2011 19:23:39 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>I believe that in NLayerApp the only place where they call to the container is within WCF Services methods (and MVC controllers in V1.0), not everywhere, like I think you say, except within the Unit Tests, when testing every layer independently.
In fact, they do as you say, calling the Unity IoC container only from the app-server entry points (WCF or MVC) and then starting the DI object graphs from there, using dependencies based on constructors down to the last layer.
Regarding the topic about abstracting the container, they already changed that on the V2.0 in spite of that I prefer to use an abstraction. Maybe at the beginning you need to take a shower XD but now I'm totally used to it and  avoids me any change in all the unit tests when I call the IoC Framework.
You can argue that maybe is too much to use IoC in Unit-Tests. Personally I prefer it in order to check the lifecycle mechanism and mappings I have coded.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment73</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment73</guid><pubDate>Sun, 03 Jul 2011 17:13:07 GMT</pubDate></item><item><title>Bil Simser commented on Review: Microsoft N Layer App Sample, Part I</title><description>Jumbo Shrimp

I threw up in my mouth a little when I looked at the solution. ZOMG. Abstraction on top of abstraction wrapped in abstraction surrounded by a little abstraction.

Ugh. I need a shower.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment72</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment72</guid><pubDate>Sun, 03 Jul 2011 11:47:54 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Sergio,
I am not really sure where to start answering you. 
I have a lot of posts about IoC that you might want to read up on: http://ayende.com/blog/tags/ioc

Put simply, IoC is about _inversion_ of control, about "don't call us, we'll call you".
If you are explicitly calling the IoC container anywhere except very deep in your infrastructure, you are doing it wrong.
For example, in an MVC application, the only place where the IoC is exposed is in the controller factory, never anywhere else.

If you do it right, you don't have to worry about abstracting it, because there is no one using it!
</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment71</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment71</guid><pubDate>Sat, 02 Jul 2011 23:27:47 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>I'm one of those maybe LOL idiots who has copied and pasted the project, thanks guys for your disqualifying adjectives. I did it this some months ago and now the project is different from the original. I have detected bottlenecks that doesn't  fit with my scenario and also improvements. However I have also found some overengineering sollutions proposed in the project (due to it is used for a very simple domain) that are perfect for my solution. The best was I dind't need to undesrstand any complex scenario to undestand the purpose of this solutions just because when I used them on my domain was easy to know if they fit on it or not.

An example: Ayende in one of his posts say the following regarding the  the IoC abstraction.
"Yes, they abstracted the Inversion of Control Container. I think that if you need to do that, it is pretty clear that you don’t really get what IoC is all about."
Not many reasons within your words, the idiots as my won't be able to catch it. I suppose you mean is useless an abstraction because it doesn't allows you to use all the features of an specific  IoC framework. Yes that's right, but as all of us know that because we have read DDD gurus books, this is the disadvantage of using an abstraction of an specific technology, the advantage is to be ready for the change of IoC framework.. In fact for my project it helped to me to change easily in the middle of the work to a different IoC which offer features that fit better with my scenario and that is compatible with more platforms. To be honest I needed some extra methods in my IoC abstraction for allowing an architecture of distributed modules for registering the IoC mappings and lifecycle control but this changes dind't affected a line in the domain code I had written. The idea is to have an abstraction that cover the features you need from an IoC framework. In fact if you change to another IoC you will do it because it offer the same feature an more, so you will need to add but not modify the abstraction, this comment is also valid for the Aende's post about the ILogger abstraction in the project.
The point here is that if Ayende were the author of DDD-Nlayered Architecture project he would have discarded the use of an abstraction for IoC. Thus, me as a learner would have lost the possibility of taking this decision because he took it for me and I will have lost this opportunity to learn.
 
I conclusion, what we have here is two different but reasoned points of view. What I cannot see is any reason for maiking a review in those  disqualifyng strong terms.

</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment70</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment70</guid><pubDate>Sat, 02 Jul 2011 12:21:35 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Sntimacnet,
DDD is not a concept that is about repositories and UoW!
It is an approach for software design, not a set of coding patterns that you blindly follow.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment69</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment69</guid><pubDate>Fri, 01 Jul 2011 22:41:01 GMT</pubDate></item><item><title>Santimacnet commented on Review: Microsoft N Layer App Sample, Part I</title><description>I have read the guide and my point of view and I agree that this N-Layer DDD Architecture Guide is not necessary in RAD projects and small apps architecture.

However, this guide is 100% valid for complex applications with large volume of business rules and a long life cycle management.

I think we should keep in mind that this guide and sample application are designed to show how implement Domain-Oriented patterns using .NET, Repositories, UoW, IoC, Entities/Aggregates, Domain Services, etc. 

I agree with the comments of Tim Cromarty when he says "its an Educational example, not a real world system".

Regards.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment68</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment68</guid><pubDate>Fri, 01 Jul 2011 22:37:45 GMT</pubDate></item><item><title>David commented on Review: Microsoft N Layer App Sample, Part I</title><description>Rob Conery did an overview of this app too:  http://wekeroad.com/post/7102729511/a-simple-example-thats-incredibly-complex</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment67</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment67</guid><pubDate>Fri, 01 Jul 2011 14:30:24 GMT</pubDate></item><item><title>Steve commented on Review: Microsoft N Layer App Sample, Part I</title><description>@Sergio,

Against my better judgement I'm responding to you.

1) Yes, Ayende is not famous due to respect he has either paid or not paid to other peoples work.  I guess you're asking why he didn't post his comments to the codeplex forum posts?  Well, he has written 10 posts on the subject with images, not really something the codeplex comment engine could handle

2) In a review, there is no rule to show the "good and the bad things", a review is a critique, that is all.   Not sure why he is "biased", it's not like he has his own DDD sample out there, again he was asked to review the application.  Not sure why that isn't clear by now.  

3) I know exactly what CodePlex is, but when something comes from Microsoft, it better be held to a higher standard than something I can hack up over a weekend.  Sorry, them's the breaks, Microsoft continues to fall flat on their face when it comes to these sort of things, then they act all hurt and surprised when it happens.  

Whether you think it should or not, this code WILL be held up by developers all over the world as the way to do DDD.  Inexperienced (or lazy) developers go to these sites and copy and paste like crazy.  It wouldn't surprise me if this code is already being added to real world projects. This happens all the time, from the sh!tty Oxite project, to the thousands of poorly written MSDN samples, if it comes from Redmond it is treated as gospel by a very large portion of the .NET community.  They don't say "well, maybe this is Microsoft's first crack at it, maybe I'll not look at it for guidance, even though it's labelled as guidance."

</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment66</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment66</guid><pubDate>Thu, 30 Jun 2011 21:07:34 GMT</pubDate></item><item><title>SteveR commented on Review: Microsoft N Layer App Sample, Part I</title><description>@Sergio: out of curiosity can I ask: have you read the Eric Evans book that basically defines what Domain Driven Design is? The sub-title of the book is "Tackling Complexity in the Heart of Software". The point is that the patterns in the book are only applicable when you have a complex domain as their intent is to help you manage that complexity. So how can a sample demonstrate the benefits of DDD patterns when it has none of that complexity? In fact, how do you even know if the sample is a good implementation of those patterns? An implementation can only be good if it demonstrably solves problems arising out of a complex domain, right?

If you're truly interested in learning about software architecture then can I suggest that you could do worse than listen to what Ayende has to say on the subject. Dismissing what he has to say just because he's being critical isn't the way to learn anything. 

Cheers.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment65</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment65</guid><pubDate>Thu, 30 Jun 2011 17:53:34 GMT</pubDate></item><item><title>KP commented on Review: Microsoft N Layer App Sample, Part I</title><description>Which part of KISS did you or did you not understand LOL</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment64</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment64</guid><pubDate>Thu, 30 Jun 2011 17:28:00 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>1) Ayende, are you saying I'm lying? Incredible. I don't want to hurt your ego but it is completely true I saw a tweet referencing this post.
2) Well, in my opinion by now you don't have said nothing that supports your strong statements. We will see on your cheered future posts.
3) Yes, but if you know MSDN you see clearly that this project doesn't fit very well there, in MSDN should there are only absolutely true documentation. And this project is an evolving prototype It's natural place is Codeplex.

Thanks for the github url, I'm very impressed by the projects you have hosted there. The point is these projects doesn't means you are always right in all your valuations specially at this topic just because you arem't being able to put in the place of an unexperienced programmer/architect who needs this kind of simple and at the same time modulated samples to learn.
When I have more time I will check the samples you have there.
Thank you</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment63</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment63</guid><pubDate>Thu, 30 Jun 2011 16:51:56 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Sergio,
http://github.com/ayende</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment62</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment62</guid><pubDate>Thu, 30 Jun 2011 16:00:13 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Sergio,

1) If you don't know me, what are you doing on this blog? How did you got here?
2) I didn't find anything worthwhile to speak about the codebase. I think is it ugly and wrongheaded approach.
3) Do you know what _shows up in MSDN_ is?
</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment61</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment61</guid><pubDate>Thu, 30 Jun 2011 15:59:43 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>Ayende Rahien can you give me the url of your github. After reading DDD N-Layer App book.and practising with its architecture I feel I can have a bit of criteria to valuate your work.  At the end of the day it seems they achieve its purpose: from VB6 spaghetti code to DDD in only a few months. It doesn't sounds bad.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment60</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment60</guid><pubDate>Thu, 30 Jun 2011 15:34:15 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>Steve Said:
1) Ayende is plenty "famous" in the .NET community already
I didn't know Ayende, sorry. I suppose he is not famous thanks to his respect for the work of others. If he didn't want popularity he would have written in the discussion forum his feedback. There a lot of the requests and complains poste are taken into account and in fact are improvements of the new release

2) He was asked to review it
Ok. In a review you have to show the good and the bad things. However he shows disagree with everything and doesn't talk about the good things a lot of people have seem in this project. It is a totally biased review,

3) If it isn't completely, why would Microsoft put it out there?
Do you know what codeplex is? Do you know what are iterations and look for community feedback?

To point 3), when will Microsoft learn that they get held to a higher standard when they put out work like this. They are the mothership, so while what they release doesn't need to be perfect, it needs to be as close to perfect as possible. Hasn't Oxite, et al taught them that yet? The fact that it hasn't is a bit disturbing

It is clear you don't want to understand the purpose of the project. To be perfect they would need to provide a version for each scenario. Furthermore if ir were perfect it should include a lot of complex scenarios eventhough then their will lose their truly objective that is TO TEACH </description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment59</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment59</guid><pubDate>Thu, 30 Jun 2011 15:23:23 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Anthony,
Exactly!
Even more, I built solutions to complex problems, so I know what good ones look like.
I can't say that my solutions were _simple_, but they were an order of magnitude _simpler_ then this.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment58</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment58</guid><pubDate>Thu, 30 Jun 2011 13:44:52 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Sergio,
Doing so would be:
* Unnecessary
* Unethical

You might want to wait to see the rest of the series to figure out what is going on in here.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment57</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment57</guid><pubDate>Thu, 30 Jun 2011 13:43:18 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part I</title><description>Sergio,
You may look at my github account for a lot of code that I have available.
I don't know a perfect example, but I can tell you on one pretty horrible one.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment56</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment56</guid><pubDate>Thu, 30 Jun 2011 13:41:07 GMT</pubDate></item><item><title>Steve commented on Review: Microsoft N Layer App Sample, Part I</title><description>@Sergio Navarro

1) Ayende is plenty "famous" in the .NET community already
2) He was asked to review it
3) If it isn't completely, why would Microsoft put it out there?

To point 3), when will Microsoft learn that they get held to a higher standard when they put out work like this.  They are the mothership, so while what they release doesn't need to be perfect, it needs to be as close to perfect as possible.  Hasn't Oxite, et al taught them that yet?  The fact that it hasn't is a bit disturbing.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment55</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment55</guid><pubDate>Thu, 30 Jun 2011 13:30:43 GMT</pubDate></item><item><title>Anthony commented on Review: Microsoft N Layer App Sample, Part I</title><description>The problems with samples is that they try to show a solution to complex problems (which are of necessity complex solutions) , and do so with toy, simple problems that are more easily understood. So the solution looks more complex than is needed for the problem presented - it is, but that's not the point.

As always, you need to know if the complexity will help you break down the problem that you do have, or you'll just end up with accidental complexity hindering you.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment54</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment54</guid><pubDate>Thu, 30 Jun 2011 11:07:31 GMT</pubDate></item><item><title>Sergey Shishkin commented on Review: Microsoft N Layer App Sample, Part I</title><description>The worst thing one can do with a pattern is to apply it without the context. This architectural guidance aims to answer a wrong question "What can we actually do with all that technology MS just built?" instead of "What is the most cheap/maintainable/simple way of solving particular business problems?". No business problem - no need for technology to solve it! It's not a guidance, it's a marketing bullsh*t.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment53</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment53</guid><pubDate>Thu, 30 Jun 2011 10:18:11 GMT</pubDate></item><item><title>Sergio Navarro commented on Review: Microsoft N Layer App Sample, Part I</title><description>Maybe what you want is to obtain popularity complaining about this project in order to advertise your posts talking about improvements. This is not bad, at the end you are contributing to the comunity, the point is it is not fair to attack the hard work of others only because it is not complete.</description><link>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment52</link><guid>http://ayende.com/19457/review-microsoft-n-layer-app-sample-part-i#comment52</guid><pubDate>Thu, 30 Jun 2011 09:17:06 GMT</pubDate></item></channel></rss>