The reusability of a service depends a lot on its design and purpose. By "reusability" is meant in how applications or larger services, can a given smaller service be reused. I'll explain this with a small example:
Imagine you have two applications, A and B, that both need customer information. Application A only needs the customers first name and last name, but application B needs the customers first name, last name, customer number, phone number, email address etc. The requirements are summarized here:
Application A -------------- - First Name - Last Name Application B -------------- - First Name - Last Name - Customer Number - Phone Number - Email Address - etc.
In order to service both application A and B you have two options:
- Create one big Customer Service which returns all customer information
- Create two Customer Services. One that returns all customer information, and one that only returns first name and last name.
From a service reusability perspective it would of course be nice to only have one customer service to develop and maintain. This service could then be reused in both appliation A and B.
From a performance perspective though, the one big customer service would impose an overhead on the communication when used by application A (which only needs first name and last name), because the big customer service sends back more data than application A needs.
The design choice between one wide service or multiple tailored services is illustrated here:
|Service Reuse - Reuse one wide service and live with overhead, or create services tailored for each applications needs?|