Heterojen silolara genel bakış
Belirli bir kümede silolar farklı bir tane türü kümesini destekleyebilir:
Bu örnekte küme , E
D
C
B
türündeki A
tanecikleri destekler:
- Tahıl türleri
A
veB
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
E
taneciklere ç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
E
taneciklere çağrı yapamaz. ile ArgumentExceptionbaşarısız olur.
- Silo 4 kümeden ayrılırsa, istemci yine türündeki
- 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.