Configuratie van gebeurtenisbronnen
In dit artikel vindt u informatie over verschillende configuratieopties voor gebeurtenisbronnen voor .NET Orleans.
Projectverwijzingen configureren
Grain Interfaces
Net als voorheen zijn interfaces alleen afhankelijk van het Microsoft.Orleans.Core
pakket, omdat de graaninterface onafhankelijk is van de implementatie.
Grain-implementaties
JournaledGrains moet zijn afgeleid van JournaledGrain<TGrainState,TEventBase> of JournaledGrain<TGrainState>, dat is gedefinieerd in het Microsoft.Orleans.EventSourcing
pakket.
Providers voor logboekconsistentie
We bevatten momenteel drie providers voor logboekconsistentie (voor statusopslag, logboekopslag en aangepaste opslag). Alle drie zijn ook opgenomen in het Microsoft.Orleans.EventSourcing
pakket. Daarom hebben alle Journaled Grains al toegang tot deze. Zie Opgenomen providers voor logboekconsistentie voor een beschrijving van wat deze providers doen en hoe ze verschillen.
Clusterconfiguratie
Providers voor logboekconsistentie worden net als andere Orleans providers geconfigureerd. Als u bijvoorbeeld alle drie de providers wilt opnemen (natuurlijk hebt u waarschijnlijk niet alle drie nodig), voegt u dit toe aan het <Globals>
element van het configuratiebestand:
<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>
Hetzelfde kan programmatisch worden bereikt. Naar 2.0.0 stabiel, ClientConfiguration en ClusterConfiguration bestaan niet meer! Het is nu vervangen door een ClientBuilder en een SiloBuilder
(u ziet dat er geen clusterbouwer is).
builder.AddLogStorageBasedLogConsistencyProvider("LogStorage")
Kenmerken van de grainklasse
Elke journaled grain-klasse moet een LogConsistencyProviderAttribute om de logboekconsistentieprovider op te geven. Voor sommige providers is ook een StorageProviderAttribute, bijvoorbeeld:
[StorageProvider(ProviderName = "OrleansLocalStorage")]
[LogConsistencyProvider(ProviderName = "LogStorage")]
public class EventSourcedBankAccountGrain :
JournaledGrain<BankAccountState>, IEventSourcedBankAccountGrain
{
//...
}
"OrleansLocalStorage"
Hier wordt dus gebruikt voor het opslaan van de graanstatus, waar was "LogStorage"
de in-memory opslagprovider voor EventSourcing-gebeurtenissen.
LogConsistencyProvider
Kenmerken
Als u de provider voor logboekconsistentie wilt opgeven, voegt u een [LogConsistencyProvider(ProviderName=...)]
kenmerk toe aan de graanklasse en geeft u de naam van de provider op zoals geconfigureerd door de clusterconfiguratie, bijvoorbeeld:
[LogConsistencyProvider(ProviderName = "CustomStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain, ICustomStorage
{
// ...
}
StorageProvider
Kenmerken
Sommige providers voor logboekconsistentie (inclusief LogStorage
en StateStorage
) gebruiken een standaard StorageProvider om te communiceren met opslag. Deze provider wordt als volgt opgegeven met een afzonderlijk StorageProvider
kenmerk:
[LogConsistencyProvider(ProviderName = "LogStorage")]
[StorageProvider(ProviderName = "AzureBlobStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain
{
// ...
}
Standaardproviders
Het is mogelijk om de LogConsistencyProvider
en/of de StorageProvider
kenmerken weg te laten als er een standaardwaarde is opgegeven in de configuratie. Dit wordt gedaan met behulp van de speciale naam Default
voor de respectieve provider. Voorbeeld:
<LogConsistencyProviders>
<Provider Name="Default"
Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider"/>
</LogConsistencyProviders>
<StorageProviders>
<Provider Name="Default"
Type="Orleans.Storage.MemoryStorage" />
</StorageProviders>