<?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: Protocol Buffers: Leaky RPC</title>
	<atom:link href="http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/feed/" rel="self" type="application/rss+xml" />
	<link>http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/</link>
	<description>Ask forgiveness, not permission.</description>
	<lastBuildDate>Sat, 19 May 2012 14:32:40 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: John "Z-Bo" Zabroski</title>
		<link>http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/comment-page-2/#comment-1246</link>
		<dc:creator>John "Z-Bo" Zabroski</dc:creator>
		<pubDate>Sun, 24 Aug 2008 07:14:45 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/?p=84#comment-1246</guid>
		<description><![CDATA[Steve,

Your message tunneling problem is covered in the classical systems design theory paper, &lt;a href=&quot;http://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.pdf&quot; rel=&quot;nofollow&quot;&gt;End-to-end Arguments in System Design&lt;/a&gt; by Saltzer et al.

Take care and best regards,
Z-Bo]]></description>
		<content:encoded><![CDATA[<p>Steve,</p>
<p>Your message tunneling problem is covered in the classical systems design theory paper, <a href="http://web.mit.edu/Saltzer/www/publications/endtoend/endtoend.pdf" rel="nofollow">End-to-end Arguments in System Design</a> by Saltzer et al.</p>
<p>Take care and best regards,<br />
Z-Bo</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jimmy Zhang</title>
		<link>http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/comment-page-2/#comment-1205</link>
		<dc:creator>Jimmy Zhang</dc:creator>
		<pubDate>Sun, 03 Aug 2008 00:41:44 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/?p=84#comment-1205</guid>
		<description><![CDATA[The problem I have with protocol buffer is that it mislead people on XML&#039;s performance characteristics.
XML doesn&#039;t have a performance issue. The issue belongs to XML parsers. I have written an article on this...

http://soa.sys-con.com/node/250512]]></description>
		<content:encoded><![CDATA[<p>The problem I have with protocol buffer is that it mislead people on XML&#8217;s performance characteristics.<br />
XML doesn&#8217;t have a performance issue. The issue belongs to XML parsers. I have written an article on this&#8230;</p>
<p><a href="http://soa.sys-con.com/node/250512" rel="nofollow">http://soa.sys-con.com/node/250512</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anonymous</title>
		<link>http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/comment-page-2/#comment-1187</link>
		<dc:creator>anonymous</dc:creator>
		<pubDate>Sun, 27 Jul 2008 23:07:00 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/?p=84#comment-1187</guid>
		<description><![CDATA[&lt;blockquote&gt;To do that, I’ve had to deal with Anonymous standing on his pedestal throwing belittling remarks. &lt;/blockquote&gt;

Standing on a pedestal - yes I do that sometimes ...

belittling - they were intended to be fun , sorry if you found them belittling ...

&lt;blockquote&gt;
Those remarks didn’t achieve much and shows his zealot nature. However, in between those useless remarks &lt;/blockquote&gt;
talk about belittling ... but I don&#039;t really care ... although I would disagree with you calling me a zealot, I wouldn&#039;t care to argue why ...

&lt;blockquote&gt;
His method of creating an architectural style is a step above systems architecture&lt;/blockquote&gt;
&lt;b&gt;&lt;i&gt;style&lt;/i&gt;&lt;/b&gt; (not his method) is a step above architecture  - read the original paper documenting what Style is - garlan and shaw (and those guys were the first to study software architecture )


&lt;blockquote&gt;
Next, REST is fundamentally not RPC&lt;/blockquote&gt;

You had earlier argued exactly the opposite iirc, so are we zeolots for asking you to just RTFM ?!?

&lt;blockquote&gt;
Hypermedia and the web is a fantastic solution for human/browser to computer communications. However, it offers only part of the solution in the area of computer to computer communications.&lt;/blockquote&gt;

Thats how fielding intended it. Fielding when he first came out with REST only intended REST to be for information services , which when you think about it are a HUGE part of services and are VERY important - if your information services are hidden/pain in the ass to use - your employees are gonna be strait jacketed. So first please don&#039;t &quot;belittle&quot; information services.

Second, it was only when everyone got us into WS-MESS that saner heads came together and said - look at that REST thing out there it seems to work nice for me , I am going to use it. This is not to say REST is complete and ready to use NOW . But as Martin Fowler/Jim Webber presented at infoQ, it is more like using the Agile method / evolutionary approach to distributed systems rather than the &quot;intelligent design&quot; that WS-* seems to favour.

The whole OSI 7 layer model is to me a pain to understand / use - I much prefer the TCP/IP 4 layer model. I can&#039;t really reply to what you have written as I have long ago forgotten what these Session layer / presentation layers are - and I don&#039;t see much point to the argument if I even find out.

&lt;blockquote&gt;
RPC/SOA/ORBS have, without the mature tools to assist the developer. &lt;/blockquote&gt;

As far as I can see, the only tools that developers really use (in WS-*) are the WSDL(with SOAP ofcourse) ones . Thats ALL. No one uses the other junk load of WS-* specs/ tools that vendors have come up with and are trying to sell.  And as a result, all those most certainly aren&#039;t mature.

&lt;blockquote&gt;
communications which involve blocking synchronous request/response semantics?&lt;/blockquote&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Barrier_(computer_science)&quot; rel=&quot;nofollow&quot;&gt;Barriers &lt;/a&gt;? :)]]></description>
		<content:encoded><![CDATA[<blockquote><p>To do that, I’ve had to deal with Anonymous standing on his pedestal throwing belittling remarks. </p></blockquote>
<p>Standing on a pedestal &#8211; yes I do that sometimes &#8230;</p>
<p>belittling &#8211; they were intended to be fun , sorry if you found them belittling &#8230;</p>
<blockquote><p>
Those remarks didn’t achieve much and shows his zealot nature. However, in between those useless remarks </p></blockquote>
<p>talk about belittling &#8230; but I don&#8217;t really care &#8230; although I would disagree with you calling me a zealot, I wouldn&#8217;t care to argue why &#8230;</p>
<blockquote><p>
His method of creating an architectural style is a step above systems architecture</p></blockquote>
<p><b><i>style</i></b> (not his method) is a step above architecture  &#8211; read the original paper documenting what Style is &#8211; garlan and shaw (and those guys were the first to study software architecture )</p>
<blockquote><p>
Next, REST is fundamentally not RPC</p></blockquote>
<p>You had earlier argued exactly the opposite iirc, so are we zeolots for asking you to just RTFM ?!?</p>
<blockquote><p>
Hypermedia and the web is a fantastic solution for human/browser to computer communications. However, it offers only part of the solution in the area of computer to computer communications.</p></blockquote>
<p>Thats how fielding intended it. Fielding when he first came out with REST only intended REST to be for information services , which when you think about it are a HUGE part of services and are VERY important &#8211; if your information services are hidden/pain in the ass to use &#8211; your employees are gonna be strait jacketed. So first please don&#8217;t &#8220;belittle&#8221; information services.</p>
<p>Second, it was only when everyone got us into WS-MESS that saner heads came together and said &#8211; look at that REST thing out there it seems to work nice for me , I am going to use it. This is not to say REST is complete and ready to use NOW . But as Martin Fowler/Jim Webber presented at infoQ, it is more like using the Agile method / evolutionary approach to distributed systems rather than the &#8220;intelligent design&#8221; that WS-* seems to favour.</p>
<p>The whole OSI 7 layer model is to me a pain to understand / use &#8211; I much prefer the TCP/IP 4 layer model. I can&#8217;t really reply to what you have written as I have long ago forgotten what these Session layer / presentation layers are &#8211; and I don&#8217;t see much point to the argument if I even find out.</p>
<blockquote><p>
RPC/SOA/ORBS have, without the mature tools to assist the developer. </p></blockquote>
<p>As far as I can see, the only tools that developers really use (in WS-*) are the WSDL(with SOAP ofcourse) ones . Thats ALL. No one uses the other junk load of WS-* specs/ tools that vendors have come up with and are trying to sell.  And as a result, all those most certainly aren&#8217;t mature.</p>
<blockquote><p>
communications which involve blocking synchronous request/response semantics?</p></blockquote>
<p><a href="http://en.wikipedia.org/wiki/Barrier_(computer_science)" rel="nofollow">Barriers </a>? :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jack Gates</title>
		<link>http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/comment-page-2/#comment-1184</link>
		<dc:creator>Jack Gates</dc:creator>
		<pubDate>Sun, 27 Jul 2008 11:57:37 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/?p=84#comment-1184</guid>
		<description><![CDATA[After so many posts,O.K. We reach here: Depends, trade off as all of arguments. :)))))). But we indeed learn much from many of the posts.]]></description>
		<content:encoded><![CDATA[<p>After so many posts,O.K. We reach here: Depends, trade off as all of arguments. :)))))). But we indeed learn much from many of the posts.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric Newcomer</title>
		<link>http://steve.vinoski.net/blog/2008/07/13/protocol-buffers-leaky-rpc/comment-page-2/#comment-1179</link>
		<dc:creator>Eric Newcomer</dc:creator>
		<pubDate>Fri, 25 Jul 2008 22:07:23 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/?p=84#comment-1179</guid>
		<description><![CDATA[Man my finger is sore from scrolling through all these comments!

Seriously, great stuff Steve.  I wrote a blog entry about taking into account the human element in software abstractions - i.e. the impact on productivity and development cost by making it easier for people to do things like distributed computing.  I would argue that sometimes this is more important than purely technical considerations such as performance or clean code.

But I completely agree about the main point - which as I understand it is being sure to use the right tool for the right job, and not just blindly using RPC because it&#039;s convenient.

I have a couple of other more detailed comments that I thought I&#039;d add to the discussion.

On the definition of RPC - using RFC 707 is a bit like using the SOAP specification to define SOAP.  I mean that there&#039;s often a difference between theory and practice, and what we complain about with SOAP (myself included, despite the fact people are getting value from it) is that the spec isn&#039;t implemented correctly.  If you read the SOAP and WSDL specifications - the latest versions, especially, you would think they are very RESTful.  But no one implements the RESTful bits - they tend to focus on the RPC style (as you have said, IONA has been as guilty of this as anyone despite our efforts to lobby for implementing the document oriented style).

I don&#039;t want to go into a huge digression on this, but to me this is a great example of a kind of innovator&#039;s dilemma, or a side effect of one.  When we talk with our customers about SOAP, WSDL, etc. they tend to say something like &quot;if you want me to use that, it has to be just as performant, reliable, secure etc. as what we already have.&quot;

This of course entirely misses the point, since what&#039;s important are the application requirements, not the technology used to develop the application.  As you have pointed out many times, a RESTful approach could as easily meet many if not all enterprise application requirements. But (as you have also pointed out) this would require a change in thinking that a lot of people seem unwilling to tackle.

Another minor comment - the inability of the industry to solve the data type mapping problem does not in itself mean that the RPC mechanism is useless.  It is true that interoperability decreases in proportion to the complexity and number of data types involved, but that doesn&#039;t mean RPCs aren&#039;t useful.

It is interesting to read about Erlang, REST, and explicit programming for distributed computing as a kind of historical advance.  When RPCs first came out, we viewed them as a technological advance over the dominant style of the day, which was P2P (LU6.2 was the leader - and man, no one wanted to program that if they could avoid it).

But I also take the point that you are going to get better results for many types of distributed applications by explicitly programming.  And I am also very impressed by what I&#039;ve been reading about your Erlang work. 

I don&#039;t really think of RPC = transparent distribution.  I think of RPC as a programming model.  By definition people know they are doing remote calls because they have to create some kind of interface definition, compile proxies and stubs, link them into their applications, etc.

When I think about the big picture of distributed computing, it seems like there will always be some number of applications for which RPC is a better fit, and some number of applications for which asynchronous messaging is a better fit.  One of the big problems I think we all have is that there is so much overlap in what can be done using either approach.  I have a rule of thumb for this that depends on the significance of the reply. If the reply to a message needs to indicate whether or not the database update was performed, for example, RPC is a better fit. If the reply simply needs to indicate that the message was received, then asynchronous messaging is a better fit.

I know the above is kind of impressionistic, and not very precise.  I suppose the point is to think about the tradeoffs and not just try to use one or the other for everything.]]></description>
		<content:encoded><![CDATA[<p>Man my finger is sore from scrolling through all these comments!</p>
<p>Seriously, great stuff Steve.  I wrote a blog entry about taking into account the human element in software abstractions &#8211; i.e. the impact on productivity and development cost by making it easier for people to do things like distributed computing.  I would argue that sometimes this is more important than purely technical considerations such as performance or clean code.</p>
<p>But I completely agree about the main point &#8211; which as I understand it is being sure to use the right tool for the right job, and not just blindly using RPC because it&#8217;s convenient.</p>
<p>I have a couple of other more detailed comments that I thought I&#8217;d add to the discussion.</p>
<p>On the definition of RPC &#8211; using RFC 707 is a bit like using the SOAP specification to define SOAP.  I mean that there&#8217;s often a difference between theory and practice, and what we complain about with SOAP (myself included, despite the fact people are getting value from it) is that the spec isn&#8217;t implemented correctly.  If you read the SOAP and WSDL specifications &#8211; the latest versions, especially, you would think they are very RESTful.  But no one implements the RESTful bits &#8211; they tend to focus on the RPC style (as you have said, IONA has been as guilty of this as anyone despite our efforts to lobby for implementing the document oriented style).</p>
<p>I don&#8217;t want to go into a huge digression on this, but to me this is a great example of a kind of innovator&#8217;s dilemma, or a side effect of one.  When we talk with our customers about SOAP, WSDL, etc. they tend to say something like &#8220;if you want me to use that, it has to be just as performant, reliable, secure etc. as what we already have.&#8221;</p>
<p>This of course entirely misses the point, since what&#8217;s important are the application requirements, not the technology used to develop the application.  As you have pointed out many times, a RESTful approach could as easily meet many if not all enterprise application requirements. But (as you have also pointed out) this would require a change in thinking that a lot of people seem unwilling to tackle.</p>
<p>Another minor comment &#8211; the inability of the industry to solve the data type mapping problem does not in itself mean that the RPC mechanism is useless.  It is true that interoperability decreases in proportion to the complexity and number of data types involved, but that doesn&#8217;t mean RPCs aren&#8217;t useful.</p>
<p>It is interesting to read about Erlang, REST, and explicit programming for distributed computing as a kind of historical advance.  When RPCs first came out, we viewed them as a technological advance over the dominant style of the day, which was P2P (LU6.2 was the leader &#8211; and man, no one wanted to program that if they could avoid it).</p>
<p>But I also take the point that you are going to get better results for many types of distributed applications by explicitly programming.  And I am also very impressed by what I&#8217;ve been reading about your Erlang work. </p>
<p>I don&#8217;t really think of RPC = transparent distribution.  I think of RPC as a programming model.  By definition people know they are doing remote calls because they have to create some kind of interface definition, compile proxies and stubs, link them into their applications, etc.</p>
<p>When I think about the big picture of distributed computing, it seems like there will always be some number of applications for which RPC is a better fit, and some number of applications for which asynchronous messaging is a better fit.  One of the big problems I think we all have is that there is so much overlap in what can be done using either approach.  I have a rule of thumb for this that depends on the significance of the reply. If the reply to a message needs to indicate whether or not the database update was performed, for example, RPC is a better fit. If the reply simply needs to indicate that the message was received, then asynchronous messaging is a better fit.</p>
<p>I know the above is kind of impressionistic, and not very precise.  I suppose the point is to think about the tradeoffs and not just try to use one or the other for everything.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
