Aracılığıyla paylaş


Heterojen silolara genel bakış

Belirli bir kümede silolar farklı bir tane türü kümesini destekleyebilir:

Heterogeneous silos overview diagram.

Bu örnekte küme , EDCBtüründeki Atanecikleri destekler:

  • Tahıl türleri A ve B Silo 1 ve 2 üzerine yerleştirilebilir.
  • Tahıl türü C Silo 1, 2 veya 3 üzerine yerleştirilebilir.
  • Tahıl türü D yalnızca Silo 3 üzerine yerleştirilebilir
  • Tahıl Türü E yalnızca Silo 4 üzerine yerleştirilebilir.

Tüm silolar kümenin tüm tanecik türlerinin arabirimlerine başvurmalıdır, ancak tane sınıfları yalnızca bunları barındıracak silolar tarafından başvurulmalıdır. İstemci, belirli bir Grain Türünü hangi silonun desteklediğini bilmiyor.

Önemli

Belirli bir tanecik türü uygulaması, onu destekleyen her siloda aynı olmalıdır.

Aşağıdaki senaryo geçerli değil :

Silo 1 ve 2'de:

public class C: Grain, IMyGrainInterface
{
   public Task SomeMethod() { /* ... */ }
}

Silo 3'te:

public class C: Grain, IMyGrainInterface, IMyOtherGrainInterface
{
   public Task SomeMethod() { /* ... */ }
   public Task SomeOtherMethod() { /* ... */ }
}

Yapılandırma

Yapılandırma gerekmez, kümenizdeki her siloya farklı ikili dosyalar dağıtabilirsiniz. Ancak gerekirse siloların ve istemcilerin özelliğiyle TypeManagementOptions.TypeMapRefreshInterval desteklenen türlerdeki değişiklikleri denetleme aralığını değiştirebilirsiniz.

Test amacıyla, silolarda dışlamak istediğiniz türlerin adlarının listesi olan özelliğini GrainClassOptions.ExcludedGrainTypeskullanabilirsiniz.

Sınırlamalar

  • desteklenen Tanecik Türleri kümesi değiştiyse Bağlan istemcilere bildirim yapılmaz. Önceki örnekte:
    • Silo 4 kümeden ayrılırsa, istemci yine türündeki Etaneciklere çağrı yapmaya çalışır. Çalışma zamanında bir OrleansExceptionile başarısız olur.
    • İstemci, Silo 4 kümeye katılmadan önce kümeye bağlandıysa, istemci türündeki Etaneciklere çağrı yapamaz. ile ArgumentExceptionbaşarısız olur.
  • Durum bilgisi olmayan taneler desteklenmez: Kümedeki tüm silolar aynı durum bilgisi olmayan tane kümesini desteklemelidir.
  • ImplicitStreamSubscriptionAttributedesteklenmez ve bu nedenle Akışlar yalnızca Orleans Açık abonelikler kullanılabilir.