Fabric App Versioning with Engagement Artifacts
From Quantum V9SP1 onwards, Quantum Fabric supports versioning of Fabric apps with Engagement artifacts. Versioning is the process of assigning unique version numbers to unique states of software. App Versioning is useful for handling changes to an API or service. For example, additions and changes to an API that cannot cause an error in the existing API can be handled within one version. If there are additions and changes to an API that can result in errors or compatibility issues, the changes should be introduced in a new version of the API. For more information on App Versioning in Quantum Fabric refer to App Versioning.
Use Case
The following use case describes the conditions and scenario for using App Versioning in Quantum Fabric along with Engagement Service.
Scenario: Weather app version change with Engagement Service
A Quantum Fabric app named WeatherApp-A uses an Engagement service named Weather. Currently, there is only one version of the Weather service, version 1.0. The Weather service sends a weather update (push notification) to all the subscribers on an hourly basis. The WeatherApp-A is deployed to production.
The WeatherApp-A developer requires the capability to send weather updates (push notifications) in every fifteen minutes. The back-end developer configures WeatherApp-A and edits the Weather service. The back-end developer saves a new version of Weather service, with the same app name but a different version namely WeatherApp-A 2.0. Once the new version is ready, a new Engagement service app is linked to WeatherApp-A 2.0. Once the new version is published the change to send pushes every fifteen minutes gets reflected, the updated Engagement service works.
At this point, all existing instances of WeatherApp-A invocations to Weather service start getting responses from version 2.0. If there are existing subscriptions for any older version of the same app for which the new version has been published, then such subscriptions are made invalid.
Fabric App Versioning along with Engagement Services
When you save a service as a new version, Quantum Fabric unlinks the service from the Quantum Fabric application, and links it with the new version. When you create a new service, Quantum Fabric creates the new service as version 2.0.
For the first version of an app the FabricAppBaseId and FabricAppId remain same. When a new version of the app is created the FabricAppBaseId remains same but the FabricAppId changes. Whenever a subscription call is made to any version of the app, the Engagement server unsubscribes that subscriber from the previously subscribed app versions. Therefore, at any given point in time, an app subscriber can be subscribed to only one version of the app. If there are existing subscriptions for any older version of the same app for which the new version has been published, then such subscriptions are made invalid.
NOTE: The FabricAppBaseId and FabricAppId are created by the Quantum Fabric Console.
API Versioning Compatibility
API Versioning is backward compatible with previous versions of Quantum Fabric.
- If you want to use app versioning along with Engagement Services with apps created prior to V9SP1, the Fabric app needs to be republished at least once.