<?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"
	>
<channel>
	<title>Comments on: WS Time Warp?</title>
	<atom:link href="http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/feed/" rel="self" type="application/rss+xml" />
	<link>http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/</link>
	<description>Ask forgiveness, not permission.</description>
	<pubDate>Sun, 07 Sep 2008 17:28:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
		<item>
		<title>By: steve</title>
		<link>http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-786</link>
		<dc:creator>steve</dc:creator>
		<pubDate>Sat, 29 Mar 2008 18:44:20 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-786</guid>
		<description>Mohan: you ask whether can I &lt;em&gt;prove&lt;/em&gt; otherwise? I don't know; can you &lt;em&gt;prove&lt;/em&gt; that what you claim above is true?

I can say that in my experience I have explained REST to a variety people who've never worked with IDL or WSDL, and they don't seem to have any problem understanding it. I've explained it to others who have worked with IDL and WSDL, and while they don't always get it right away, they do get it if they're able to put aside their IDL/WSDL assumptions. The ones who can't see past IDL or WSDL, of course, never get it, but I think one can safely argue that they don't really try to.

Also keep in mind that "difficulty" is a concept that ranges beyond the initial work a developer has to do to write the system. It might be easier in the short term for someone to write an interface in a definition language and push a button to generate code to create a system, but the resulting generated code is brittle, hard to version, hard to scale, and hard to update across the system in a piecemeal fashion.</description>
		<content:encoded><![CDATA[<p>Mohan: you ask whether can I <em>prove</em> otherwise? I don&#8217;t know; can you <em>prove</em> that what you claim above is true?</p>
<p>I can say that in my experience I have explained REST to a variety people who&#8217;ve never worked with IDL or WSDL, and they don&#8217;t seem to have any problem understanding it. I&#8217;ve explained it to others who have worked with IDL and WSDL, and while they don&#8217;t always get it right away, they do get it if they&#8217;re able to put aside their IDL/WSDL assumptions. The ones who can&#8217;t see past IDL or WSDL, of course, never get it, but I think one can safely argue that they don&#8217;t really try to.</p>
<p>Also keep in mind that &#8220;difficulty&#8221; is a concept that ranges beyond the initial work a developer has to do to write the system. It might be easier in the short term for someone to write an interface in a definition language and push a button to generate code to create a system, but the resulting generated code is brittle, hard to version, hard to scale, and hard to update across the system in a piecemeal fashion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mohan Radhakrishnan</title>
		<link>http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-784</link>
		<dc:creator>Mohan Radhakrishnan</dc:creator>
		<pubDate>Sat, 29 Mar 2008 16:28:03 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-784</guid>
		<description>Is it very hard for average developers to understand and implement REST instead of using WSDL in systems where everything traditionally works based on WSDL ? Seems so. It really looks like something that only experts can do. Can you prove otherwise ?</description>
		<content:encoded><![CDATA[<p>Is it very hard for average developers to understand and implement REST instead of using WSDL in systems where everything traditionally works based on WSDL ? Seems so. It really looks like something that only experts can do. Can you prove otherwise ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cory von Wallenstein</title>
		<link>http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-764</link>
		<dc:creator>Cory von Wallenstein</dc:creator>
		<pubDate>Sat, 22 Mar 2008 22:10:30 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-764</guid>
		<description>Hi Steve,

Thanks for taking the time to write back. I appreciate it. I whole-heartedly agree with each of your points:

WSDL creates tight coupling, and this is bad.

Code generation is brittle, can create unnecessary data definition dependencies, and inhibits extensibility. All bad.

I know you've touched upon how REST is intrinsically more scalable than WS-*. I agree.

I believe my key failing here is that I failed to adequately explain the problem I am trying to solve.

I make embedded systems. More specifically, I make a device that can remotely reboot or power control a server in the same fashion as pressing the reset or power switch on the front of the server's chassis. The device, named the WebReboot, can also measure the temperature inside a server, and tell you if the server is powered on or off. It's core application is the remote recovery of crashed servers.

The interface for the WebReboot is tightly coupled to the hardware. We use a relay to control the power switch or reset switch of a server. We use a thermistor to measure temperature. The hardware has remained relatively unchanged for quite a long time, largely because it is simple, reliable, and cost-effective. Since the hardware has remained relatively unchanged, the interface has remained relatively unchanged. The extent of changes are limited to adding complimentary functionality that does not affect existing functionality (for instance, if I added a humidity sensor).

Scalability is largely not a concern for this application. In practice, it is not necessary to have many folks or systems trying to reboot a crashed server or retrieve a server's temperature simultaneously.

Since my functionality is limited to what's implemented in relatively simple physical hardware (e.g., sensors and relays), I've found limited application for complicated data structures and dependencies in controlling this hardware. I've also found limited application for extensibility. I've come up with many hypothetical ways for their application, but I haven't found a need to use them. For these reasons, I haven't in practice found the generated code for Java, Python, PHP or .NET to be brittle.

The biggest challenge I've had as a small company (&#60; 10 people) competing in a large market (IT hardware) is competing with organizations that have significantly more resources than I do (Servprise was bootstrapped, and several of my competitors are public companies). One thing I noticed was that my competitors were largely offering stove-pipe solutions that were designed only for human operators to manually use. I decided from the get-go to make ease of integration a key selling point for my solution. This selling point has been the largest contributor to our growth.

There are two main ways our customers integrate our solution:

1) The functionality is made available in a centralized system for ease of access and control (e.g., a control panel at a hosting company).

2) Monitoring solutions, such as Nagios, that can tell you whether or not a server has crashed or a server is overheating, take automated recovery steps to either correct the problem or prevent escalation of the problem by sending commands to the WebReboot.

Our customers obtain financial benefits by making the relatively simple hardware functionality of our solution accessible in larger systems such as control panels and monitoring solutions. The problem for me was enabling this integration faster and cheaper than the competition.

Our competition, for the most part, chose the route of either developing and maintaining client libraries to manage communication to and from their embedded systems in Java, PHP, Python, etc., to ease integration for their customers, or left the customer to develop solutions on their own. I did not and still do not have the resources to develop and maintain client libraries for my customers. It's code generation that has enabled me to compete on this level.

For my application, as well as numerous other embedded applications where the interface is tightly coupled to physical hardware, where the means of control on the physical world (e.g., physical relays and sensors, embedded systems) remain largely unchanged over time (it's very cost-prohibitive to change), where scalability is not a major concern, and where capability and ease of integration are key selling points, WSDL and SOAP may be just what the doctor ordered, even if the only reason is code generation.

Clearly, those that put forth WS-* had much grander ambitions. I firmly believe REST is better suited for obtaining those ambitions. But I also believe this approach has a real future in making it easier and more cost effective for people to bridge the gap between software and the physical world.</description>
		<content:encoded><![CDATA[<p>Hi Steve,</p>
<p>Thanks for taking the time to write back. I appreciate it. I whole-heartedly agree with each of your points:</p>
<p>WSDL creates tight coupling, and this is bad.</p>
<p>Code generation is brittle, can create unnecessary data definition dependencies, and inhibits extensibility. All bad.</p>
<p>I know you&#8217;ve touched upon how REST is intrinsically more scalable than WS-*. I agree.</p>
<p>I believe my key failing here is that I failed to adequately explain the problem I am trying to solve.</p>
<p>I make embedded systems. More specifically, I make a device that can remotely reboot or power control a server in the same fashion as pressing the reset or power switch on the front of the server&#8217;s chassis. The device, named the WebReboot, can also measure the temperature inside a server, and tell you if the server is powered on or off. It&#8217;s core application is the remote recovery of crashed servers.</p>
<p>The interface for the WebReboot is tightly coupled to the hardware. We use a relay to control the power switch or reset switch of a server. We use a thermistor to measure temperature. The hardware has remained relatively unchanged for quite a long time, largely because it is simple, reliable, and cost-effective. Since the hardware has remained relatively unchanged, the interface has remained relatively unchanged. The extent of changes are limited to adding complimentary functionality that does not affect existing functionality (for instance, if I added a humidity sensor).</p>
<p>Scalability is largely not a concern for this application. In practice, it is not necessary to have many folks or systems trying to reboot a crashed server or retrieve a server&#8217;s temperature simultaneously.</p>
<p>Since my functionality is limited to what&#8217;s implemented in relatively simple physical hardware (e.g., sensors and relays), I&#8217;ve found limited application for complicated data structures and dependencies in controlling this hardware. I&#8217;ve also found limited application for extensibility. I&#8217;ve come up with many hypothetical ways for their application, but I haven&#8217;t found a need to use them. For these reasons, I haven&#8217;t in practice found the generated code for Java, Python, PHP or .NET to be brittle.</p>
<p>The biggest challenge I&#8217;ve had as a small company (&lt; 10 people) competing in a large market (IT hardware) is competing with organizations that have significantly more resources than I do (Servprise was bootstrapped, and several of my competitors are public companies). One thing I noticed was that my competitors were largely offering stove-pipe solutions that were designed only for human operators to manually use. I decided from the get-go to make ease of integration a key selling point for my solution. This selling point has been the largest contributor to our growth.</p>
<p>There are two main ways our customers integrate our solution:</p>
<p>1) The functionality is made available in a centralized system for ease of access and control (e.g., a control panel at a hosting company).</p>
<p>2) Monitoring solutions, such as Nagios, that can tell you whether or not a server has crashed or a server is overheating, take automated recovery steps to either correct the problem or prevent escalation of the problem by sending commands to the WebReboot.</p>
<p>Our customers obtain financial benefits by making the relatively simple hardware functionality of our solution accessible in larger systems such as control panels and monitoring solutions. The problem for me was enabling this integration faster and cheaper than the competition.</p>
<p>Our competition, for the most part, chose the route of either developing and maintaining client libraries to manage communication to and from their embedded systems in Java, PHP, Python, etc., to ease integration for their customers, or left the customer to develop solutions on their own. I did not and still do not have the resources to develop and maintain client libraries for my customers. It&#8217;s code generation that has enabled me to compete on this level.</p>
<p>For my application, as well as numerous other embedded applications where the interface is tightly coupled to physical hardware, where the means of control on the physical world (e.g., physical relays and sensors, embedded systems) remain largely unchanged over time (it&#8217;s very cost-prohibitive to change), where scalability is not a major concern, and where capability and ease of integration are key selling points, WSDL and SOAP may be just what the doctor ordered, even if the only reason is code generation.</p>
<p>Clearly, those that put forth WS-* had much grander ambitions. I firmly believe REST is better suited for obtaining those ambitions. But I also believe this approach has a real future in making it easier and more cost effective for people to bridge the gap between software and the physical world.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Standing On The Brink &#187; Blog Archive &#187; Embedded SOAP Web Services: Where&#8217;s the Value?</title>
		<link>http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-763</link>
		<dc:creator>Standing On The Brink &#187; Blog Archive &#187; Embedded SOAP Web Services: Where&#8217;s the Value?</dc:creator>
		<pubDate>Sat, 22 Mar 2008 22:07:34 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-763</guid>
		<description>[...] Steve Vinoski sent over the following comment on my previous article: &#8230; WS-* is *not* preferable to REST. WSDL creates a tight coupling between the client and service which no amount of XML versioning can hope to alleviate. Code generation is brittle, can create unnecessary data definition dependencies, and inhibits extensibility. The industry has by and large learned this well over the past few years, which is why I mentioned 2004 in my blog about this. WS-* is practically dead. [...]</description>
		<content:encoded><![CDATA[<p>[...] Steve Vinoski sent over the following comment on my previous article: &#8230; WS-* is *not* preferable to REST. WSDL creates a tight coupling between the client and service which no amount of XML versioning can hope to alleviate. Code generation is brittle, can create unnecessary data definition dependencies, and inhibits extensibility. The industry has by and large learned this well over the past few years, which is why I mentioned 2004 in my blog about this. WS-* is practically dead. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Standing On The Brink &#187; Blog Archive &#187; Kick More Butt, Use Less Effort: Web Apps on Web Services (Part 1)</title>
		<link>http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-754</link>
		<dc:creator>Standing On The Brink &#187; Blog Archive &#187; Kick More Butt, Use Less Effort: Web Apps on Web Services (Part 1)</dc:creator>
		<pubDate>Fri, 21 Mar 2008 19:02:11 +0000</pubDate>
		<guid isPermaLink="false">http://steve.vinoski.net/blog/2008/03/21/ws-time-warp/#comment-754</guid>
		<description>[...] the sending and receiving of data on the wire (I had a gross omission here&#8230; thanks owed to Steve Vinoski for pointing it [...]</description>
		<content:encoded><![CDATA[<p>[...] the sending and receiving of data on the wire (I had a gross omission here&#8230; thanks owed to Steve Vinoski for pointing it [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
