Ted Neward compares the WS* efforts with the older CORBA efforts - and has a few criticisms. Hmm. The more I look at what's happening with WS*, the more I think it looks exactly like what the OMG did with CORBA - a blizzard of specs no one cares about, which tend sto make vendor interop harder and harder. But anyway - I thought this was an interesting thing:
For me, the fatal problem for CORBA was that they also tried to tackle standardizing programming models/language bindings. Ever use CORBA using the C++ language bindings? Yuck. How about in Java - not so good either.
Hmm - there's a standard Smalltalk model as well, and somehow, it's simply not that complex. I'll show you:
Step one - turn on the listener in the DST control panel - make sure to enable I3. Step two - create a small class with a count variable, accessors for that variable, and an "API" method:
initialize "set the initial state" self count: 0.
add: aNumber self count: self count + aNumber.
Now, modify the #initialize method this way:
initialize self counter: 0. ORBObject namingService contextReBind: 'counterService' asDSTName to: self.
And add this method to "tear down" the service when you are done
release super release. ORBObject namingService contextUnBind: 'counterService' asDSTName.
Now, you can set up an instance by executing Counter inspect and leaving the inspector up for examination. Now, start up DST on another system, and execute this in a workspace: ORBObject namingService contextResolve: 'counterService' asDSTName.. That's it - you can now send the remote objects messages, like #add:, write there in the inspector. From there, wrapping a UI on it isn't hard.
Sure, there's exception handling, dealing with dropped connections - but that's no different than network programming has ever been. If you want the demo above to work with non-Smalltalk code, you need to go ahead and generate the appropriate IDL - but again, that happens for you. Seems a wee bit simpler than the complexity you see in Java and C++, eh? CORBA really didn't have to be complex - it just became so in the mainstream languages. Which says more about those languages than it does about CORBA, IMHO. The main reason that WS* is succeeding where CORBA failed? Port 80