IBM has introduced a new programming model for SOA: SCA
. Several leading companies have endorsed the specs
. Now the industry is starting to comment on this vision.
James Governor has a mildly skeptical yet amusing posting with lots of good links, Why SCA has a lot to prove: J2EE all over
. One link is to All I want for Christmas is a new SOA component model
, where he compares SCA to another layer on the onion (I'd say programming stack). The commentary is interesting and a dose of cold water on all the hype.
Myself, I'm pretty excited about SCA and SDO. It truly is a programming model for SOA. Everything is an SCA invoking services in other SCAs, passing data as SDOs; that's the complete model. SCAs host/implement/provide services, and can do so in part by invoking other services. SCA clients can invoke services in SCAs. SCA and SDO are specifically designed to be technology-neutral, so that different ones can be implemented in different technologies (J2EE, .NET, PHP, Ruby (w/ or w/o Rails), whatever) and can interoperate. Integration developers can design apps very high level at first, focusing simply on what services they need and who invokes what. Yet the service interfaces are defined, so there's still strong typing and enforcement that the client and provider agree on the service (that the SOA-SC and SOA-SP agree
). Once you've got the services laid out, then you start worrying about how to implement the individual SCAs and how they'll use the SDOs internally.
It's a compelling vision. Is it perfect yet? I doubt it. This is SCA/SDO 1.0 (the specs actually have real version numbers, 0.9 and 2.0 respectively), and 1.0 of anything is always a little rough. Versions 2.0 and 3.0 will probably be significantly better. The tools and engines we have in the future will probably be significantly better than those we have today. But we've got to start somewhere, and IBM at least has a pretty good start with WPS, WESB, and WID
. Should you convert all of your IT to SCA/SDO immediately? Probably not. But you should be exploring SOA, and while you're at it, you should look at how SCA/SDO can help.
Somewhat like Dana at ZDNet, I'm somewhat amused yet concerned about adding yet another layer to the onion/stack. I remember how CORBA
was the only distributed object model you'd ever need; and we distributed objects everywhere, and it was just too hard. Then when Sun introduced Java, it would be the only programming language you'd ever need because it was write one, run anywhere; and Java RMI and remote EJBs made CORBA usable. But Microsoft wasn't on board; invented their own object models (COM
), then their own Java/J2EE (C#/.NET). So then we got Web services, with SOAP and WSDL, the programming model that covered everything: the Web, J2EE, .NET, and any other technology. But just because you want services doesn't mean everything should be a Web service, and SOA is more than just Web services. So now we have SCA/SDO, a neutral programming model that works with hopefully any service implementation: WSDL Web services, J2EE (both stateless session beans and plain-old POJOs), BPEL workflows, business rules, human tasks--hopefully even PHP, .NET, Ruby, whatever floats your boat.
So is this really the final layer? Is anything ever really the final layer? Guess we'll just have to find out. But in the meantime, this looks pretty good.