Aracılığıyla paylaş


Olay kaynağını belirleme yapılandırması

Bu makalede, .NET Orleansiçin çeşitli olay kaynak yapılandırma seçenekleri hakkında bilgi edineceksiniz.

Proje başvurularını yapılandırma

Tane arabirimleri

Daha önce olduğu gibi, hububat arabirimi uygulamadan bağımsız olduğundan arabirimler yalnızca Microsoft.Orleans.Core pakete bağlıdır.

Hububat uygulamaları

JournaledGrains'in pakette Microsoft.Orleans.EventSourcing tanımlanan veya JournaledGrain<TGrainState>'den JournaledGrain<TGrainState,TEventBase> türetilmiş olması gerekir.

Günlük tutarlılığı sağlayıcıları

Şu anda üç günlük tutarlılığı sağlayıcısı (durum depolama, günlük depolama ve özel depolama için) dahil ediyoruz. Üçü de pakette Microsoft.Orleans.EventSourcing yer alır. Bu nedenle, tüm Günlüklü Tahıllar zaten bu verilere erişebilir. Bu sağlayıcıların yaptıkları ve farkları hakkında bir açıklama için bkz . Dahil Edilen Günlük Tutarlılığı Sağlayıcıları.

Küme yapılandırması

Günlük tutarlılığı sağlayıcıları, diğer Orleans sağlayıcılar gibi yapılandırılır. Örneğin, üç sağlayıcıyı da dahil etmek için (elbette üçüne de ihtiyacınız olmayacaktır), bunu <Globals> yapılandırma dosyasının öğesine ekleyin:

<LogConsistencyProviders>
    <Provider Name="StateStorage"
        Type="Orleans.EventSourcing.StateStorage.LogConsistencyProvider" />
    <Provider Name="LogStorage"
        Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider" />
    <Provider Name="CustomStorage"
        Type="Orleans.EventSourcing.CustomStorage.LogConsistencyProvider" />
</LogConsistencyProviders>

Aynı şey program aracılığıyla da yapılabilir. 2.0.0 kararlı, ClientConfiguration ve ClusterConfiguration artık yok! Şimdi ve ile ClientBuilder SiloBuilder değiştirilmiştir (küme oluşturucu olmadığına dikkat edin).

builder.AddLogStorageBasedLogConsistencyProvider("LogStorage")

Grain sınıfı öznitelikleri

Günlük kaydı yapılan her tanecik sınıfının günlük tutarlılığı sağlayıcısını belirtmek için bir LogConsistencyProviderAttribute değeri olmalıdır. Bazı sağlayıcılar ek olarak bir StorageProviderAttributegerektirir, örneğin:

[StorageProvider(ProviderName = "OrleansLocalStorage")]
[LogConsistencyProvider(ProviderName = "LogStorage")]
public class EventSourcedBankAccountGrain :
    JournaledGrain<BankAccountState>, IEventSourcedBankAccountGrain
{
    //...
}

Bu nedenle burada "OrleansLocalStorage" EventSourcing olayları için bellek içi depolama sağlayıcısı olan tahıl durumunu "LogStorage" depolamak için kullanılır.

LogConsistencyProvider Öznitelik

Günlük tutarlılığı sağlayıcısını belirtmek için, grain sınıfına bir [LogConsistencyProvider(ProviderName=...)] öznitelik ekleyin ve küme yapılandırması tarafından yapılandırıldığı gibi sağlayıcının adını verin, örneğin:

[LogConsistencyProvider(ProviderName = "CustomStorage")]
public class ChatGrain :
    JournaledGrain<XDocument, IChatEvent>, IChatGrain, ICustomStorage
{
    // ...
}

StorageProvider Öznitelik

Bazı günlük tutarlılığı sağlayıcıları (ve StateStoragedahilLogStorage) depolama ile iletişim kurmak için standart bir Depolama Provider kullanır. Bu sağlayıcı aşağıdaki gibi ayrı StorageProvider bir öznitelik kullanılarak belirtilir:

[LogConsistencyProvider(ProviderName = "LogStorage")]
[StorageProvider(ProviderName = "AzureBlobStorage")]
public class ChatGrain :
    JournaledGrain<XDocument, IChatEvent>, IChatGrain
{
    // ...
}

Varsayılan sağlayıcılar

Yapılandırmada LogConsistencyProvider varsayılan bir değer belirtilmişse ve/veya StorageProvider özniteliklerini atlayın. Bu, ilgili sağlayıcı için özel ad Default kullanılarak yapılır. Örnek:

<LogConsistencyProviders>
    <Provider Name="Default"
        Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider"/>
</LogConsistencyProviders>
<StorageProviders>
    <Provider Name="Default"
        Type="Orleans.Storage.MemoryStorage" />
</StorageProviders>