<?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: Can someone tell me why i shouldn&#8217;t drop WCF?</title> <atom:link href="http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/feed/" rel="self" type="application/rss+xml" /><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/</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: Blue Onion Software - Onion Peels Blog - Friday Links #8</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-757</link> <dc:creator>Blue Onion Software - Onion Peels Blog - Friday Links #8</dc:creator> <pubDate>Fri, 18 Jul 2008 15:38:14 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-757</guid> <description>[...] Can someone tell me why i shouldn’t drop WCF? - Interesting article on batching WCF service calls. [...]</description> <content:encoded><![CDATA[<p>[...] Can someone tell me why i shouldn’t drop WCF? &#8211; Interesting article on batching WCF service calls. [...]</p> ]]></content:encoded> </item> <item><title>By: Ayende Rahien</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-673</link> <dc:creator>Ayende Rahien</dc:creator> <pubDate>Mon, 14 Jul 2008 18:23:42 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-673</guid> <description>&gt; Ayende’s version of a service bus.Ayende doesn&#039;t have a service bus.
Ayende has several posts about approaches to batching, but not about building ESB.
Ayende is talking about himself in the 3rd person, and is really disturbed by it.</description> <content:encoded><![CDATA[<p>&gt; Ayende’s version of a service bus.</p><p>Ayende doesn&#8217;t have a service bus.<br
/> Ayende has several posts about approaches to batching, but not about building ESB.<br
/> Ayende is talking about himself in the 3rd person, and is really disturbed by it.</p> ]]></content:encoded> </item> <item><title>By: Nathan</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-669</link> <dc:creator>Nathan</dc:creator> <pubDate>Mon, 14 Jul 2008 16:51:20 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-669</guid> <description>We&#039;re using NServiceBus on our project instead of pure WCF, and we control all endpoints. Personally I find that the asynchronous (fire-and-forget) nature of the style of messaging NServiceBus promotes dramatically simplifies cross process communication even on smallish projects where all endpoints are under our control, because of the reduced coupling of the client and server and the ability to grow the system in unknown ways (for scaling or adding functionality) without much effort. The architecture is just so much more flexible (in my opinion) and doesn&#039;t really add complexity. Also, using an asynchronous messaging framework as the core of the messaging system doesn&#039;t preclude you from exposing operation specific, proxy-friendly WCF endpoints to external or internal partners as required, the service implementation can simply marshal such calls to the bus behind the scenes. Plus with an ESB you get the Pub/Sub message exchange pattern, which is required for an event driven system, and which you would have to build yourself in WCF.</description> <content:encoded><![CDATA[<p>We&#8217;re using NServiceBus on our project instead of pure WCF, and we control all endpoints. Personally I find that the asynchronous (fire-and-forget) nature of the style of messaging NServiceBus promotes dramatically simplifies cross process communication even on smallish projects where all endpoints are under our control, because of the reduced coupling of the client and server and the ability to grow the system in unknown ways (for scaling or adding functionality) without much effort. The architecture is just so much more flexible (in my opinion) and doesn&#8217;t really add complexity. Also, using an asynchronous messaging framework as the core of the messaging system doesn&#8217;t preclude you from exposing operation specific, proxy-friendly WCF endpoints to external or internal partners as required, the service implementation can simply marshal such calls to the bus behind the scenes. Plus with an ESB you get the Pub/Sub message exchange pattern, which is required for an event driven system, and which you would have to build yourself in WCF.</p> ]]></content:encoded> </item> <item><title>By: Davy Brion</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-668</link> <dc:creator>Davy Brion</dc:creator> <pubDate>Mon, 14 Jul 2008 14:26:31 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-668</guid> <description>Good points :)</description> <content:encoded><![CDATA[<p>Good points <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: Mark Stafford</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-666</link> <dc:creator>Mark Stafford</dc:creator> <pubDate>Mon, 14 Jul 2008 13:56:57 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-666</guid> <description>ESBs (the class of architecture which NServiceBus fits into) aren&#039;t so much about batching as they are about fire-and-forget.  Batching happens to be an artifact of that fundamental nature.  The principle of an ESB is to drop a message onto the wire and trust that the appropriate handler is or will be listening, and will eventually pick up and process that message.  Reply is not a concept in an ESB - rather, the handler would drop a new message (the &quot;reply&quot;) onto the wire and the new handler (the original source) would pick that message up and process it.If your requirement is batching, not an ESB, you&#039;re best off sticking with pure WCF and not amalgamating in Ayende&#039;s version of a service bus.  In short, an ESB puts a lot of unnecessary overhead on your app if all you need is batching  On the other hand, if what you need is the ability to simply fire off a message and eventually receive a response, an ESB may be the right answer.  If that doesn&#039;t make sense, spend some time reading up on ESBs and classic examples of where they are used.  It&#039;s highly unusual to see a need for an ESB in an environment where you control both server and client.</description> <content:encoded><![CDATA[<p>ESBs (the class of architecture which NServiceBus fits into) aren&#8217;t so much about batching as they are about fire-and-forget.  Batching happens to be an artifact of that fundamental nature.  The principle of an ESB is to drop a message onto the wire and trust that the appropriate handler is or will be listening, and will eventually pick up and process that message.  Reply is not a concept in an ESB &#8211; rather, the handler would drop a new message (the &#8220;reply&#8221;) onto the wire and the new handler (the original source) would pick that message up and process it.</p><p>If your requirement is batching, not an ESB, you&#8217;re best off sticking with pure WCF and not amalgamating in Ayende&#8217;s version of a service bus.  In short, an ESB puts a lot of unnecessary overhead on your app if all you need is batching  On the other hand, if what you need is the ability to simply fire off a message and eventually receive a response, an ESB may be the right answer.  If that doesn&#8217;t make sense, spend some time reading up on ESBs and classic examples of where they are used.  It&#8217;s highly unusual to see a need for an ESB in an environment where you control both server and client.</p> ]]></content:encoded> </item> <item><title>By: Davy Brion</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-661</link> <dc:creator>Davy Brion</dc:creator> <pubDate>Mon, 14 Jul 2008 05:30:40 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-661</guid> <description>Tony:it might be... it looks interesting, allthough i&#039;m not too happy about the following requirement:&quot;only messages sent from operations marked with TransactionScopeRequired = true and TransactionAutoComplete = true are considered for a batch&quot;Still, just from reading that i&#039;m not sure if it actually allows me to do the same thing as i do here:
http://davybrion.com/blog/2008/06/batching-wcf-calls/</description> <content:encoded><![CDATA[<p>Tony:</p><p>it might be&#8230; it looks interesting, allthough i&#8217;m not too happy about the following requirement:</p><p>&#8220;only messages sent from operations marked with TransactionScopeRequired = true and TransactionAutoComplete = true are considered for a batch&#8221;</p><p>Still, just from reading that i&#8217;m not sure if it actually allows me to do the same thing as i do here:<br
/> <a
href="http://davybrion.com/blog/2008/06/batching-wcf-calls/" rel="nofollow">http://davybrion.com/blog/2008/06/batching-wcf-calls/</a></p> ]]></content:encoded> </item> <item><title>By: Tony</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-658</link> <dc:creator>Tony</dc:creator> <pubDate>Mon, 14 Jul 2008 02:06:40 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-658</guid> <description>Davy,Not sure if this is what you are looking for:http://msdn.microsoft.com/en-us/library/ms788973.aspx</description> <content:encoded><![CDATA[<p>Davy,</p><p>Not sure if this is what you are looking for:</p><p><a
href="http://msdn.microsoft.com/en-us/library/ms788973.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms788973.aspx</a></p> ]]></content:encoded> </item> <item><title>By: Davy Brion</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-646</link> <dc:creator>Davy Brion</dc:creator> <pubDate>Sun, 13 Jul 2008 11:17:03 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-646</guid> <description>@Benny:I&#039;m not sure the specific service interfaces are really that much easier to use... With the approach i use, specific service interfaces still require you to pass in a ${OperationName}Request instance to each method and they return an ${OperationName}Response instance. If you publish the available request/reply types and you only need to provide one proxy type to access the service with some syntactical sugar to make it easy to use, i don&#039;t think it would be harder to understand or to use.And i agree with some of the advantages of WCF that you list... However, remote calls of any kind are expensive, so minimizing the amount of remote calls is really important to me, which is why i consider batching of operations as a must-have feature. That requirement is more important to me than the ones you list.@Bart:In situations where it&#039;s &#039;easy&#039; to define a coarse-grained interface then i wouldn&#039;t want to use batching either. I understand the importance of coarse-grained service interfaces and making sure service interfaces aren&#039;t chatty. But i often feel that these coarse-grained interfaces are somewhat influenced by the client&#039;s needs. Which should be avoided by a service because then there&#039;s in an implicit coupling of the service to the client. When another client needs to use that service, the coarse-grained interface might not be ideal for that client. In those cases, the ability to batch operations allows each client to go for the ideal usage scenario without having to modify the service.</description> <content:encoded><![CDATA[<p>@Benny:</p><p>I&#8217;m not sure the specific service interfaces are really that much easier to use&#8230; With the approach i use, specific service interfaces still require you to pass in a ${OperationName}Request instance to each method and they return an ${OperationName}Response instance. If you publish the available request/reply types and you only need to provide one proxy type to access the service with some syntactical sugar to make it easy to use, i don&#8217;t think it would be harder to understand or to use.</p><p>And i agree with some of the advantages of WCF that you list&#8230; However, remote calls of any kind are expensive, so minimizing the amount of remote calls is really important to me, which is why i consider batching of operations as a must-have feature. That requirement is more important to me than the ones you list.</p><p>@Bart:</p><p>In situations where it&#8217;s &#8216;easy&#8217; to define a coarse-grained interface then i wouldn&#8217;t want to use batching either. I understand the importance of coarse-grained service interfaces and making sure service interfaces aren&#8217;t chatty. But i often feel that these coarse-grained interfaces are somewhat influenced by the client&#8217;s needs. Which should be avoided by a service because then there&#8217;s in an implicit coupling of the service to the client. When another client needs to use that service, the coarse-grained interface might not be ideal for that client. In those cases, the ability to batch operations allows each client to go for the ideal usage scenario without having to modify the service.</p> ]]></content:encoded> </item> <item><title>By: Bart Czernicki</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-638</link> <dc:creator>Bart Czernicki</dc:creator> <pubDate>Sat, 12 Jul 2008 17:32:23 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-638</guid> <description>To me this is an interesting topic and it is one of those things why I think some architects spend too much time on plumbing rather than designing.Just recently finished a Business Intelligence application and I had the same issue tens of methods that can be called (even all of them):
- coupling some of the configuration/filtering methods together inside their own objects
- delay loading/calling when needed with an event driven model
- making the service an API (access to one of our spokes in a hub and spoke data warehouse/mart)
- off-load interactive work on the data structure on the clientTo me its a lot clearer with this design and especially with the fact that we deal with aggregating 500,000 - 2 million records on the fly.  I would never want to batch these calls.  I want to make these expensive calls only absolutely when necessary.</description> <content:encoded><![CDATA[<p>To me this is an interesting topic and it is one of those things why I think some architects spend too much time on plumbing rather than designing.</p><p>Just recently finished a Business Intelligence application and I had the same issue tens of methods that can be called (even all of them):<br
/> - coupling some of the configuration/filtering methods together inside their own objects<br
/> - delay loading/calling when needed with an event driven model<br
/> - making the service an API (access to one of our spokes in a hub and spoke data warehouse/mart)<br
/> - off-load interactive work on the data structure on the client</p><p>To me its a lot clearer with this design and especially with the fact that we deal with aggregating 500,000 &#8211; 2 million records on the fly.  I would never want to batch these calls.  I want to make these expensive calls only absolutely when necessary.</p> ]]></content:encoded> </item> <item><title>By: Benny Michielsen</title><link>http://davybrion.com/blog/2008/07/can-someone-tell-me-why-i-shouldnt-drop-wcf/comment-page-1/#comment-636</link> <dc:creator>Benny Michielsen</dc:creator> <pubDate>Sat, 12 Jul 2008 16:02:08 +0000</pubDate> <guid
isPermaLink="false">http://davybrion.com/blog/?p=168#comment-636</guid> <description>I&#039;m not up to par with WCF, I&#039;m actually looking into it at the moment. But here are my .02$.If your service layer is a front end for other applications, which you do not control, I&#039;d keep adding those specific services / service methods. They are just easier to understand than that one process method. Granted, if documented you could tell every consumer that they have to use the service with the process method.More important however, isn&#039;t one of the goals of WCF to have an abstraction on the underlying transport mechanism? You can host a service in several environments, turn features on and off(security, compression,...), just by changing the configuration files? I think that&#039;s one of the, if not the, most important reason to use WCF.</description> <content:encoded><![CDATA[<p>I&#8217;m not up to par with WCF, I&#8217;m actually looking into it at the moment. But here are my .02$.</p><p>If your service layer is a front end for other applications, which you do not control, I&#8217;d keep adding those specific services / service methods. They are just easier to understand than that one process method. Granted, if documented you could tell every consumer that they have to use the service with the process method.</p><p>More important however, isn&#8217;t one of the goals of WCF to have an abstraction on the underlying transport mechanism? You can host a service in several environments, turn features on and off(security, compression,&#8230;), just by changing the configuration files? I think that&#8217;s one of the, if not the, most important reason to use WCF.</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 1/14 queries in 0.007 seconds using disk: basic
Object Caching 474/475 objects using disk: basic
Content Delivery Network via Amazon Web Services: CloudFront: d18sni7re4ly7f.cloudfront.net

Served from: davybrion.com @ 2012-05-21 12:07:30 -->
