﻿<?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>Scooletz commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>The 'manager' hell - turning every part of an application into a manager of something is one of the worst design mistakes one can make. If you consider naming sth like that, try to find out a few more alternatives, like ILogger in this example and prove that 'manager' is the best. In 99% you cannot and you should swap the name,</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment20</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment20</guid><pubDate>Sun, 03 Jul 2011 13:40:22 GMT</pubDate></item><item><title>Chris Wright commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>A tracing API lets you get metrics about your service, and in a way that is a lot more convenient than interpreting logs. It lets you profile in production, a bit, so you can alarm when your average latency is over threshold, or track the number of recoverable errors, or see what time of day your service is hit most often.

Trace data should always be graphable. It's rarely going to help you diagnose a problem, but might point one out to you.

The API they outline is pretty ugly for tracing and horrible for logging.

(And they've already changed it to be somewhat better.)</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment19</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment19</guid><pubDate>Sat, 02 Jul 2011 15:16:06 GMT</pubDate></item><item><title>tobsen commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>Common.Logging ftw!</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment18</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment18</guid><pubDate>Sat, 02 Jul 2011 07:37:14 GMT</pubDate></item><item><title>Steve Py commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>The IOC usage is off-topic, though I am insterested in Oren's future comments on it. Frankly that usage isn't IOC, it's turned it into a Global Registry. I've had to fight against anti-pattern abuses of containers like this frequently. However, using a container as a registry isn't all bad. For legacy applications and setter injection it can be practical and elegant. But it does require discipline so that the container isn't making appearances "all _over_ the _place_" as iwayneo points out.

Back on topic that logging implementation is complete crap. It doesn't abstract logging providers, and that they would have released code that merely logged an exception message is ridiculous. Granted it's not bound to be a primary detail in their architecture but if they cut corners on the small stuff it doesn't leave me very confident that the important stuff will be demonstrated well.

Frankly I'm sick of investigating new technologies and while looking for practical examples, finding nothing but trivial, non-relevant examples of how they can be implemented. So do bash away at their examples. Maybe, just maybe they will read it and actually provide a suitable sample for their next silver bullet.</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment17</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment17</guid><pubDate>Sat, 02 Jul 2011 03:57:18 GMT</pubDate></item><item><title>Alois Kraus commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>I would keep error logging and tracing separate. As outlined here: Logging is not Tracing: http://geekswithblogs.net/akraus1/archive/2009/06/21/132968.aspx

The usage of a real tracing library is a must if you want to follow your application flow with automatic tracing of thrown exceptions. You do not want to turn this fully on or you will drown in GB of output but in case of sporadic errors you can enable it to get the full history.

http://geekswithblogs.net/akraus1/archive/2010/07/04/140761.aspx

Yours,
  Alois Kraus
</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment16</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment16</guid><pubDate>Fri, 01 Jul 2011 21:54:32 GMT</pubDate></item><item><title>Arnis Lapsa commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>My favorite thing so far is project Domain.Core. It overlaps with term core domain what Eric Evans is speaking about. Only - he means most important and valuable domain logic as opposed to boring (e.g. ISQL interface) but most referenced infrastructure stuff. I think that pretty much reflects sample project main problem.</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment15</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment15</guid><pubDate>Fri, 01 Jul 2011 15:31:17 GMT</pubDate></item><item><title>iwayneo commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>@Jonathan Holland

Aop in .net is easy. its the fact that they are calling on the IOC directly. the class should not know anything about the IoC - there is no need for it.

More spaghetti mess from MS basically</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment14</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment14</guid><pubDate>Fri, 01 Jul 2011 15:03:55 GMT</pubDate></item><item><title>Jonathan Holland commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>I can somewhat understand why they are using the IOC container to retrieve the logger (Though I don't understand why you need a LogFactory class).

Logging, being a cross cutting concern, can be somewhat noisy if you are using constructor injection, 

Setter injection is cleaner here, though a lot of people don't like setter injection in general.

I think the cleanest way to inject a log provider dependency is something along the lines of Springs aspects, though I don't know if there is anything in the .NET world that works like that.
</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment13</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment13</guid><pubDate>Fri, 01 Jul 2011 14:33:56 GMT</pubDate></item><item><title>Ayende Rahien commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>Kash,
I have contacted the team when I wrote those posts, and gave them early access to them.
I am not really surprised that the issues that you see here are fixed, but I consider this to be more a case of the issues being fixed because they were found rather than being fixed independently.</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment12</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment12</guid><pubDate>Fri, 01 Jul 2011 13:48:57 GMT</pubDate></item><item><title>Jeff Sternal commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>@Iker
If the rest of Ayende's recommendations are as good as these and the team follows all of them, everyone wins.</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment11</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment11</guid><pubDate>Fri, 01 Jul 2011 13:26:19 GMT</pubDate></item><item><title>Daniel Lidström commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>A bit off-topic, but I love the Future Posts countdown! It would be nice, though, if it would be smarter and say "on monday" instead of "3 days from now".</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment10</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment10</guid><pubDate>Fri, 01 Jul 2011 12:52:55 GMT</pubDate></item><item><title>GeeBee commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>Whilst I take the point that the issue has been fixed I find it incredible that it was even in there in the first place, this is simple stuff that is being done badly.  Also looked at the "fixes", (and i've not looked elsewhere) but having ILogFactory is odd, isn't that what your container is for?!  Maybe there is a valid reason but...</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment9</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment9</guid><pubDate>Fri, 01 Jul 2011 11:50:58 GMT</pubDate></item><item><title>iwayneo commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>&gt; so quickly that this post is totally irrelevant.

@Iker

it's so riddled with nasty code it will forever be relevant.</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment8</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment8</guid><pubDate>Fri, 01 Jul 2011 11:50:49 GMT</pubDate></item><item><title>Danthar commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>That IoCFactory.Instance.CurrentContainer is scary as hell.... and actually, for a big part, it suffers from the same issues as the ITraceManager. What if I want to use Autofac and use some of the Resolve overloads?</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment7</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment7</guid><pubDate>Fri, 01 Jul 2011 11:47:11 GMT</pubDate></item><item><title>Iker commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>So... The team behind DDD has fixed a design error so quickly that this post is totally irrelevant... I sounds like it is usefull to keep an eye in a project with a team that is so resposible and  when problems arise.

Regards.</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment6</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment6</guid><pubDate>Fri, 01 Jul 2011 11:43:40 GMT</pubDate></item><item><title>iwayneo commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>I love the way MS put out code to "show how it's done" - and they reference the IoC _all_ _over_ _the_ _place_

Anti-pattern HELL!!!</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment5</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment5</guid><pubDate>Fri, 01 Jul 2011 11:35:40 GMT</pubDate></item><item><title>Kash commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>The first two arguments with some sense. However, they are already fixed in version 2. I do not find too much weight on them to make as much noise</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment4</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment4</guid><pubDate>Fri, 01 Jul 2011 11:20:34 GMT</pubDate></item><item><title>James_2JS commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>@Jhon
But when was the changeset committed??
http://microsoftnlayerapp.codeplex.com/SourceControl/changeset/changes/63507
Committed On:	Thu Jun 30 2011 at 5:25 PM

Ayende had this post sat on the queue way before then!</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment3</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment3</guid><pubDate>Fri, 01 Jul 2011 09:41:57 GMT</pubDate></item><item><title>Jhon commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>@Ayende

Although it may seem heavy, I say it again you do not make sense (only if you are looking to harm) is to review fixed wrong code...

http://microsoftnlayerapp.codeplex.com/SourceControl/changeset/view/63507#1100076

http://microsoftnlayerapp.codeplex.com/SourceControl/changeset/view/63507#1100077</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment2</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment2</guid><pubDate>Fri, 01 Jul 2011 09:16:46 GMT</pubDate></item><item><title>Justin A commented on Review: Microsoft N Layer App Sample, Part III&amp;ndash;Abstraction is as abstraction does</title><description>What annoys me the most is that he's -not- using NLog ;)

/me ducks, weaves and hides.

Ayende - u also didn't mention ELMAH in that post. First thing to do when u first add an MVC app (because webforms SHOULD be dead - don't deny it folks) is to NuGet ELMAH &amp; your fav IOC.

/me shivers at the day (if i get enough $$$) to get Ayende to code review my art.</description><link>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment1</link><guid>http://ayende.com/28673/review-microsoft-n-layer-app-sample-part-iii-abstraction-is-as-abstraction-does#comment1</guid><pubDate>Fri, 01 Jul 2011 09:07:43 GMT</pubDate></item></channel></rss>