it:ad:patterns:version_your_messages_strategy

Differences

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


it:ad:patterns:version_your_messages_strategy [2023/11/04 03:29] (current) – created - external edit 127.0.0.1
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.