Design Related Terms:
- Design Characteristic
- Design Principle
- Design Paradigm
- Design Pattern
- Design Standard
- Best Practice
Design Principle
Becoming proficient with the concepts and principles of service-orientation equips you with an understanding of what is and is not considered "service-oriented" within the world of solution design. This understanding leads to a clear comprehension of how to shape solution logic specifically in support of the strategic goals and benefits associated with SOA and service-oriented computing.
- Service Abstraction
- Service Autonomy
- Service Composability
- Service Discoverability
- Service Loose Coupling
- Service Reusability
- Service Statelessness
- Service-Orientation and Interoperability
- Standardized Service Contract
Specifically, the potential relationship between service-orientation design principles and patterns can be summarized as follows:
- Design principles are applied collectively to solution logic in order to shape it in such a manner that it fosters key design characteristics that support the strategic goals associated with service-oriented computing.
- Design patterns provide solutions to common problems encountered when applying design principles-and-when establishing an environment suitable for implementing logic designed in accordance with service-orientation principles.
In many ways, design principles and patterns are alike. Both provide design guidance in support of achieving overarching strategic goals. In fact, it would not be unreasonable to think of the eight service-orientation principles as super patterns
Service-orientation design principles have another role in that they collectively define service-orientation as a design paradigm. Ultimately, it is best to view design patterns as providing support for the realization of design principles and their associated goals.
SOA Design Patterns and Design Granularity
- Service Granularity - The overall quantity of functionality encapsulated by a service determines the service granularity. A service's granularity is determined by its functional context, which is usually established during the service modeling phase.
- Capability Granularity - The quantity of functionality encapsulated by a specific service capability determines the level of corresponding capability granularity.
- Data Granularity - The quantity of data exchanged by a specific service capability determines the level of its data granularity.
- Constraint Granularity - The extent of validation logic detail defined for a given service capability within the service contract determines the capability's level of constraint granularity. Generally, the more specific the constraints and the larger the amount of constraints, the more fine-grained the capability's constraint granularity is.
The effect of design patterns on service-related design granularity can vary. For example, when applying multiple patterns (or compound patterns) to the same service, the end-levels of design granularity may be distinctly defined by that combination of patterns (and they may fluctuate between the application of one pattern to another).