Differences

This shows you the differences between two versions of the page.

Link to this comparison view

it:ad:patterns:version_your_messages_strategy [2019/03/24 12:02] (current)
Line 1: Line 1:
 +# IT:​AD:​Patterns:​Version Your Messages Strategy #
 +
 +
 +
 +
 +<callout type="​Navigation"​ class="​small">​
 +* [[../​|(UP)]]
 +
 +
 +</​callout>​
 +
 +
 +<panel title="​Summary">​
 +
 +You can't get your message schemas back once others have invested time and effort into mapping them into their application. ​
 +
 +![](https://​dl.dropbox.com/​u/​11851202/​PUBLIC/​SKYS/​Posted/​IT/​AD/​Design/​Patterns/​Versioning/​stuckinmailbox.png)
 +
 +
 +You'll simply get a *lot* of irate 3rd party developers. Probably *vocal* irate 3rd party developers.
 +
 +
 +</​panel>​
 +
 +
 +## Notes ##
 +
 +
 +### APIs ###
 +
 +#### External APIs 
 +
 +* MUST: never *ever* let your API's directly expose [[IT/#​Domain Entities/​]]. No matter how simple they start out, [[IT/#​Domain Entities/]] will change over time to address new business needs. If your api's remote clients are tightly bound, and you go through with the changes, they will all break. Not a good scenario. A long term strategy is to map your [[IT/#​Domain Entities/]] to API [[#​IT/#​DTO/​]]s (DTOs are more appropriate than [[IT/#​Domain Entities/]] anyway as you can't serialize [[IT/#​Behaviour/​]] over the wire anyway, just properties -- which is all that DTOs are.
 +
 +#### Internal APIs ####
 +
 +* COULD: probably do not need to version your WCF calls across tiers of your own [[IT/​AD/​Design/​Technical/​Patterns/​DDD/​]] application. Can't think of a reason why yet, but there may be a case to consider if the application is being hosted in totally different Hosts Products. To Consider.