Hub'lı arabirim sürümü oluşturma

Bu makalede, grenli arabirim sürümü oluşturma özelliğini kullanmayı öğreneceksiniz. Grain durumunun sürüm oluşturması kapsam dışında.

Genel bakış

Belirli bir kümede silolar, bir dilim türünün farklı sürümlerini destekleyebilir.

Cluster with different versions of a grain

Bu örnekte, istemci ve Silo{1,2,3} , hub'lı arabirim A sürüm 1 ile derlendi. Silo 4, sürüm 2 ile A derlendi.

Sınırlamalar

  • Durum bilgisi olmayan çalışanda sürüm oluşturma yok
  • Akış arabirimleri sürümlenmemiş

Sürüm oluşturmayı etkinleştirme

Sürüm özniteliği açıkça tanecik arabirimine eklenmiyorsa, tanecikler varsayılan 0 sürümüne sahiptir. Grain arabiriminde VersionAttribute'u kullanarak sürüm dilimini kullanabilirsiniz:

[Version(X)]
public interface IVersionUpgradeTestGrain : IGrainWithIntegerKey
{
}

Burada X , genellikle monoton olarak artan tanecik arabiriminin sürüm numarasıdır.

Grain sürüm uyumluluğu ve yerleşimi

Bir kümeye sürümlenmiş bir taneden gelen bir çağrı geldiğinde:

  • Etkinleştirme yoksa uyumlu bir etkinleştirme oluşturulur
  • Etkinleştirme varsa:

Varsayılan olarak:

  • Tüm sürümlenmiş taneciklerin yalnızca geriye dönük uyumlu olması gerekir (bkz . geriye dönük uyumluluk yönergeleri ve uyumlu tanecikler). Bu, v1 taneciklerinin v2 tanesine çağrı yapabildiği, ancak v2 tanelinin v1'i çağıramayacağı anlamına gelir.
  • Kümede birden çok sürüm olduğunda, yeni etkinleştirme uyumlu bir siloya rastgele yerleştirilir.

Bu varsayılan davranışı aracılığıyla GrainVersioningOptionsdeğiştirebilirsiniz:

var silo = new HostBuilder()
    .UseOrleans(c =>
    {
        c.Configure<GrainVersioningOptions>(options =>
        {
            options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
            options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
        });
    });