Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Also posted to my new "blog-in-progress" here
Someone asked me for a quick email on apps, services and components. Feedback and flames welcome.
An app is a logical grouping of components and services to perform a business objective.
- Logical because the components may not all be owned by or located within the organization that built the app
- An app is built to change by swapping and versioning the services and components that make it up
- See below for suggested definitions of component and service
Services are lightweight, loosely coupled black boxes of reusable functionality that are accessed via a standardized interface.
- Services are built to last
- Once deployed, a service's contract should not be changed – it is usually better to version a contract than completely replace it (especially if your service supports multiple consumers)
- Services are not necessarily web services – a web service is merely one way in which a service can be implemented
- Services can be composed into larger constructs referred to as Apps.
- Fine-grained services result in greater reuse but may be more difficult to design
- Fine-grained services support a single, simple piece of functionality
- Fine-grained services typically result from a bottom-up approach
- Coarse-grained services typically support higher/more complex functionality
- Coarse-grained services are typically composed of two or more fine-grained services
- Coarse -grained services typically result from a top-down approach
Components are similar to services are more tightly coupled to a specific platform or technology in terms of their implementation.
- Components are typically built to last but may expose parameters or configurations that affect its behavior
- Components have very specific requirements for usage – typically in the form of libraries, dlls or databases (e.g. stored procedures)
- Components may yield better performance or throughput due to their tightly coupled nature
- Versioning components tends to be more difficult due to their tightly coupled nature
- Like services, components can be fine-grained or coarse-grained
- Components can be combined with services into larger constructs referred to as Apps