I met Udi Dahan in Cortina this year and was surprised to find someone that passionate about SOA. He wasn’t alone. Then Jimmy started posing some questions and got some answers. I think that overall story of SOA hasn’t resonated with me because for developers there seem to be better ways to tie close systems together. For non developers, there just aren’t the tools to take advantage of the services. I have also empathized with those who feel the incredible array of WS-* specs has blown CORBA out of the water for complexity, and no I don’t think the tools have made the abstraction less leaky!
Udi talks about Web Service discovery this week. He probably hits the view of many people with his post. Most days I would have agreed with him too. Lately I have been thinking differently though. I have been interested in watching non programmers working with tools to see how they get things done when they can’t ask IT to do it for them. Most of these tools can access databases directly through one of many libraries out there that allow you to “discover” the tables, views and stored procedures the database offers. It does so in enough “fidelity” to allow remote tools, working in any language to send messages in a variety of protocols and even over different network transports to the database. These types of features have been around for decades now. It works, but doesn’t scale to internet sizes, mostly because of persistent connections.
The sort of conventional wisdom in my circles is that web services won’t work if you think of them as Remote Procedure Calls (RPC) over the web. For the record I have always accepted that advice. The advice goes on to say that the lesson of the hugely scalable web has important things for us to learn and apply to distributed systems. That’s the whole REST argument right? And it seems pretty compelling. Well, where are you left if you take that advice? You work on document oriented messages between systems. You work with messages whose meaning is explored, extracted and processed out of band. You are left with programmers having to do all the work. There can never be a new version of Access that can communicate with my domain via services.
I’m not very happy with that. We still haven’t gotten back to the functionality that was available on the local network in 1990. Udi is probably right about the pipe dream of web service discovery for now, but I hope he’s wrong for the long term. OK, the WSDL is a better match to the concepts of table and stored proc discovery, but I think the argument applies reasonably well to WSDL too and it’s spurned by the REST folks just as vehemently. Maybe we just need more experience with the real world scalability issues so we can put this discussion to rest, er, ah, so to speak.