
Natale, Bob wrote:
Crudely put, an "XYZ service" is a service that manipulates 1 or more "XYZ resources".
Hmmm. I'd say that an "XYZ service" provides one or more "XZY capabilities", and those capabilities might manipulate one or more resources (including other services) from diverse domains (i.e., including other than "XYZ").
I factor the same things slightly differently. :-) I think that the capabilities (or at least most of them) are aspects of the resource and what the service does is expose them. But that's really just cutting the software into pieces at a slightly different point. I also feel that when you've got the sort of situation you describe above, the service is both an "XYZ service" and an "ABC service", but that's because I feel that the service definitions are really just interfaces (to use Java terminology; in other languages I'd use multiple inheritance to describe what's going on) irrespective of how they're implemented.
I could agree with the statement that, in an SOA, every resource will have at least one service whose primary (and perhaps sole) capability is to provide access to that resource.
That seems fair to me too. Donal.