<?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: Cdh.SimpleRpc</title>
	<atom:link href="http://www.chrishowie.com/2009/10/15/cdh-simplerpc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/</link>
	<description>The best laid plans are in my other pants</description>
	<lastBuildDate>Thu, 01 Dec 2011 15:21:02 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Chris</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11455</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Sun, 18 Oct 2009 08:11:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11455</guid>
		<description>&gt; At a glance this seems pretty useful. My only immediate concerns would be the threading model… I could imagine some ugly surprises when a blocking call deadlocks (which presumably you are buffering the network traffic well enough that shouldn’t happen, but still)…

If a blocking call deadlocks, it will not affect any other calls.  On the end responding to the call, the method is run on a separate thread.  The worst-case scenario is that the server has an extra thread that doesn&#039;t terminate.  (And the other end, of course, never receives a response.)

&gt; Even if it is thread-safe, I would probably want an assertion that void functions never block.

Void functions are just as capable of throwing exceptions as any other function.  In cases where this is desired, they must block.

&gt; For those times when you want a bit more control I think it would also be useful to provide a &quot;traditional&quot; Async pattern as well: make it easy to follow the Begin*/End* pattern via IAsyncResult.

Because the proxy object is implementing a specific interface, this would not make sense as things stand.  One option might be that you can define such Begin/End methods on the interface and the proxy class will hook them up for you.

It&#039;s also not too hard to use a Func&lt;&gt; or Action&lt;&gt; and BeginInvoke/EndInvoke.

