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 StateStorage
dahilLogStorage
) 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>