This post originated from an RSS feed registered with .NET Buzz
by Udi Dahan.
Original Post: Web services is.., should be.., can.., oh just forget it
Feed Title: Udi Dahan - The Software Simplist
Feed URL: http://feeds.feedburner.com/UdiDahan-TheSoftwareSimplist
Feed Description: I am a software simplist. I make this beast of architecting, analysing, designing, developing, testing, managing, deploying software systems simple.
This blog is about how I do it.
There's an interesting discussion going on between Savas Parastatidis and Michi Henning about whether or not Web Services are RPC. While I am no where near either of them when it comes to the ability to analyze these things, I thought I'd pitch in my own 2 cents - hard earned at that.
There is only one scenario in which you'll find me arguing about whether X is Y or not, and that's when I'm doing domain modelling. I'm not sure what insights can be derived from such discussions when there is no domain to understand.
So, are web services RPC?
mu. I believe that the question cancels itself out.
Let's start with the fact that there isn't really a good definition for web services. HTTP is no longer considered a must for web services, meaning that there is no "web" - it's just services.
If a service is written in such a way that it's contract exposes procedures which accept flat parameters, then one could say that that specific service exposes RPC semantics. If a different service exposed messaging semantics - the "drop a letter in the mailbox with your return address written on the back" kind - I would be hard pressed to describe that behavior as RPC at the very least due to its inherent asynchronous nature. Technologies these days allow both of these semantics under the same web services umbrella.
So, back to it: "WS is *RPC*, by definition" - well, you CAN do RPC with WS; I don't think you should. The evolution of distributed systems development has passed through various paradigms passing from RPC, through distributed objects, to message-based services. In my opinion, RPC and distributed objects have failed as paradigms yet remain valuable technological prototypes for certain scenarios.