Megosztás a következőn keresztül:


Esemény-forráskonfiguráció

Ebben a cikkben megismerkedhet a .NET Orleanskülönböző esemény-beszerzési konfigurációs beállításaival.

Projekthivatkozások konfigurálása

Szemcsés interfészek

Mint korábban, az interfészek csak a Microsoft.Orleans.Core csomagtól függenek, mivel a szemcsés interfész független a megvalósítástól.

Szemcsés implementációk

A JournaledGrains-nek a csomagban Microsoft.Orleans.EventSourcing definiált vagy JournaledGrain<TGrainState>abból JournaledGrain<TGrainState,TEventBase> kell származnia.

Naplókonzisztencia-szolgáltatók

Jelenleg három naplókonzisztenciát biztosító szolgáltatót tartalmazunk (az állapottároláshoz, a naplótároláshoz és az egyéni tároláshoz). Mind a három a csomagban Microsoft.Orleans.EventSourcing található. Ezért minden naplózott szemcse már rendelkezik hozzáféréssel ezekhez. A szolgáltatók működésének és eltéréseinek leírását a belefoglalt naplókonzisztencia-szolgáltatók című témakörben talál.

Fürtkonfiguráció

A naplókonzisztencia-szolgáltatók ugyanúgy vannak konfigurálva, mint bármely más Orleans szolgáltató. Ha például mindhárom szolgáltatót fel szeretné venni (természetesen nem lesz szüksége mind a háromra), adja hozzá a <Globals> konfigurációs fájl eleméhez:

<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>

Ugyanezt programozott módon is el lehet érni. Továbblépés a 2.0.0-s stabil verzióra, a ClientConfiguration és a ClusterConfiguration már nem létezik! Ezt a helyére egy és egy SiloBuilder (figyelje meg, hogy nincs fürtszerkesztő) váltotta felClientBuilder.

builder.AddLogStorageBasedLogConsistencyProvider("LogStorage")

Szemcsés osztály attribútumai

Minden naplózott gabonaosztálynak rendelkeznie kell egy LogConsistencyProviderAttribute naplókonzisztencia-szolgáltató megadásához. Egyes szolgáltatóknak emellett szükség van például a StorageProviderAttributekövetkezőre:

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

A rendszer tehát "OrleansLocalStorage" a gabonaállapot tárolására szolgál, ahol az EventSourcing események memóriabeli tárolási szolgáltatója volt "LogStorage" .

LogConsistencyProvider Attribútumok

A naplókonzisztencia-szolgáltató megadásához adjon hozzá egy [LogConsistencyProvider(ProviderName=...)] attribútumot a gabonaosztályhoz, és adja meg a szolgáltató nevét a fürtkonfiguráció által konfigurált módon, például:

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

StorageProvider Attribútumok

Egyes naplókonzisztencia-szolgáltatók (beleértve LogStorage és StateStorage) szabványos StorageProvidert használnak a tárolóval való kommunikációhoz. Ez a szolgáltató egy külön StorageProvider attribútummal van megadva, az alábbiak szerint:

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

Alapértelmezett szolgáltatók

Kihagyhatja az LogConsistencyProvider és/vagy az StorageProvider attribútumokat, ha a konfigurációban alapértelmezett érték van megadva. Ez a megfelelő szolgáltató speciális nevének Default használatával történik. Példa:

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