Contract Denormalization (Erl)
How can a service contract facilitate consumer programs with differing data exchange requirements?
Services with strictly normalized contracts can impose unnecessary functional and performace demands on some consumer programs.
Service contracts can include a measured extent of denormalization, allowing multiple capabilities to redundantly express core functions in different ways for different types of consumer programs.
The service contract is carefully extended with additional capabilities that provide functional variations of a primary capability.
Overuse of this pattern on the same contract can dramatically increase its size, making it difficult to interpret and unwieldy to govern.
Equipped with additional (albeit redundant) capabilities, the Invoice service is able to better accommodate the individual requirements of the three consumers.