In an interesting paper by Jean-Jacques Dubray tries to predict Microsoft’s plans in the BPM area. A side remark in the introduction caught my eye:
[T]he notion of context independence is the very definition and necessary condition for loose coupling, separating services from components.
I beg to differ. I recently witnessed an SOA presentation by a smart architect, and it was very obvious that you just as well might have replaced the term “service” with “component” without anybody noticing at all. If something like this is possible, it clearly shows that a clear definition of the distinction — provided there is one — is needed. So I offer one we came up with inside my company after a lot of heated discussion:
The major factor that separates a component from a service is that a component is re-used by deploying it into a component runtime, while a service is always used remotely.