<?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: JSON-RPC vs. SOAP</title>
	<atom:link href="http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/feed/" rel="self" type="application/rss+xml" />
	<link>http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/</link>
	<description>cat /ryan/brain &#124; grep "blog post"</description>
	<pubDate>Thu, 08 Jan 2009 20:50:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Ryan</title>
		<link>http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/comment-page-1/#comment-1813</link>
		<dc:creator>Ryan</dc:creator>
		<pubDate>Mon, 01 Oct 2007 04:36:04 +0000</pubDate>
		<guid isPermaLink="false">http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/#comment-1813</guid>
		<description>Vish, yes...it's entirely possible to do without duplicating any code. I had started on an XML-RPC implementation at one point, but backed away since (at the time) there was no demand for it.</description>
		<content:encoded><![CDATA[<p>Vish, yes&#8230;it&#8217;s entirely possible to do without duplicating any code. I had started on an XML-RPC implementation at one point, but backed away since (at the time) there was no demand for it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vish</title>
		<link>http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/comment-page-1/#comment-1814</link>
		<dc:creator>Vish</dc:creator>
		<pubDate>Mon, 01 Oct 2007 04:09:21 +0000</pubDate>
		<guid isPermaLink="false">http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/#comment-1814</guid>
		<description>Hi Ryan,

This post was very informative. Enjoyed reading it. Is it possible to expose the same method in SOAP, JSON-RPC and XML-RPC. I develop in .NET where you decorate the method with [WebMethod] to expose it in a web service. Is it possible to expose the same web service and the methods inside in SOAP, JSON-RPC and XML-RPC. If it is not possible should the methods be duplicated three times to be exposed in SOAP, JSON-RPC and XML-RPC?

Thank You,
Vish
http://viswaug.wordpress.com</description>
		<content:encoded><![CDATA[<p>Hi Ryan,</p>
<p>This post was very informative. Enjoyed reading it. Is it possible to expose the same method in SOAP, JSON-RPC and XML-RPC. I develop in .NET where you decorate the method with [WebMethod] to expose it in a web service. Is it possible to expose the same web service and the methods inside in SOAP, JSON-RPC and XML-RPC. If it is not possible should the methods be duplicated three times to be exposed in SOAP, JSON-RPC and XML-RPC?</p>
<p>Thank You,<br />
Vish<br />
<a href="http://viswaug.wordpress.com" rel="nofollow">http://viswaug.wordpress.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adnan Siddiqi</title>
		<link>http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/comment-page-1/#comment-1812</link>
		<dc:creator>Adnan Siddiqi</dc:creator>
		<pubDate>Thu, 05 Apr 2007 06:18:38 +0000</pubDate>
		<guid isPermaLink="false">http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/#comment-1812</guid>
		<description>Hi Ryan Thanks for leaving a message on my blog. Ignore my ignorance but could you share some example of accessing yahoo mail API purely in  javascript without involving any backend scripting language?

Thanks</description>
		<content:encoded><![CDATA[<p>Hi Ryan Thanks for leaving a message on my blog. Ignore my ignorance but could you share some example of accessing yahoo mail API purely in  javascript without involving any backend scripting language?</p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Governor&#8217;s Monkchips &#187; links for 2007-04-02</title>
		<link>http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/comment-page-1/#comment-1811</link>
		<dc:creator>James Governor&#8217;s Monkchips &#187; links for 2007-04-02</dc:creator>
		<pubDate>Mon, 02 Apr 2007 23:46:40 +0000</pubDate>
		<guid isPermaLink="false">http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/#comment-1811</guid>
		<description>[...] ryan kennedy’s blog » JSON-RPC vs. SOAP Yahoo implements JSON-RPC for mail. (tags: JSON-RPC) [...]</description>
		<content:encoded><![CDATA[<p>[...] ryan kennedy’s blog » JSON-RPC vs. SOAP Yahoo implements JSON-RPC for mail. (tags: JSON-RPC) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan</title>
		<link>http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/comment-page-1/#comment-1809</link>
		<dc:creator>Ryan</dc:creator>
		<pubDate>Sun, 01 Apr 2007 17:11:53 +0000</pubDate>
		<guid isPermaLink="false">http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/#comment-1809</guid>
		<description>So, to digest your question a bit, why didn't we do REST? The short answer is in the description above: we had to support Oddpost. Additionally, we had to create some optimizations, namely in the form of the BatchExecute call. Call batching doesn't fit well into the REST model. We could have tried to really force things into GETs to get something RESTish, but at the end of the day it would have been some perverse, difficult to use and understand API.

To answer your other questions:

* No, the responses of our methods aren't very cacheable. To start out with, it's personal data. We have a quarter of a billion users. Unless you have a cache set up for a pretty small subset, your hit ratio is going to be pretty miserable. Additionally, given our inbound delivery rates, your mailbox is probably updating quite frequently, making message bodies one of the few pieces of data that aren't constantly updating. The actual benefit of caching is probably pretty low.

* As for error messages, it depends on how basic you're talking. You can easily distinguish success from error by checking for HTTP 200 vs. !200. If you want more detail than that, then you have to parse the response. The response will indicate who's fault it was (yours or mine) and what the underlying error code is.

* Additions of optional parameters to the methods won't break existing clients. Every method takes exactly one parameter. The parameter has numerous properties that indicate some facet of the execution of the method.

* No, you can't point a browser at the service and see something useful (unless you consider a "hey, where's my parameters" message useful).

I'm fully aware of the benefits of REST and sticking to HTTP as a protocol instead of using it merely as a transport. There were some conscious decisions that sent us down this road. Realize that this is the service we had to build internally to support the Oddpost acquisition, so we weren't exactly building from scratch.

I would love to see the community reach out and collectively tell us that they want REST. If I can get that kind of weight behind such a request, then it makes my job of selling it internally that much easier. I'd love to see us make a REST offering available.</description>
		<content:encoded><![CDATA[<p>So, to digest your question a bit, why didn&#8217;t we do REST? The short answer is in the description above: we had to support Oddpost. Additionally, we had to create some optimizations, namely in the form of the BatchExecute call. Call batching doesn&#8217;t fit well into the REST model. We could have tried to really force things into GETs to get something RESTish, but at the end of the day it would have been some perverse, difficult to use and understand API.</p>
<p>To answer your other questions:</p>
<p>* No, the responses of our methods aren&#8217;t very cacheable. To start out with, it&#8217;s personal data. We have a quarter of a billion users. Unless you have a cache set up for a pretty small subset, your hit ratio is going to be pretty miserable. Additionally, given our inbound delivery rates, your mailbox is probably updating quite frequently, making message bodies one of the few pieces of data that aren&#8217;t constantly updating. The actual benefit of caching is probably pretty low.</p>
<p>* As for error messages, it depends on how basic you&#8217;re talking. You can easily distinguish success from error by checking for HTTP 200 vs. !200. If you want more detail than that, then you have to parse the response. The response will indicate who&#8217;s fault it was (yours or mine) and what the underlying error code is.</p>
<p>* Additions of optional parameters to the methods won&#8217;t break existing clients. Every method takes exactly one parameter. The parameter has numerous properties that indicate some facet of the execution of the method.</p>
<p>* No, you can&#8217;t point a browser at the service and see something useful (unless you consider a &#8220;hey, where&#8217;s my parameters&#8221; message useful).</p>
<p>I&#8217;m fully aware of the benefits of REST and sticking to HTTP as a protocol instead of using it merely as a transport. There were some conscious decisions that sent us down this road. Realize that this is the service we had to build internally to support the Oddpost acquisition, so we weren&#8217;t exactly building from scratch.</p>
<p>I would love to see the community reach out and collectively tell us that they want REST. If I can get that kind of weight behind such a request, then it makes my job of selling it internally that much easier. I&#8217;d love to see us make a REST offering available.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Danny</title>
		<link>http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/comment-page-1/#comment-1810</link>
		<dc:creator>Danny</dc:creator>
		<pubDate>Sun, 01 Apr 2007 09:17:37 +0000</pubDate>
		<guid isPermaLink="false">http://unclehulka.com/ryan/blog/archives/2007/03/31/json-rpc-vs-soap/#comment-1810</guid>
		<description>I find it very strange that you're discussing the relative merits of these different formats while not addressing the more fundamental mismatch between the interface and the web. Essentially RPC eliminates several key benefits of using HTTP.

When talking of efficiency, are the responses of your getter methods transparently cacheable on the web? To understand an basic error message do you still have to parse the body of the message? If you decide to make a minor change to the method signature of one of your endpoints, would that break all existing clients? At a simple pragmatic level, can I point a web browser at the interface and see something useful? Can I post data into the system from a HTML form?

If the answer to any of these questions is no, I suggest checking out Paul Downey's &lt;a href="http://blog.whatfettle.com/2007/01/11/good-web-apis-are-just-web-sites/" rel="nofollow"&gt;Good Web APIs are just Web Sites&lt;/a&gt; and Mark Baker's &lt;a href="http://www.markbaker.ca/blog/2004/10/29/protocol-independence/" rel="nofollow"&gt;Protocol Independence&lt;/a&gt; diagram.</description>
		<content:encoded><![CDATA[<p>I find it very strange that you&#8217;re discussing the relative merits of these different formats while not addressing the more fundamental mismatch between the interface and the web. Essentially RPC eliminates several key benefits of using HTTP.</p>
<p>When talking of efficiency, are the responses of your getter methods transparently cacheable on the web? To understand an basic error message do you still have to parse the body of the message? If you decide to make a minor change to the method signature of one of your endpoints, would that break all existing clients? At a simple pragmatic level, can I point a web browser at the interface and see something useful? Can I post data into the system from a HTML form?</p>
<p>If the answer to any of these questions is no, I suggest checking out Paul Downey&#8217;s <a href="http://blog.whatfettle.com/2007/01/11/good-web-apis-are-just-web-sites/" rel="nofollow">Good Web APIs are just Web Sites</a> and Mark Baker&#8217;s <a href="http://www.markbaker.ca/blog/2004/10/29/protocol-independence/" rel="nofollow">Protocol Independence</a> diagram.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
