In his latest column, Roger Sessions of ObjectWatch discusses the differences between objects, components, and services. Roger’s writing is usually very insightful, but I can’t help feeling he misses the point here by effectively categorising the differences between the three as simply one of location and environment, based on the notion of invocation of remote code.
Comparing Web Services to objects and components on object home turf is wrong – Web Services will always compare unfavourably there. The converse is also true, objects compare badly to Web Services across administrative domains. Sure you can build Web Services which act very much like remote components, and there are certain situations like discrete point-to-point integration of heterogeneous applications/platforms where it might make sense to do this. However the sweet spot for Web Services is where they are deployed as part of a properly thought out Service-Oriented Architecture. Roger doesn’t cover this architectural issue which is why I think the conclusions he draws probably aren’t the right ones.