Service Consumer A sends a message to Service A.
There are currently three duplicate implementations of Service A (Implementation 1, Implementation 2, Implementation 3).
The message sent by Service Consumer A is intercepted by Service Agent A (1), which
determines at runtime which implementation of Service A to forward the message to.
All three implementations of Service A reside on the same physical server.
You are told that after Service A was deployed, each of its three implementations was
claimed by a different IT department, which means each implementation of Service A has a
different owner. You are informed that a new service capability will soon need to be added
to Service A . This service capability will introduce new business logic specific to Service A
as well as logic required to access a shared database. What steps can be taken to ensure
that the service owners will each add the service capability in a consistent manner to their
respective implementations of Service A?
None of the above.B.
The Contract Centralization pattern can be applied so that when the new service
capability is added, the Service A service contract will become the primary contact point for
Service A . This will avoid Service Consumer A or any other potential service consumer
from being designed to access the shared database directly. The Service Abstraction
principle can be applied to further hide the implementation details so that Service
Consumer A and other service consumers are unaware of the fact that the shared
database is being accessed.C.
The Standardized Service Contract principle is applied to ensure that the new service
capability is consistently added to the service contract of each implementation and that it
extends the existing Service A service contract in a manner that is compliant with current
design standards. The Service Loose Coupling principle is applied to ensure that the new
service capability remains decoupled from the underlying logic and implementation so that
Service Consumer A does not become indirectly coupled to any new logic or to the shared
The Legacy Wrapper pattern can be applied to establish a new wrapper utility service
that will provide standardized data access service capabilities for the shared database.
This will avoid Service A from having to access the shared database directly and will further
support the application of the Service Loose Coupling principle between Service A and the
new utility service. By abstracting the data access logic into the wrapper service, there is
no need to add the new service capability to each implementation of Service A .