div | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
|
Overview
...
As new functionality is added to the platform and new features are added to the generated source code, source code generated by ADM changes as well. There are several facets to generated ADM source that have compatibility impacts to consider:
- ADM generated source depends on platform APIs that may not exist in earlier versions.
- ADM objects are serialized between different versions of the platform, so there are wire format considerations.
- The application's ADM model is changing (new types and fields may be added or removed).
The below sections discuss the compatibility implications of
Compatibility Goals
Wire Compatibility
Wire compatibility refers to the ability to be able to deserialize messages and entities off the wire or from disk between different versions.
- Within a major version of X wire compatibility is maintained unless there are extraordinary circumstances. So regardless of API compatibility level in the generated code it should always be possible to deserialize messages that were generated and serialized with the same major version.
- Note, however, that wire compatibility is contingent on the application model remaining compatible (e.g. fields not removed and field ids not changed).
...
API compatibility refers to the compatiblity compatibility between code generated by one version of the platform, and its compatiblity compatibility at runtime with another version.
...
For small projects that are not versioned independently and are all expected to operated against the same Talon version then regenerating ADM models with each release is the best way to ensure that your generated models are API compatible with the runtime.
...
If you have relatively few models, simply having each project (micro-app) generate and build its own private copy of the generated ADM source code is a simple approach to ensure that each project can use ADM code generated with their target platform version. It can break down if your organization has a lot of shared models and Stategy 2 below may be more appropriate.
...