Delen via


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>