What are the 4 main similarities between services and components?
- Well defined interfaces
- Loosely coupled
- Can be composed
What are the 6 main differences between services and components?
- Components tend to depend on proprietary technologies, whereas services use standard communication protocols
- Services are discoverable - they can be found by accessing a repository
- Components run on computers controlled by the organisation using them, whereas a service resides on a provider server
- Services should be autonomous and independent of other services, so do not have a 'requires' interface
- Services can be stateless, meaning they do not retain any memory of previous requests
- Clients can often use a service without needing to know its physical location - a service can be moved to a different computer without clients being affected
What is a software component?
A software component is a unit of software structured according to the following principles:
- A component encapsulates data and operations
- A component is fully documented and thoroughly tested
- A component's specification clearly separates the component's interface from its implementation
- A component's specification may include non-functional characteristics
- A component is known to client components only through its interface
What is a service?
A service is an abstract description of some unit of business functionality, usually described in terms that are meaningful from both a business and a technical perspective.