And yes, comments are always helpful.</description>
		<content:encoded><![CDATA[<p>> At a glance this seems pretty useful. My only immediate concerns would be the threading model… I could imagine some ugly surprises when a blocking call deadlocks (which presumably you are buffering the network traffic well enough that shouldn’t happen, but still)…</p>
<p>If a blocking call deadlocks, it will not affect any other calls.  On the end responding to the call, the method is run on a separate thread.  The worst-case scenario is that the server has an extra thread that doesn&#8217;t terminate.  (And the other end, of course, never receives a response.)</p>
<p>> Even if it is thread-safe, I would probably want an assertion that void functions never block.</p>
<p>Void functions are just as capable of throwing exceptions as any other function.  In cases where this is desired, they must block.</p>
<p>> For those times when you want a bit more control I think it would also be useful to provide a &#8220;traditional&#8221; Async pattern as well: make it easy to follow the Begin*/End* pattern via IAsyncResult.</p>
<p>Because the proxy object is implementing a specific interface, this would not make sense as things stand.  One option might be that you can define such Begin/End methods on the interface and the proxy class will hook them up for you.</p>
<p>It&#8217;s also not too hard to use a Func<> or Action<> and BeginInvoke/EndInvoke.</p>
<p>And yes, comments are always helpful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Max Battcher</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11453</link>
		<dc:creator>Max Battcher</dc:creator>
		<pubDate>Sun, 18 Oct 2009 04:59:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11453</guid>
		<description>At a glance this seems pretty useful. My only immediate concerns would be the threading model... I could imagine some ugly surprises when a blocking call deadlocks (which presumably you are buffering the network traffic well enough that shouldn&#039;t happen, but still)...

Even if it is thread-safe, I would probably want an assertion that void functions never block.

For those times when you want a bit more control (or conversely when you are making a very rare call and don&#039;t need to setup an additional, explicit thread) I think it would also be useful to provide a &quot;traditional&quot; Async pattern as well: make it easy to follow the Begin*/End* pattern via IAsyncResult. (Possibly you could do some Proxy casting magic to do this. Of course things like that will be easier when C# gets the dynamic keyword.)

Just a few thoughts, hopefully they are useful. :)</description>
		<content:encoded><![CDATA[<p>At a glance this seems pretty useful. My only immediate concerns would be the threading model&#8230; I could imagine some ugly surprises when a blocking call deadlocks (which presumably you are buffering the network traffic well enough that shouldn&#8217;t happen, but still)&#8230;</p>
<p>Even if it is thread-safe, I would probably want an assertion that void functions never block.</p>
<p>For those times when you want a bit more control (or conversely when you are making a very rare call and don&#8217;t need to setup an additional, explicit thread) I think it would also be useful to provide a &#8220;traditional&#8221; Async pattern as well: make it easy to follow the Begin*/End* pattern via IAsyncResult. (Possibly you could do some Proxy casting magic to do this. Of course things like that will be easier when C# gets the dynamic keyword.)</p>
<p>Just a few thoughts, hopefully they are useful. <img src='http://www.chrishowie.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11428</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Sat, 17 Oct 2009 00:15:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11428</guid>
		<description>Yeah, that looks pretty close.  I&#039;ll definitely take a look at it and see how it stacks up against my requirements.  I&#039;m especially interested in if it handles concurrent calls.</description>
		<content:encoded><![CDATA[<p>Yeah, that looks pretty close.  I&#8217;ll definitely take a look at it and see how it stacks up against my requirements.  I&#8217;m especially interested in if it handles concurrent calls.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Greene</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11427</link>
		<dc:creator>Michael Greene</dc:creator>
		<pubDate>Fri, 16 Oct 2009 22:23:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11427</guid>
		<description>It seems to me that something like Apache Thrift is what you&#039;re after.</description>
		<content:encoded><![CDATA[<p>It seems to me that something like Apache Thrift is what you&#8217;re after.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11420</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Fri, 16 Oct 2009 15:28:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11420</guid>
		<description>I&#039;m not sure what you&#039;re saying exactly, unless you mean I should do some binary serialization.  That&#039;s not something I&#039;ve ruled out entirely... I even wrote an AMF/AMF3 reader/writer recently that does very compact object serialization, but for right now I think XML is going to be the protocol of choice.  It is a bit verbose, yes, but it&#039;s very easy to debug and quite flexible.

Hey, my protocol isn&#039;t SOAP.  That&#039;s gotta be worth something.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure what you&#8217;re saying exactly, unless you mean I should do some binary serialization.  That&#8217;s not something I&#8217;ve ruled out entirely&#8230; I even wrote an AMF/AMF3 reader/writer recently that does very compact object serialization, but for right now I think XML is going to be the protocol of choice.  It is a bit verbose, yes, but it&#8217;s very easy to debug and quite flexible.</p>
<p>Hey, my protocol isn&#8217;t SOAP.  That&#8217;s gotta be worth something.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11410</link>
		<dc:creator>James</dc:creator>
		<pubDate>Fri, 16 Oct 2009 02:54:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11410</guid>
		<description>Never mind. &lt;args&gt; is what I meant... perhaps it&#039;ll go through this time.</description>
		<content:encoded><![CDATA[<p>Never mind. &lt;args&gt; is what I meant&#8230; perhaps it&#8217;ll go through this time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11409</link>
		<dc:creator>James</dc:creator>
		<pubDate>Fri, 16 Oct 2009 02:53:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11409</guid>
		<description>Hmm. The first &#039;5&#039; was meant to be &lt;a&gt; 5 &lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Hmm. The first &#8217;5&#8242; was meant to be <a> 5 </a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11408</link>
		<dc:creator>James</dc:creator>
		<pubDate>Fri, 16 Oct 2009 02:52:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11408</guid>
		<description>Out of curiosity, why did you go with XML if #2 was a concern? Something 5 can very easily be replaced with (say) a 4-bit type, 4-bit length or value (15 indicating a following base-128 integer length or value), and then the data, if you really desire arbitrary type support. 5 would end up as one byte. :)

Granted, TCP&#039;s enormous headers will probably dwarf that, but if you have a lot of updates that chatter may add up..</description>
		<content:encoded><![CDATA[<p>Out of curiosity, why did you go with XML if #2 was a concern? Something 5 can very easily be replaced with (say) a 4-bit type, 4-bit length or value (15 indicating a following base-128 integer length or value), and then the data, if you really desire arbitrary type support. 5 would end up as one byte. <img src='http://www.chrishowie.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Granted, TCP&#8217;s enormous headers will probably dwarf that, but if you have a lot of updates that chatter may add up..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11405</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Thu, 15 Oct 2009 23:22:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11405</guid>
		<description>I haven&#039;t looked into it too much, but I very much doubt it would meet my first criterion.</description>
		<content:encoded><![CDATA[<p>I haven&#8217;t looked into it too much, but I very much doubt it would meet my first criterion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jimmy</title>
		<link>http://www.chrishowie.com/2009/10/15/cdh-simplerpc/comment-page-1/#comment-11403</link>
		<dc:creator>Jimmy</dc:creator>
		<pubDate>Thu, 15 Oct 2009 23:04:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.chrishowie.com/?p=329#comment-11403</guid>
		<description>Have you considered WCF?</description>
		<content:encoded><![CDATA[<p>Have you considered WCF?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

