How service-orientation principles inter-relate

When reading through the previous descriptions, a number of questions might come to mind, such as:

To answer these and other questions, this section revisits our service-orientation principles to explore how each relates to, supports, or is affected by others. To accomplish this, we abbreviate the original names we assigned each principle, as follows:

We intentionally prefix each principle with the word "service" to emphasize that the principle applies to the design of a service only, as opposed to our SOA characteristics, which apply to the design of SOA as a whole.

Note

Each relationship is essentially described twice within these sections. This repetitiveness is intentional, as this part of the chapter is provided more for reference purposes. Feel free to skip ahead if you are not interested in learning about each individual principle-to-principle relationship at this point.

 

8.4.1. Service reusability

When a service encapsulates logic that is useful to more than one service requestor, it can be considered reusable. The concept of reuse is supported by a number of complementary service principles, as follows.

Additionally, the principle of service reuse itself enables the following related principle:

Figure 8.26 provides a diagram showing how the principle of service reusability relates to others.

Figure 8.26. Service reusability and its relationship with other service-orientation principles.

 

8.4.2. Service contract

A service contract is a representation of a service's collective metadata. It standardizes the expression of rules and conditions that need to be fulfilled by any requestor wanting to interact with the service.

Service contracts represent a cornerstone principle in service-orientation and therefore support other principles in various ways, as follows:

The diagram in Figure 8.27 illustrates how the principle of service contract usage relates to others.

Figure 8.27. The service contract and its relationship with other service-orientation principles.

 

8.4.3. Service loose coupling

Loose coupling is a state that supports a level of independence between services (or between service providers and requestors). As you may have already noticed, independence or non-dependency is a fundamental aspect of services and SOA as a whole. Therefore, the principle of persisting loose coupling across services supports the following other service-orientation principles:

Additionally, service loose coupling is directly implemented through the application of a related service-orientation principle:

Figure 8.28 demonstrates these relationships.

Figure 8.28. Service loose coupling and its relationship with other service-orientation principles.

 

8.4.4. Service abstraction

Part of building solutions with independent services is allowing those services to encapsulate potentially complex processing logic and exposing that logic through a generic and descriptive interface. This is the primary benefit of service abstraction, a principle that is related to others, as explained here:

These relationships are shown in Figure 8.29.

Figure 8.29. Service abstraction and its relationship with other service-orientation principles.

 

8.4.5. Service composability

Designing services so that they support composition by others is fundamental to building service-oriented solutions. Service composability therefore is tied to service-orientation principles that support the concept of service composition, as follows:

Figure 8.30 further illustrates these relationships.

Figure 8.30. Service composability and its relationship with other service-orientation principles.

 

8.4.6. Service autonomy

This principle applies to a service's underlying logic. By providing an execution environment over which a service has complete control, service autonomy relates to several other principles, as explained here:

The diagram in Figure 8.31 shows how service autonomy relates to these other principles.

Figure 8.31. Service autonomy and its relationship with other service-orientation principles.

 

8.4.7. Service statelessness

To successfully design services not to manage state requires the availability of resources surrounding the service to which state management responsibilities can be delegated. However, the principle of statelessness is also indirectly supported by the following service-orientation principles:

Service statelessness further supports the following principles:

Figure 8.32 illustrates how service statelessness relates to the other service-orientation principles.

Figure 8.32. Service statelessness and its relationship with other service-orientation principles.

 

8.4.8. Service discoverability

Designing services so that they are naturally discoverable enables an environment whereby service logic becomes accessible to new potential service requestors. This is why service discoverability is tied closely to the following service-orientation principles:

The diagram in Figure 8.33 shows how service discoverability fits in with the other service-orientation principles.

Figure 8.33. Service discoverability and its relationship with other service-orientation principles.

SUMMARY OF KEY POINTS

  • Service-orientation principles are not realized in isolation; principles relate to and support other principles in different ways.
  • Principles, such as service reusability and service composability, benefit from the support of other implemented principles.
  • Principles, such as service loose coupling, service contract, and service autonomy, provide significant support for the realization of other principles.

Категории