版本

原文地址:https://docs.corda.net/versioning.html

随着 Corda 平台的演进以及更多的功能被添加,拥有一个版本管理系统变得越来越重要,它需要能够允许用户很容易地在不同版本间进行比较。Corda 的每个 Release 都会使用有语义的版本名称,例如 major.minor.patch。这对于在公共域中发布时很有用的,但对于在这个平台上工作的开发者来说可能不是很友好。首先它需要被解析然后这会被分解成三个部分,以此来确定 API 具有的差异。 Release 版本还是很有用的,为了 debug 的目的,节点所发送的每个 MQ 的消息都会将这个版本信息附加到 release-version 的 header 属性中。

使用一个自增长的数值来表示 Corda 平台的 API 版本会更容易一些,这被称为平台版本(Platform Version)。这个跟 Android 的 API Level 类似。它从1 开始,对于在整个平台中修改任何的公有 APIs 的每个新的 release 会加1。这包括节点自身的共有 APIs,RPC 系统,消息系统,序列化等。API 的向后兼容性一直都是被考虑和维护的,这样就不要从老的 APIs 向新版本迁移。仅仅在很少的情况下 APIs 可能会被移除,比如为了一些安全问题。在平台版本和 release version 之间是没有关系的,对于 major,minor 或者 patch 值的变化可能会也可能不会增加平台的版本。

平台版本是节点的 NodeInfo 对象中的一部分,它可以从 ServiceHub 中获取到。这个允许一个 CorDapp 能够找到它正在运行的是那个版本,并且确定一个指定的功能是不是可用。当一个节点在网络地图服务中注册的时候,它会使用节点的平台版本来强制网络使用一个最低版本的要求。

注意:未来的版本中可能会引入一个目标平台版本的概念,这个会跟 Android 的 targetSdkVersion 类似,这对于平台的行为变动提供了一个可维护的兼容性。