Search Results for

    Show / Hide Table of Contents

    兼容Grains

    当现有的Grains激活将要处理请求时,运行时将检查请求中的版本与Grains的实际版本是否兼容。Orleans不会在运行时推断要使用哪个策略,确定两个版本是否兼容的默认行为由GrainVersioningOptions.CompatibilityStrategy

    向后兼容(默认)

    定义

    如果满足以下条件,则Grain接口版本Vn可以与Vm向后兼容:

    • 接口名称未更改(或覆盖的类型代码)
    • Vm版本中存在的所有公共方法都在Vn版本中。重要的是,不要修改从Vm继承的方法的签名。:由于Orleans使用内部内置的序列化程序,因此修改/重命名字段(甚至私有)可能会使序列化中断。

    由于Vn与Vm相比可以增加其他方法,因此Vm与Vn不兼容。

    例

    如果在集群中,给定接口有两个版本,即V1和V2,并且该V2向后兼容V1:

    • 如果当前激活为V2,而请求的版本为V1,则当前激活将能够正常处理请求
    • 如果当前激活为V1,而请求的版本为V2,则将取消激活当前激活,并创建与V2兼容的新激活(请参见版本选择器策略)。

    完全兼容

    定义

    如果满足以下条件,则Grains接口版本Vn可以与Vm完全兼容:

    • Vn与Vm向后兼容
    • 在Vn版本中未添加任何公共方法

    如果Vn与Vm完全兼容,则Vm也与Vn完全兼容。

    例

    如果在集群中,给定接口有两个版本,即V1和V2,并且该V2与V1完全兼容:

    • 如果当前激活为V2,而请求的版本为V1,则当前激活将能够正常处理请求
    • 如果当前激活为V1,而请求的版本为V2,则当前激活也将能够正常处理请求
    • Improve this Doc
    In This Article
    Back to top Generated by DocFX