<?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: WS-DeadParrot</title>
	<atom:link href="http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/</link>
	<description>News, opinion, and fresh thinking for web developers and designers. The official podcast of sitepoint.com.</description>
	<lastBuildDate>Sun, 22 Nov 2009 11:54:05 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: bonefry</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16121</link>
		<dc:creator>bonefry</dc:creator>
		<pubDate>Tue, 21 Mar 2006 19:02:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16121</guid>
		<description>&lt;blockquote&gt;It’s rant time again (apologies—move along unless you’re feeling fiesty). It’s that REST vs. SOAP thing.&lt;/blockquote&gt;
I forgive you this time :) ... this subject needs to be debated</description>
		<content:encoded><![CDATA[<blockquote><p>It’s rant time again (apologies—move along unless you’re feeling fiesty). It’s that REST vs. SOAP thing.</p></blockquote>
<p>I forgive you this time :) &#8230; this subject needs to be debated</p>]]></content:encoded>
	</item>
	<item>
		<title>By: bonefry</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16119</link>
		<dc:creator>bonefry</dc:creator>
		<pubDate>Tue, 21 Mar 2006 19:01:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16119</guid>
		<description>Just to tell my oppinion ... RPC is usefull, and until we invent a simpler sollution to SOAP ... SOAP will not be replaced by REST, although we could see REST being adopted more.

In today&#039;s frameworks, in JAVA/.NET and even Python and PHP ... it is a super-simple task to create a web service ... you just define some methods and annotate them as being web-services.
The point is that ... the underlying technology (SOAP in this case) is transparent and could be replaced, if needed, with CORBA / XML-RPC / whatever new technology comes along ... that&#039;s why abstractions *ARE* usefull.</description>
		<content:encoded><![CDATA[<p>Just to tell my oppinion &#8230; RPC is usefull, and until we invent a simpler sollution to SOAP &#8230; SOAP will not be replaced by REST, although we could see REST being adopted more.</p>
<p>In today&#8217;s frameworks, in JAVA/.NET and even Python and PHP &#8230; it is a super-simple task to create a web service &#8230; you just define some methods and annotate them as being web-services.<br />
The point is that &#8230; the underlying technology (SOAP in this case) is transparent and could be replaced, if needed, with CORBA / XML-RPC / whatever new technology comes along &#8230; that&#8217;s why abstractions *ARE* usefull.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: BerislavLopac</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16102</link>
		<dc:creator>BerislavLopac</dc:creator>
		<pubDate>Tue, 21 Mar 2006 13:17:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16102</guid>
		<description>And to make something clear: I am &lt;em&gt;not&lt;/em&gt; against SOAP, on the contrary. It&#039;s just that I see that Web services have great use in everyday work, and I don&#039;t think they&#039;re going anywhere soon. REST is a wonderful concept, but WS&#039;s are more than adequate for their basic purpose.</description>
		<content:encoded><![CDATA[<p>And to make something clear: I am <em>not</em> against SOAP, on the contrary. It&#8217;s just that I see that Web services have great use in everyday work, and I don&#8217;t think they&#8217;re going anywhere soon. REST is a wonderful concept, but WS&#8217;s are more than adequate for their basic purpose.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: BerislavLopac</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16101</link>
		<dc:creator>BerislavLopac</dc:creator>
		<pubDate>Tue, 21 Mar 2006 13:15:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16101</guid>
		<description>Harry, this is all completely besides the point. You say that SOAP ads a layer on top of HTTP, but &lt;em&gt;anything&lt;/em&gt; adds a layer on top of HTTP -- HTTP, RESTful or not, only defines &lt;em&gt;how&lt;/em&gt; will the transfer be initiated and performed, but not in which form the data will be transfered. When we use REST, we still have to decide how to wrap that data for HTTP (which is a text-based protocol) to be able to transfer it at all.

&lt;blockquote&gt;At that point SOAP’s basic type encoding doesn’t help you—you need to add your own XSD to register this rule.&lt;/blockquote&gt;

There is no way that I would ever delegate it to the transfer protocol itself to validate the data it transfers. The data should be validated either at the source or at the receiving end; in between it&#039;s just transferred.

Web services are really nothing more than glorified RPC&#039;s, and should be viewed as nothing more than remote routines, and treated that way.</description>
		<content:encoded><![CDATA[<p>Harry, this is all completely besides the point. You say that SOAP ads a layer on top of HTTP, but <em>anything</em> adds a layer on top of HTTP &#8212; HTTP, RESTful or not, only defines <em>how</em> will the transfer be initiated and performed, but not in which form the data will be transfered. When we use REST, we still have to decide how to wrap that data for HTTP (which is a text-based protocol) to be able to transfer it at all.</p>
<blockquote><p>At that point SOAP’s basic type encoding doesn’t help you—you need to add your own XSD to register this rule.</p></blockquote>
<p>There is no way that I would ever delegate it to the transfer protocol itself to validate the data it transfers. The data should be validated either at the source or at the receiving end; in between it&#8217;s just transferred.</p>
<p>Web services are really nothing more than glorified RPC&#8217;s, and should be viewed as nothing more than remote routines, and treated that way.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: HarryF</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16100</link>
		<dc:creator>HarryF</dc:creator>
		<pubDate>Tue, 21 Mar 2006 13:01:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16100</guid>
		<description>&lt;blockquote&gt;
Harry, if I understood you correctly, you have listed several technologies and standards (REST, custom XML, XSchema, Relax-NG, XSLT…) as a “better” replacement for a single standard (SOAP, with or without WSDL).
&lt;/blockquote&gt;

Well first you&#039;re taking bits of what I said out of context but I understand the point.

Guess there&#039;s a short view and a long view here;

The short view... the technologies I&#039;m talking about and generally well known and most people will be working with some or all in a typical web application. SOAP doesn&#039;t mean you can forget XML and certainly not XML schema. In fact there&#039;s a good chance if you&#039;d be using XSLT somewhere as well - many of the web service development platforms encourage you to work with &quot;XML views&quot; on your database and use XSLT between that and your &quot;web service layer&quot;.

So really you&#039;re often talking about using all these technologies anyway and the decision is then with or without SOAP.

The long view... generalizing (and probably badly) there&#039;s basically two mindsets to development these days.

One is the &quot;plug and play&quot; way - putting together components from different vendors, with help from a mega-IDE, and staying well away from the details - if you&#039;re doing J2EE or .NET, this is probably what you&#039;re doing. Perhaps the key point of view here is &quot;one size fits all&quot;.

The other is the &quot;get intimate&quot; way, where you get deeply involved in the details and regard most development tasks as a special case that needs you personal attention - one size cannot fit all - this is more the dynamic language way and the primary tool is a text editor of some sort. 

I&#039;d argue REST fits the latter view of development and SOAP the former.

And I think it&#039;s safe to say Yahoo, Google, flickr, del.icio.us and most any of the big online names use the latter approach.

&lt;blockquote&gt;
For one, I absolutely agree with you that the principles behid REST are valuable, and I would like to see it well implemented. However, the current state of the affair is that classic Web services have a more stable foothold in the development environments.
&lt;/blockquote&gt;

Yes and no. That REST has a label is almost a problem in itself. Really we&#039;re talking about stuff people already use, in particular HTTP and perhaps XML. You can find HTTP clients and server for most any language and platform you care to name, plus tools for logging, debugging, authentication etc. XML in general is also well done.

But there are some areas where best practice and strategy is not well defined. For example how do you publish all your URLs in a manner which is easy to discover - perhaps &lt;a href=&quot;http://www.google.com/webmasters/sitemaps/docs/en/protocol.html&quot; rel=&quot;nofollow&quot;&gt;this&lt;/a&gt; is the nearest thing to &quot;WSDL for REST&quot; (although you could use WSDL itself to REST).

But turning the guns of SOAP / WS-*, although there&#039;s plenty of tools and implementations, my experience is it either &quot;just works&quot; and everyone breathes a sigh of relief or it doesn&#039;t work, and you&#039;re in for a debugging nightmare. Because SOAP et al adds extra layers on top of HTTP, it gets very hard to see what&#039;s really happening. Add to that that SOAP is trying to be everything to everyone means that what one person does with SOAP (e.g. document / literal style) may not be well supported by an implementation on another platform.

&lt;blockquote&gt;
Fow two, REST defines only half of the story, i.e. the way how to transfer your data and RPC. However, there is still no standard for the actual format of the transferred information—only in these comments we have mentioned several, from custom XML to YAML to JSON to PHP serialization. The advantage of SOAP is that it uses a standard, even if not technically ideal, part of the HTTP protocol for information transfer, and has a standard, well-defined format of that information—SOAP.
&lt;/blockquote&gt;

OK here lies part of SOAPs illusion - there&#039;s basically two styles of encoding with SOAP - encoded and literal and it seems you&#039;re talking about the encoded style (nice &lt;a href=&quot;http://gavincornwell.wordpress.com/2005/04/06/rpc-vs-document-literal/&quot; rel=&quot;nofollow&quot;&gt;summary here&lt;/a&gt; BTW).

In encoded style, you have a one-to-one correspondance between native data types (string, int) and tags in SOAP (xsd:string, xsd:int).

Now that&#039;s fine, but what, as stepz seems to require up there, do you do if you want a rule to apply to a particular string (e.g. a username) that it&#039;s between, say, 6 and 15 characters and that the characters are alpha-numeric?

At that point SOAP&#039;s basic type encoding doesn&#039;t help you - you need to add your own XSD to register this rule. At the point you need to start doing this, encoded SOAP loses some it&#039;s value - generally if you want to validate some tags, you want to validate all tags - at that point you way as well have gone with document style SOAP and you&#039;re basically in the same position as you&#039;d be if you defined your XML format from scratch, and you start wondering what the value of SOAP was in all this. And remind me what was the benefit of SOAP vs. XML-RPC again?

&lt;blockquote&gt;
And for three, as I argued above, SOAP has been implemented in virtually every development tool and platform out there, making use of Web services as simple as (in PHP, from a recent real-life example I had):
&lt;/blockquote&gt;

I&#039;d still say you can&#039;t beat the example above for simplicity.  Similar can be done with &quot;plain old XML&quot; like &lt;a href=&quot;http://developer.yahoo.net/php/samples/parse/parseSIMPLEXML.txt&quot; rel=&quot;nofollow&quot;&gt;this&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<blockquote><p>
Harry, if I understood you correctly, you have listed several technologies and standards (REST, custom XML, XSchema, Relax-NG, XSLT…) as a “better” replacement for a single standard (SOAP, with or without WSDL).
</p></blockquote>
<p>Well first you&#8217;re taking bits of what I said out of context but I understand the point.</p>
<p>Guess there&#8217;s a short view and a long view here;</p>
<p>The short view&#8230; the technologies I&#8217;m talking about and generally well known and most people will be working with some or all in a typical web application. SOAP doesn&#8217;t mean you can forget XML and certainly not XML schema. In fact there&#8217;s a good chance if you&#8217;d be using XSLT somewhere as well &#8211; many of the web service development platforms encourage you to work with &#8220;XML views&#8221; on your database and use XSLT between that and your &#8220;web service layer&#8221;.</p>
<p>So really you&#8217;re often talking about using all these technologies anyway and the decision is then with or without SOAP.</p>
<p>The long view&#8230; generalizing (and probably badly) there&#8217;s basically two mindsets to development these days.</p>
<p>One is the &#8220;plug and play&#8221; way &#8211; putting together components from different vendors, with help from a mega-IDE, and staying well away from the details &#8211; if you&#8217;re doing J2EE or .NET, this is probably what you&#8217;re doing. Perhaps the key point of view here is &#8220;one size fits all&#8221;.</p>
<p>The other is the &#8220;get intimate&#8221; way, where you get deeply involved in the details and regard most development tasks as a special case that needs you personal attention &#8211; one size cannot fit all &#8211; this is more the dynamic language way and the primary tool is a text editor of some sort. </p>
<p>I&#8217;d argue REST fits the latter view of development and SOAP the former.</p>
<p>And I think it&#8217;s safe to say Yahoo, Google, flickr, del.icio.us and most any of the big online names use the latter approach.</p>
<blockquote><p>
For one, I absolutely agree with you that the principles behid REST are valuable, and I would like to see it well implemented. However, the current state of the affair is that classic Web services have a more stable foothold in the development environments.
</p></blockquote>
<p>Yes and no. That REST has a label is almost a problem in itself. Really we&#8217;re talking about stuff people already use, in particular HTTP and perhaps XML. You can find HTTP clients and server for most any language and platform you care to name, plus tools for logging, debugging, authentication etc. XML in general is also well done.</p>
<p>But there are some areas where best practice and strategy is not well defined. For example how do you publish all your URLs in a manner which is easy to discover &#8211; perhaps <a href="http://www.google.com/webmasters/sitemaps/docs/en/protocol.html" rel="nofollow">this</a> is the nearest thing to &#8220;WSDL for REST&#8221; (although you could use WSDL itself to REST).</p>
<p>But turning the guns of SOAP / WS-*, although there&#8217;s plenty of tools and implementations, my experience is it either &#8220;just works&#8221; and everyone breathes a sigh of relief or it doesn&#8217;t work, and you&#8217;re in for a debugging nightmare. Because SOAP et al adds extra layers on top of HTTP, it gets very hard to see what&#8217;s really happening. Add to that that SOAP is trying to be everything to everyone means that what one person does with SOAP (e.g. document / literal style) may not be well supported by an implementation on another platform.</p>
<blockquote><p>
Fow two, REST defines only half of the story, i.e. the way how to transfer your data and RPC. However, there is still no standard for the actual format of the transferred information—only in these comments we have mentioned several, from custom XML to YAML to JSON to PHP serialization. The advantage of SOAP is that it uses a standard, even if not technically ideal, part of the HTTP protocol for information transfer, and has a standard, well-defined format of that information—SOAP.
</p></blockquote>
<p>OK here lies part of SOAPs illusion &#8211; there&#8217;s basically two styles of encoding with SOAP &#8211; encoded and literal and it seems you&#8217;re talking about the encoded style (nice <a href="http://gavincornwell.wordpress.com/2005/04/06/rpc-vs-document-literal/" rel="nofollow">summary here</a> BTW).</p>
<p>In encoded style, you have a one-to-one correspondance between native data types (string, int) and tags in SOAP (xsd:string, xsd:int).</p>
<p>Now that&#8217;s fine, but what, as stepz seems to require up there, do you do if you want a rule to apply to a particular string (e.g. a username) that it&#8217;s between, say, 6 and 15 characters and that the characters are alpha-numeric?</p>
<p>At that point SOAP&#8217;s basic type encoding doesn&#8217;t help you &#8211; you need to add your own XSD to register this rule. At the point you need to start doing this, encoded SOAP loses some it&#8217;s value &#8211; generally if you want to validate some tags, you want to validate all tags &#8211; at that point you way as well have gone with document style SOAP and you&#8217;re basically in the same position as you&#8217;d be if you defined your XML format from scratch, and you start wondering what the value of SOAP was in all this. And remind me what was the benefit of SOAP vs. XML-RPC again?</p>
<blockquote><p>
And for three, as I argued above, SOAP has been implemented in virtually every development tool and platform out there, making use of Web services as simple as (in PHP, from a recent real-life example I had):
</p></blockquote>
<p>I&#8217;d still say you can&#8217;t beat the example above for simplicity.  Similar can be done with &#8220;plain old XML&#8221; like <a href="http://developer.yahoo.net/php/samples/parse/parseSIMPLEXML.txt" rel="nofollow">this</a>.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: ajking</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16077</link>
		<dc:creator>ajking</dc:creator>
		<pubDate>Tue, 21 Mar 2006 02:59:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16077</guid>
		<description>One of those &quot;Says It All Quotes&quot;: &lt;blockquote&gt;&quot;URLs and HTTP is why the web is working. HTTP and URLs work so well they’re even capable of being useful in spite of complexities in media-types based on XML.&quot;&lt;/blockquote&gt;(From lesscode.org)</description>
		<content:encoded><![CDATA[<p>One of those &#8220;Says It All Quotes&#8221;:<br />
<blockquote>&#8220;URLs and HTTP is why the web is working. HTTP and URLs work so well they’re even capable of being useful in spite of complexities in media-types based on XML.&#8221;</blockquote></p>
<p>(From lesscode.org)</p>]]></content:encoded>
	</item>
	<item>
		<title>By: BerislavLopac</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16058</link>
		<dc:creator>BerislavLopac</dc:creator>
		<pubDate>Mon, 20 Mar 2006 23:21:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16058</guid>
		<description>Harry, if I understood you correctly, you have listed several technologies and standards (REST, custom XML, XSchema, Relax-NG, XSLT...) as a &quot;better&quot; replacement for a single standard (SOAP, with or without WSDL).

For one, I absolutely agree with you that the principles behid REST are valuable, and I would like to see it well implemented. However, the current state of the affair is that classic Web services have a more stable foothold in the development environments.

Fow two, REST defines only half of the story, i.e. the way how to transfer your data and RPC. However, there is still no standard for the actual format of the transferred information -- only in these comments we have mentioned several, from custom XML to YAML to JSON to PHP serialization. The advantage of SOAP is that it uses a standard, even if not technically ideal, part of the HTTP protocol for information transfer, and has a standard, well-defined format of that information -- SOAP.

And for three, as I argued above, SOAP has been implemented in virtually every development tool and platform out there, making use of Web services as simple as (in PHP, from a recent real-life example I had):

&lt;code&gt;
require_once(&#039;lib/nusoap.php&#039;);
$soapclient = new soapclient(&#039;http://www.example.com/soapserver.php&#039;);
$events = $soapclient-&gt;call(&#039;getevents&#039;);
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Harry, if I understood you correctly, you have listed several technologies and standards (REST, custom XML, XSchema, Relax-NG, XSLT&#8230;) as a &#8220;better&#8221; replacement for a single standard (SOAP, with or without WSDL).</p>
<p>For one, I absolutely agree with you that the principles behid REST are valuable, and I would like to see it well implemented. However, the current state of the affair is that classic Web services have a more stable foothold in the development environments.</p>
<p>Fow two, REST defines only half of the story, i.e. the way how to transfer your data and RPC. However, there is still no standard for the actual format of the transferred information &#8212; only in these comments we have mentioned several, from custom XML to YAML to JSON to PHP serialization. The advantage of SOAP is that it uses a standard, even if not technically ideal, part of the HTTP protocol for information transfer, and has a standard, well-defined format of that information &#8212; SOAP.</p>
<p>And for three, as I argued above, SOAP has been implemented in virtually every development tool and platform out there, making use of Web services as simple as (in PHP, from a recent real-life example I had):</p>
<code>
require_once('lib/nusoap.php');
$soapclient = new soapclient('http://www.example.com/soapserver.php');
$events = $soapclient-&gt;call('getevents');
</code>]]></content:encoded>
	</item>
	<item>
		<title>By: HarryF</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16057</link>
		<dc:creator>HarryF</dc:creator>
		<pubDate>Mon, 20 Mar 2006 23:16:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16057</guid>
		<description>When a Microsoft engineer publishes &lt;a href=&quot;http://www.25hoursaday.com/weblog/CommentView.aspx?guid=29b15dde-1c17-4c48-b29d-0104ffefb423&quot; rel=&quot;nofollow&quot;&gt;this&lt;/a&gt;, it just needs quoting;

&lt;blockquote&gt;
The lesson here is that all this complexity being pushed by so-called enterprise architects, software vendors and big 5 consulting companies is bullshit. If you are building distributed applications for your business, you really need to ask yourself what is so complex about the problems that you have to solve that makes it require more complex solutions than those that are working on a global scale on the World Wide Web today.
&lt;/blockquote&gt;</description>
		<content:encoded><![CDATA[<p>When a Microsoft engineer publishes <a href="http://www.25hoursaday.com/weblog/CommentView.aspx?guid=29b15dde-1c17-4c48-b29d-0104ffefb423" rel="nofollow">this</a>, it just needs quoting;</p>
<blockquote><p>
The lesson here is that all this complexity being pushed by so-called enterprise architects, software vendors and big 5 consulting companies is bullshit. If you are building distributed applications for your business, you really need to ask yourself what is so complex about the problems that you have to solve that makes it require more complex solutions than those that are working on a global scale on the World Wide Web today.
</p></blockquote>]]></content:encoded>
	</item>
	<item>
		<title>By: HarryF</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16056</link>
		<dc:creator>HarryF</dc:creator>
		<pubDate>Mon, 20 Mar 2006 23:03:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16056</guid>
		<description>&lt;blockquote&gt;
Anyway, if anyone can point out any pragmatic reasons, why should I use REST, I’d be happy to hear them.
&lt;/blockquote&gt;

Think the main pragmatic reasons are general: stuff like performance / scaling given that HTTP comes with a bunch of stuff to help, easier to debug (&quot;just&quot; HTTP rather than HTTP + extra layers / extra libraries), simple APIs (urls, GET, POST etc.) and simple libraries.

But none of those are particularily convincing. Also looking at your requirements, seems like there&#039;s experience with SOAP already there which means you&#039;re already able to visualize this project from start to end. REST has a bunch of grey areas where best practice seems to be missing, so it&#039;s entering a &quot;riskier&quot; zone.

But some general thoughts against your list, which are somewhat like &quot;you don&#039;t want to start from here&quot;.

&lt;blockquote&gt;
* Current system interconnects are anything from NFS transfered xml files to somewhat RESTy HTTP GET access to an imagedatabase to more and less strictly defined SOAP interfaces. Reuse is pretty limited and won’t be one of the top concerns.
&lt;/blockquote&gt;

WebDAV might be interesting as an alternative to NFS. If you haven&#039;t tried it, see &lt;a href=&quot;http://pear.php.net/package/HTTP_WebDAV_Server&quot; rel=&quot;nofollow&quot;&gt;HTTP_WebDav_Server&lt;/a&gt; and try a &lt;a href=&quot;http://www.webdrive.com/&quot; rel=&quot;nofollow&quot;&gt;webdrive&lt;/a&gt; evulation as client.

&lt;blockquote&gt;
* Software components are for now written PHP and Python, but I’d hesitate to shut out Java or .NET forever.
&lt;/blockquote&gt;

If you&#039;re using XML, in general, Java and .NET have a way in. Of course it depends on exactly how you&#039;re using XML but...

&lt;blockquote&gt;
* All exchanged messages need to carry transaction ID’s, logging metadata, authentication info and some other similar metadata.
* Almost all messages are required to be logged (by law actually). Logging is to be taken care of by the communicating peers themselves.
&lt;/blockquote&gt;

I&#039;m not sure SOAP gives you any particular advantage there - if this information is getting packed into messages, it almost makes more sense to do the work of designing an XML format carefully (vs. say allowing encoded SOAP to take care of it for you). Perhaps there&#039;s some WS-* specs that &lt;em&gt;could&lt;/em&gt; help out but seems the more you use of the WS-*, the less chance you have to broad support on many platforms.

Regarding logging, it sounds like you&#039;re really wanting to store copies of documents (vs. encoded data structures) - there&#039;s SOAP document literal but I think you&#039;ll be headed into trouble there with PHP and Python. Thinking instead of exchange of &quot;simple&quot; XML documents and files makes this a little easier, plus you&#039;ve get access to URLs logged by Apache (or otherwise) which may be nice to have (vs. all access tunnelled through POST to one URL).

Should also point out that HTTP already comes with fields for some basic meta data (which may or may not be useful), such as date/time stamps, file types. You&#039;d also be able to apply &lt;a href=&quot;http://www.modsecurity.org&quot; rel=&quot;nofollow&quot;&gt;mod_security&lt;/a&gt; easily to a REST based service.

&lt;blockquote&gt;
* I’d like the ability to automatically validate the exchanged messages for correctnes.
&lt;/blockquote&gt;

That&#039;s doable again, without SOAP. XML Schema or Relax NG if you want to do this against XML. That said, using Python or PHP it&#039;s in some ways easier to do it in code (that&#039;s if validation will only be happening locally). That advantage of XML schema there is (sadly almost), it&#039;s well known so if you publish it to someone else, there&#039;s a better chance they&#039;ll understand it. Validating that a string is between 10 and 15 characters though, effectively nullifies the advantage of encoded SOAP and means you have to make the effort of designing an XML format.

&lt;blockquote&gt;
* Some services, about 1/3 or so, will need to be exported to the outside with SOAP+WSDL using a bit different set of metadata than internal use requires.
&lt;/blockquote&gt;

The question there is is SOAP+WSDL actually a requirement in itself? What you say there suggests XSLT but again, the effort of repackaging some data in &quot;raw&quot; Python or PHP is probably minimal.

&lt;blockquote&gt;
* The data will have XMLSchema definitions probably anyway for other architectual reasons. Atleast base datatypes that are combined into messages in realtively straightforward ways will anyway be defined in XMLSchema.
&lt;/blockquote&gt;

That&#039;s again pointing at &quot;document / literal&quot; but doesn&#039;t have to mean SOAP. In general my experiences of XML Schema + SOAP is the relationship between them isn&#039;t broadly understood and is subject to interpretation (rightly or wrongly) and varying implementations - publishing an XML schema alongside a &quot;REST interface&quot; strikes me as something that the &quot;other end&quot; is more likely to pay attention to. In PHP that&#039;s an explicit call to &lt;a href=&quot;http://www.php.net/manual/en/function.dom-domdocument-schemavalidate.php&quot; rel=&quot;nofollow&quot;&gt;schemavalidate&lt;/a&gt;.

&lt;blockquote&gt;
* A usable API for RPC is required, together with mapping to native datatypes. Once the messages are defined, I don’t want to know anything about wire encoding, wire protocol or anything. I just want a RPC with all the behind the scenes including logging, routing, etc. taken care for me.
&lt;/blockquote&gt;

Here&#039;s the fine detail part - HTTP is itself an RPC protocol with a small collection of methods (GET, POST, PUT etc.) - SOAP (rpc/encoded) and XML-RPC &quot;tunnel&quot; through existing HTTP methods (normally POST). Anyway - can understand what you mean by &quot;not caring&quot; but think this is an elusive goal. With RPC/encoded SOAP you can get to a &quot;hello world&quot; quickly without having to care about what goes over the wire but given earlier validation requirements, the effort required to define schemas for your data structures could be equally spent defining your own XML formats which, once done, means you can stop caring ;)

Overall I guess the immediacy you (sometimes) get with SOAP or XML-RPC tails off once your API grows or things like performance become a concern.

Perhaps one argument for HTTP which is strong and easy to grasp is &lt;a href=&quot;http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers&quot; rel=&quot;nofollow&quot;&gt;conditional GETs&lt;/a&gt; - this get&#039;s very hard / ugly to do with SOAP/RPC or XML-RPC IMO - you have a return value which is either the result you want to something saying &quot;unchanged&quot; and that translates into ugly hacks, to the point where is no one does it. Where I work we used XML-RPC at one point for moving documents to a web server for display - at some point have to re-write it - when an &lt;em&gt;unchanged&lt;/em&gt; document takes 5 seconds to load and people are saying &quot;man this is slow&quot;, having an efficient / easy way to report changes, update caches seems like a really good idea.

&lt;blockquote&gt;
So all said and done, even considering all the talk about demise of SOAP, I’d still go with SOAP+WSDL for now. The reasoning from the PHP side (haven’t had the time to thoroughly study relevant Python libraries):
&lt;/blockquote&gt;

Actually should point out that the demise is really for online use on the real Internet - for purely &quot;internal&quot; use, where you control the endpoints, SOAP is just as valid (or invalid) as similar older technologies (like CORBA or DCOM).

&lt;blockquote&gt;
SOAP has ext/soap on PHP side, that makes RPC braindead simple. I don’t know of anything that elegant for REST.
&lt;/blockquote&gt;

Although it doesn&#039;t match all your requirements, you need to look at that Amazon example up there again - it&#039;s pretty braindead. Also PHP&#039;s serialized format is pretty well supported in other languages - see the list at the end of &lt;a href=&quot;http://www.sitepoint.com/blogs/2006/02/23/unserialize-yahoo-search-results/&quot; rel=&quot;nofollow&quot;&gt;this post&lt;/a&gt; (but note also the risks). JSON or YAML are also well supported in most languages.

&lt;blockquote&gt;
SOAP has atleast some tool support, REST has pretty much none if you don’t count the fact that in simpler cases the format is simple enough to use by hand.
&lt;/blockquote&gt;

Well it could well be argued that REST doesn&#039;t need any extra tools because everything is already there. For debugging your browser plus livehttpheaders might often be enough. There&#039;s a ton of HTTP testing / automation tools, beginning with &lt;a href=&quot;http://search.cpan.org/dist/WWW-Mechanize/&quot; rel=&quot;nofollow&quot;&gt;WWW::Mechanize&lt;/a&gt;. Of your requirements only the use of XML schema really needs something toolwise (as in XMLSpy).

&lt;blockquote&gt;
Anyway, if anyone can point out any pragmatic reasons, why should I use REST, I’d be happy to hear them. 
&lt;/blockquote&gt;

Returning hear again, if you&#039;re willing to donate some project hours, why not just try one REST web service.

&lt;blockquote&gt;
I still can’t believe how slow YAML uptake has been by the PHP community. 
&lt;/blockquote&gt;

Think there are some specific functions stalling interest, namely serialize() and parse_ini_file().</description>
		<content:encoded><![CDATA[<blockquote><p>
Anyway, if anyone can point out any pragmatic reasons, why should I use REST, I’d be happy to hear them.
</p></blockquote>
<p>Think the main pragmatic reasons are general: stuff like performance / scaling given that HTTP comes with a bunch of stuff to help, easier to debug (&#8221;just&#8221; HTTP rather than HTTP + extra layers / extra libraries), simple APIs (urls, GET, POST etc.) and simple libraries.</p>
<p>But none of those are particularily convincing. Also looking at your requirements, seems like there&#8217;s experience with SOAP already there which means you&#8217;re already able to visualize this project from start to end. REST has a bunch of grey areas where best practice seems to be missing, so it&#8217;s entering a &#8220;riskier&#8221; zone.</p>
<p>But some general thoughts against your list, which are somewhat like &#8220;you don&#8217;t want to start from here&#8221;.</p>
<blockquote><p>
* Current system interconnects are anything from NFS transfered xml files to somewhat RESTy HTTP GET access to an imagedatabase to more and less strictly defined SOAP interfaces. Reuse is pretty limited and won’t be one of the top concerns.
</p></blockquote>
<p>WebDAV might be interesting as an alternative to NFS. If you haven&#8217;t tried it, see <a href="http://pear.php.net/package/HTTP_WebDAV_Server" rel="nofollow">HTTP_WebDav_Server</a> and try a <a href="http://www.webdrive.com/" rel="nofollow">webdrive</a> evulation as client.</p>
<blockquote><p>
* Software components are for now written PHP and Python, but I’d hesitate to shut out Java or .NET forever.
</p></blockquote>
<p>If you&#8217;re using XML, in general, Java and .NET have a way in. Of course it depends on exactly how you&#8217;re using XML but&#8230;</p>
<blockquote><p>
* All exchanged messages need to carry transaction ID’s, logging metadata, authentication info and some other similar metadata.<br />
* Almost all messages are required to be logged (by law actually). Logging is to be taken care of by the communicating peers themselves.
</p></blockquote>
<p>I&#8217;m not sure SOAP gives you any particular advantage there &#8211; if this information is getting packed into messages, it almost makes more sense to do the work of designing an XML format carefully (vs. say allowing encoded SOAP to take care of it for you). Perhaps there&#8217;s some WS-* specs that <em>could</em> help out but seems the more you use of the WS-*, the less chance you have to broad support on many platforms.</p>
<p>Regarding logging, it sounds like you&#8217;re really wanting to store copies of documents (vs. encoded data structures) &#8211; there&#8217;s SOAP document literal but I think you&#8217;ll be headed into trouble there with PHP and Python. Thinking instead of exchange of &#8220;simple&#8221; XML documents and files makes this a little easier, plus you&#8217;ve get access to URLs logged by Apache (or otherwise) which may be nice to have (vs. all access tunnelled through POST to one URL).</p>
<p>Should also point out that HTTP already comes with fields for some basic meta data (which may or may not be useful), such as date/time stamps, file types. You&#8217;d also be able to apply <a href="http://www.modsecurity.org" rel="nofollow">mod_security</a> easily to a REST based service.</p>
<blockquote><p>
* I’d like the ability to automatically validate the exchanged messages for correctnes.
</p></blockquote>
<p>That&#8217;s doable again, without SOAP. XML Schema or Relax NG if you want to do this against XML. That said, using Python or PHP it&#8217;s in some ways easier to do it in code (that&#8217;s if validation will only be happening locally). That advantage of XML schema there is (sadly almost), it&#8217;s well known so if you publish it to someone else, there&#8217;s a better chance they&#8217;ll understand it. Validating that a string is between 10 and 15 characters though, effectively nullifies the advantage of encoded SOAP and means you have to make the effort of designing an XML format.</p>
<blockquote><p>
* Some services, about 1/3 or so, will need to be exported to the outside with SOAP+WSDL using a bit different set of metadata than internal use requires.
</p></blockquote>
<p>The question there is is SOAP+WSDL actually a requirement in itself? What you say there suggests XSLT but again, the effort of repackaging some data in &#8220;raw&#8221; Python or PHP is probably minimal.</p>
<blockquote><p>
* The data will have XMLSchema definitions probably anyway for other architectual reasons. Atleast base datatypes that are combined into messages in realtively straightforward ways will anyway be defined in XMLSchema.
</p></blockquote>
<p>That&#8217;s again pointing at &#8220;document / literal&#8221; but doesn&#8217;t have to mean SOAP. In general my experiences of XML Schema + SOAP is the relationship between them isn&#8217;t broadly understood and is subject to interpretation (rightly or wrongly) and varying implementations &#8211; publishing an XML schema alongside a &#8220;REST interface&#8221; strikes me as something that the &#8220;other end&#8221; is more likely to pay attention to. In PHP that&#8217;s an explicit call to <a href="http://www.php.net/manual/en/function.dom-domdocument-schemavalidate.php" rel="nofollow">schemavalidate</a>.</p>
<blockquote><p>
* A usable API for RPC is required, together with mapping to native datatypes. Once the messages are defined, I don’t want to know anything about wire encoding, wire protocol or anything. I just want a RPC with all the behind the scenes including logging, routing, etc. taken care for me.
</p></blockquote>
<p>Here&#8217;s the fine detail part &#8211; HTTP is itself an RPC protocol with a small collection of methods (GET, POST, PUT etc.) &#8211; SOAP (rpc/encoded) and XML-RPC &#8220;tunnel&#8221; through existing HTTP methods (normally POST). Anyway &#8211; can understand what you mean by &#8220;not caring&#8221; but think this is an elusive goal. With RPC/encoded SOAP you can get to a &#8220;hello world&#8221; quickly without having to care about what goes over the wire but given earlier validation requirements, the effort required to define schemas for your data structures could be equally spent defining your own XML formats which, once done, means you can stop caring ;)</p>
<p>Overall I guess the immediacy you (sometimes) get with SOAP or XML-RPC tails off once your API grows or things like performance become a concern.</p>
<p>Perhaps one argument for HTTP which is strong and easy to grasp is <a href="http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers" rel="nofollow">conditional GETs</a> &#8211; this get&#8217;s very hard / ugly to do with SOAP/RPC or XML-RPC IMO &#8211; you have a return value which is either the result you want to something saying &#8220;unchanged&#8221; and that translates into ugly hacks, to the point where is no one does it. Where I work we used XML-RPC at one point for moving documents to a web server for display &#8211; at some point have to re-write it &#8211; when an <em>unchanged</em> document takes 5 seconds to load and people are saying &#8220;man this is slow&#8221;, having an efficient / easy way to report changes, update caches seems like a really good idea.</p>
<blockquote><p>
So all said and done, even considering all the talk about demise of SOAP, I’d still go with SOAP+WSDL for now. The reasoning from the PHP side (haven’t had the time to thoroughly study relevant Python libraries):
</p></blockquote>
<p>Actually should point out that the demise is really for online use on the real Internet &#8211; for purely &#8220;internal&#8221; use, where you control the endpoints, SOAP is just as valid (or invalid) as similar older technologies (like CORBA or DCOM).</p>
<blockquote><p>
SOAP has ext/soap on PHP side, that makes RPC braindead simple. I don’t know of anything that elegant for REST.
</p></blockquote>
<p>Although it doesn&#8217;t match all your requirements, you need to look at that Amazon example up there again &#8211; it&#8217;s pretty braindead. Also PHP&#8217;s serialized format is pretty well supported in other languages &#8211; see the list at the end of <a href="http://www.sitepoint.com/blogs/2006/02/23/unserialize-yahoo-search-results/" rel="nofollow">this post</a> (but note also the risks). JSON or YAML are also well supported in most languages.</p>
<blockquote><p>
SOAP has atleast some tool support, REST has pretty much none if you don’t count the fact that in simpler cases the format is simple enough to use by hand.
</p></blockquote>
<p>Well it could well be argued that REST doesn&#8217;t need any extra tools because everything is already there. For debugging your browser plus livehttpheaders might often be enough. There&#8217;s a ton of HTTP testing / automation tools, beginning with <a href="http://search.cpan.org/dist/WWW-Mechanize/" rel="nofollow">WWW::Mechanize</a>. Of your requirements only the use of XML schema really needs something toolwise (as in XMLSpy).</p>
<blockquote><p>
Anyway, if anyone can point out any pragmatic reasons, why should I use REST, I’d be happy to hear them.
</p></blockquote>
<p>Returning hear again, if you&#8217;re willing to donate some project hours, why not just try one REST web service.</p>
<blockquote><p>
I still can’t believe how slow YAML uptake has been by the PHP community.
</p></blockquote>
<p>Think there are some specific functions stalling interest, namely serialize() and parse_ini_file().</p>]]></content:encoded>
	</item>
	<item>
		<title>By: mjackson42</title>
		<link>http://www.sitepoint.com/blogs/2006/03/20/ws-deadparrot/comment-page-1/#comment-16054</link>
		<dc:creator>mjackson42</dc:creator>
		<pubDate>Mon, 20 Mar 2006 22:31:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=1479#comment-16054</guid>
		<description>&lt;blockquote&gt;I still can’t believe how slow YAML uptake has been by the PHP community.&lt;/blockquote&gt;

Oh dear god, that&#039;s awful. If I didn&#039;t read the yaml.org About page, I&#039;d swear that was invented by a Python programmer. Levels of indentation to denote structure? I can&#039;t imagine working with that in a productive manner.</description>
		<content:encoded><![CDATA[<blockquote><p>I still can’t believe how slow YAML uptake has been by the PHP community.</p></blockquote>
<p>Oh dear god, that&#8217;s awful. If I didn&#8217;t read the yaml.org About page, I&#8217;d swear that was invented by a Python programmer. Levels of indentation to denote structure? I can&#8217;t imagine working with that in a productive manner.</p>]]></content:encoded>
	</item>
</channel>
</rss>
