<?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: Why I Dislike Classic Or Typical WCF Usage</title> <atom:link href="http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/feed/" rel="self" type="application/rss+xml" /><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/</link> <description>inquisitive: adjective. given to inquiry, research, or asking questions; eager for knowledge; intellectually curious</description> <lastBuildDate>Sun, 20 May 2012 21:55:00 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>By: Using MEF in a Request/Response Service Layer &#171; DarioSantarelli.Blog(this);</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-104321</link> <dc:creator>Using MEF in a Request/Response Service Layer &#171; DarioSantarelli.Blog(this);</dc:creator> <pubDate>Fri, 30 Dec 2011 15:17:15 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-104321</guid> <description>[...] doesn’t share state with upper layers like the presentation layer). After reading Davy’s “Why I Dislike Classic Or Typical WCF Usage” , I was convinced to address myself to one service contract with one service operation, avoiding [...]</description> <content:encoded><![CDATA[<p>[...] doesn’t share state with upper layers like the presentation layer). After reading Davy’s “Why I Dislike Classic Or Typical WCF Usage” , I was convinced to address myself to one service contract with one service operation, avoiding [...]</p> ]]></content:encoded> </item> <item><title>By: Dan Barua</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-99236</link> <dc:creator>Dan Barua</dc:creator> <pubDate>Fri, 06 May 2011 10:06:00 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-99236</guid> <description> Interesting!In my last project I used a Javascript framework called ExtJS with Asp.Net MVC acting essentially as lightweight webservices serving up snippets of JSON. ExtJS has a package called ExtDirect. What ExtDirect does is build up a Javascript client proxy using reflection to gather information about all your Controllers and their Actions. Calls, which can be batched, are then made via the client proxies to a DirectController which then instantiates your controllers and dispatches requests to them.I was wondering if anyone had implemented something similar for WCF and here it is. I look forward to diving into it.</description> <content:encoded><![CDATA[<p> Interesting!</p><p>In my last project I used a Javascript framework called ExtJS with Asp.Net MVC acting essentially as lightweight webservices serving up snippets of JSON. ExtJS has a package called ExtDirect. What ExtDirect does is build up a Javascript client proxy using reflection to gather information about all your Controllers and their Actions. Calls, which can be batched, are then made via the client proxies to a DirectController which then instantiates your controllers and dispatches requests to them.</p><p>I was wondering if anyone had implemented something similar for WCF and here it is. I look forward to diving into it.</p> ]]></content:encoded> </item> <item><title>By: JT</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-47069</link> <dc:creator>JT</dc:creator> <pubDate>Wed, 14 Jul 2010 14:46:17 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-47069</guid> <description>&gt;yes, the WSDL contains all the possible contractsthat&#039;s great.&gt; typical WCF proxies are not generated with an interface and are not often used through an interface (unless you actually put in a bit of effort &gt; to do so).Normally you should extract an interface all the time, I consider that as best practice when working with WCF. Therefore it consider it easier to mock against an strongly-interface interface / contracts. In your case you need to know for example that HelloWorldRequest produces a HelloWorldResponse and this you cannot see in the contract. That is what I meant by knowledge of implementation details.In the end you put a facade in front of you fine-grained services (in agatha those are different request handlers). I programmed something similar building on WCF message contracts, basically the same goal in mind :P. But at the moment I have a deeper look into REST :)</description> <content:encoded><![CDATA[<p>&gt;yes, the WSDL contains all the possible contracts</p><p>that&#8217;s great.</p><p>&gt; typical WCF proxies are not generated with an interface and are not often used through an interface (unless you actually put in a bit of effort &gt; to do so).</p><p>Normally you should extract an interface all the time, I consider that as best practice when working with WCF. Therefore it consider it easier to mock against an strongly-interface interface / contracts. In your case you need to know for example that HelloWorldRequest produces a HelloWorldResponse and this you cannot see in the contract. That is what I meant by knowledge of implementation details.</p><p>In the end you put a facade in front of you fine-grained services (in agatha those are different request handlers). I programmed something similar building on WCF message contracts, basically the same goal in mind <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . But at the moment I have a deeper look into REST <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> </item> <item><title>By: Davy Brion</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-47041</link> <dc:creator>Davy Brion</dc:creator> <pubDate>Wed, 14 Jul 2010 12:39:50 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-47041</guid> <description>@JTyes, the WSDL contains all the possible contracts:
http://davybrion.com/blog/2010/05/consuming-an-agatha-service-from-a-non-agatha-aware-client/as for the stubbing/mocking being easier... typical WCF proxies are not generated with an interface and are not often used through an interface (unless you actually put in a bit of effort to do so).  If you have many proxies, you need to do that for each proxy.  With Agatha&#039;s request dispatchers, you don&#039;t need to do anything since they already implement an interface and you always use them through the interface</description> <content:encoded><![CDATA[<p>@JT</p><p>yes, the WSDL contains all the possible contracts:<br
/> <a
href="http://davybrion.com/blog/2010/05/consuming-an-agatha-service-from-a-non-agatha-aware-client/" rel="nofollow">http://davybrion.com/blog/2010/05/consuming-an-agatha-service-from-a-non-agatha-aware-client/</a></p><p>as for the stubbing/mocking being easier&#8230; typical WCF proxies are not generated with an interface and are not often used through an interface (unless you actually put in a bit of effort to do so).  If you have many proxies, you need to do that for each proxy.  With Agatha&#8217;s request dispatchers, you don&#8217;t need to do anything since they already implement an interface and you always use them through the interface</p> ]]></content:encoded> </item> <item><title>By: JT</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-47033</link> <dc:creator>JT</dc:creator> <pubDate>Wed, 14 Jul 2010 12:14:43 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-47033</guid> <description>I think the approach has definitely some advantages.
But you can do similar things by using a message routing service in WCF which routes the message to your fine-grained services based on the message (having one service as entry point for the others). In fact there is sample in the SDK. Apart from that: Let&#039;s publish that kind of service over HTTP. Does the WSDL contain all the possible contracts?Another question comes into my mind: Why is stubbing/mocking a generic interface easier than stubbing/mocking the fine-grained interfaces? In order to mock the generic interface you described, you need to have implementation knowledge of the service.I share your view of the disadvantages of regular WCF usage though. But my current preference is using a RESTful service design.</description> <content:encoded><![CDATA[<p>I think the approach has definitely some advantages.<br
/> But you can do similar things by using a message routing service in WCF which routes the message to your fine-grained services based on the message (having one service as entry point for the others). In fact there is sample in the SDK. Apart from that: Let&#8217;s publish that kind of service over HTTP. Does the WSDL contain all the possible contracts?</p><p>Another question comes into my mind: Why is stubbing/mocking a generic interface easier than stubbing/mocking the fine-grained interfaces? In order to mock the generic interface you described, you need to have implementation knowledge of the service.</p><p>I share your view of the disadvantages of regular WCF usage though. But my current preference is using a RESTful service design.</p> ]]></content:encoded> </item> <item><title>By: Consuming An Agatha Service From A Non-Agatha-Aware Client &#124; The Inquisitive Coder &#8211; Davy Brion&#39;s Blog</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-39132</link> <dc:creator>Consuming An Agatha Service From A Non-Agatha-Aware Client &#124; The Inquisitive Coder &#8211; Davy Brion&#39;s Blog</dc:creator> <pubDate>Fri, 14 May 2010 13:49:42 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-39132</guid> <description>[...] model is of course as bad as it always is with standard WCF (for more information, be sure to read: Why I Dislike Classic Or Typical WCF Usage) but if you’re willing to put up with it, then at least you [...]</description> <content:encoded><![CDATA[<p>[...] model is of course as bad as it always is with standard WCF (for more information, be sure to read: Why I Dislike Classic Or Typical WCF Usage) but if you’re willing to put up with it, then at least you [...]</p> ]]></content:encoded> </item> <item><title>By: Hey Microsoft, Our Databases Aren&#8217;t Services! &#124; The Inquisitive Coder &#8211; Davy Brion&#39;s Blog</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-25203</link> <dc:creator>Hey Microsoft, Our Databases Aren&#8217;t Services! &#124; The Inquisitive Coder &#8211; Davy Brion&#39;s Blog</dc:creator> <pubDate>Sun, 17 Jan 2010 17:46:17 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-25203</guid> <description>[...] consider that a benefit, though i can certainly understand why people would not want to deal with the pain of classic WCF services.&#160; RIA Services is simply a solution to the wrong [...]</description> <content:encoded><![CDATA[<p>[...] consider that a benefit, though i can certainly understand why people would not want to deal with the pain of classic WCF services.&#160; RIA Services is simply a solution to the wrong [...]</p> ]]></content:encoded> </item> <item><title>By: kilfour</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-23199</link> <dc:creator>kilfour</dc:creator> <pubDate>Mon, 14 Dec 2009 07:11:15 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-23199</guid> <description>@SonOfPirate
&lt;i&gt;Seems like a pretty good endorsement.&lt;/i&gt;
&#039;Seems&#039; being the keyword in above statement.
I&#039;m currently working on an application and I have a generated proxy in my project of almost 70.000 lines.
Why ? Because I have to send a request to that CRM service to update a status field every once in a blue moon.</description> <content:encoded><![CDATA[<p>@SonOfPirate<br
/> <i>Seems like a pretty good endorsement.</i><br
/> &#8216;Seems&#8217; being the keyword in above statement.<br
/> I&#8217;m currently working on an application and I have a generated proxy in my project of almost 70.000 lines.<br
/> Why ? Because I have to send a request to that CRM service to update a status field every once in a blue moon.</p> ]]></content:encoded> </item> <item><title>By: SonOfPirate</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-23198</link> <dc:creator>SonOfPirate</dc:creator> <pubDate>Mon, 14 Dec 2009 03:04:22 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-23198</guid> <description>For what it&#039;s worth, this is the model that Microsoft Dynamics uses for their web services in CRM (see CrmService).  Seems like a pretty good endorsement.</description> <content:encoded><![CDATA[<p>For what it&#8217;s worth, this is the model that Microsoft Dynamics uses for their web services in CRM (see CrmService).  Seems like a pretty good endorsement.</p> ]]></content:encoded> </item> <item><title>By: Arjan&#8217;s World &#187; LINKBLOG for Nov 18, 2009</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22986</link> <dc:creator>Arjan&#8217;s World &#187; LINKBLOG for Nov 18, 2009</dc:creator> <pubDate>Wed, 18 Nov 2009 16:05:50 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22986</guid> <description>[...] Service Layer (RRSL), i’d like to repeat the benefits of the RRSL that i stated in a previous post: [...]</description> <content:encoded><![CDATA[<p>[...] Service Layer (RRSL), i’d like to repeat the benefits of the RRSL that i stated in a previous post: [...]</p> ]]></content:encoded> </item> <item><title>By: Request/Response Service Layer Series &#124; The Inquisitive Coder &#8211; Davy Brion&#8217;s Blog</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22890</link> <dc:creator>Request/Response Service Layer Series &#124; The Inquisitive Coder &#8211; Davy Brion&#8217;s Blog</dc:creator> <pubDate>Sun, 08 Nov 2009 12:16:44 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22890</guid> <description>[...] wrote a post a couple of months ago to discuss what i dislike about typical/classic WCF services and how the [...]</description> <content:encoded><![CDATA[<p>[...] wrote a post a couple of months ago to discuss what i dislike about typical/classic WCF services and how the [...]</p> ]]></content:encoded> </item> <item><title>By: Benny Michielsen</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22209</link> <dc:creator>Benny Michielsen</dc:creator> <pubDate>Tue, 28 Jul 2009 05:45:56 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22209</guid> <description>And with classes I mean clients.</description> <content:encoded><![CDATA[<p>And with classes I mean clients.</p> ]]></content:encoded> </item> <item><title>By: Benny Michielsen</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22208</link> <dc:creator>Benny Michielsen</dc:creator> <pubDate>Tue, 28 Jul 2009 05:45:08 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22208</guid> <description>I&#039;m actually using this approach in one of my projects and like it a lot. For interoperability with other classes I&#039;d expose a service for that part of the system (i.e billing, customers,...) which internally will use the request handlers stuff as well.</description> <content:encoded><![CDATA[<p>I&#8217;m actually using this approach in one of my projects and like it a lot. For interoperability with other classes I&#8217;d expose a service for that part of the system (i.e billing, customers,&#8230;) which internally will use the request handlers stuff as well.</p> ]]></content:encoded> </item> <item><title>By: Charles Chen</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22207</link> <dc:creator>Charles Chen</dc:creator> <pubDate>Mon, 27 Jul 2009 20:23:47 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22207</guid> <description>This is an interesting solution.I&#039;m torn as it does solve a very real problem, but at the same time, it hinders discovery of operations.  To some extent, this is offset by the request classes, but there is a danger here of not knowing exactly how much data you need unless you create a request per call (whereas a method signature is much more explicit in terms of the parameterization).</description> <content:encoded><![CDATA[<p>This is an interesting solution.</p><p>I&#8217;m torn as it does solve a very real problem, but at the same time, it hinders discovery of operations.  To some extent, this is offset by the request classes, but there is a danger here of not knowing exactly how much data you need unless you create a request per call (whereas a method signature is much more explicit in terms of the parameterization).</p> ]]></content:encoded> </item> <item><title>By: Scott Banwart&#8217;s Blog &#187; Blog Archive &#187; Distributed Weekly 7</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22206</link> <dc:creator>Scott Banwart&#8217;s Blog &#187; Blog Archive &#187; Distributed Weekly 7</dc:creator> <pubDate>Fri, 24 Jul 2009 13:04:47 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22206</guid> <description>[...] Why I Dislike Classic Or Typical WCF Usage [...]</description> <content:encoded><![CDATA[<p>[...] Why I Dislike Classic Or Typical WCF Usage [...]</p> ]]></content:encoded> </item> <item><title>By: Davy Brion</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22201</link> <dc:creator>Davy Brion</dc:creator> <pubDate>Tue, 21 Jul 2009 19:49:40 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22201</guid> <description>@Alexgood to know :)if you ever run into problems with it or have any questions, just mail me</description> <content:encoded><![CDATA[<p>@Alex</p><p>good to know <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>if you ever run into problems with it or have any questions, just mail me</p> ]]></content:encoded> </item> <item><title>By: Alex Simkin</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22200</link> <dc:creator>Alex Simkin</dc:creator> <pubDate>Tue, 21 Jul 2009 19:33:22 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22200</guid> <description>@DavyPretty good. We have replaced Castle with Hiro and put our own implementation of KnowTypesProvider, but other than that, your code works just fine.</description> <content:encoded><![CDATA[<p>@Davy</p><p>Pretty good. We have replaced Castle with Hiro and put our own implementation of KnowTypesProvider, but other than that, your code works just fine.</p> ]]></content:encoded> </item> <item><title>By: Davy Brion</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22197</link> <dc:creator>Davy Brion</dc:creator> <pubDate>Tue, 21 Jul 2009 14:58:17 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22197</guid> <description>@Nirajthe complexity is isolated within the infrastructural classes... the actual request handlers are as simple as they can be, so i don&#039;t see why it would be over engineering ;)</description> <content:encoded><![CDATA[<p>@Niraj</p><p>the complexity is isolated within the infrastructural classes&#8230; the actual request handlers are as simple as they can be, so i don&#8217;t see why it would be over engineering <img
src='http://d18sni7re4ly7f.cloudfront.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p> ]]></content:encoded> </item> <item><title>By: Niraj</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22196</link> <dc:creator>Niraj</dc:creator> <pubDate>Tue, 21 Jul 2009 14:44:29 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22196</guid> <description>Hi Davy,Your design is interesting though I have my reservations about the value addition it does versus the complexity it brings. The main driving point for me in your arguments is - coarse / fine grained operations &amp; both have their own disadvantages. I would still prefer going for coarse grained the reason being they are more explicit, easy to understand &amp; consume. I agree it would add duplication of code (considering it might be duplicated for different clients / scenarios) but this duplication is more of instantiation &amp; packing (not any algorthmic one). I would have fine grained repositories which inturn would create data &amp; expose them through coarse grained contracts. Your solution looks like over engineering.</description> <content:encoded><![CDATA[<p>Hi Davy,</p><p> Your design is interesting though I have my reservations about the value addition it does versus the complexity it brings. The main driving point for me in your arguments is &#8211; coarse / fine grained operations &amp; both have their own disadvantages. I would still prefer going for coarse grained the reason being they are more explicit, easy to understand &amp; consume. I agree it would add duplication of code (considering it might be duplicated for different clients / scenarios) but this duplication is more of instantiation &amp; packing (not any algorthmic one). I would have fine grained repositories which inturn would create data &amp; expose them through coarse grained contracts. Your solution looks like over engineering.</p> ]]></content:encoded> </item> <item><title>By: Davy Brion</title><link>http://davybrion.com/blog/2009/07/why-i-dislike-classic-or-typical-wcf-usage/comment-page-1/#comment-22195</link> <dc:creator>Davy Brion</dc:creator> <pubDate>Tue, 21 Jul 2009 13:51:49 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=1453#comment-22195</guid> <description>@Alexah, cool! how has it worked out so far?</description> <content:encoded><![CDATA[<p>@Alex</p><p>ah, cool! how has it worked out so far?</p> ]]></content:encoded> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 2/24 queries in 0.016 seconds using disk: basic
Object Caching 656/657 objects using disk: basic
Content Delivery Network via Amazon Web Services: CloudFront: d18sni7re4ly7f.cloudfront.net

Served from: davybrion.com @ 2012-05-22 12:15:31 -->
