Share via


相容的粒紋

當現有的粒紋啟用即將處理要求時,執行階段會檢查要求中的版本,以及實際的粒紋版本是否相容。 Orleans 不會在執行階段推斷要使用的原則。 判斷兩個版本是否相容的預設行為是由 Orleans.Versions.Compatibility.CompatibilityStrategy 所決定。

回溯相容 (預設)

定義

在下列情況下,粒紋介面版本 Vn 可能會與 Vm 回溯相容:

  • 介面的名稱不會變更 (或覆寫的 typecode)。
  • Vm 版本中的所有公用方法皆在 Vn 版本中。 請務必不要修改繼承自 Vm 方法的簽章:因為 Orleans 使用內部內建序列化程式,修改/重新命名欄位 (甚至是私用) 都可能使序列化中斷。

由於 Vn 可將新增的方法與 Vm 比較,因此 Vm 與 Vn 不相容。

範例

如果我們在叢集中有兩個版本的指定介面 (V1 和 V2),且該 V2 與 V1 回溯相容:

  • 如果目前的啟用為 V2 而要求的版本為 V1,則目前的啟用將能夠正常處理要求
  • 如果目前的啟用為 V1 而要求的版本為 V2,則會停用目前的啟用,並建立與 V2 相容的新啟用 (請參閱版本選取器策略)。

完全相容

定義

在下列情況下,粒紋介面版本 Vn 可能會與 Vm 完全相容:

  • Vn 與 Vm 是回溯相容
  • Vn 版本中未新增任何公用方法

如果 Vn 與 Vm 完全相容,則 Vm 也會與 Vn 完全相容。

範例

如果我們在叢集中有兩個版本的指定介面 (V1 和 V2),且該 V2 與 V1 完全相容:

  • 如果目前的啟用為 V2 而要求的版本為 V1,則目前的啟用將能夠正常處理要求
  • 如果目前的啟用為 V1 而要求的版本為 V2,則目前的啟用也將能夠正常處理要求