Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule przedstawiono różne opcje konfiguracji określania źródła zdarzeń dla platformy .NET Orleans.
Konfigurowanie odwołań do projektu
Interfejsy ziarna
Jak poprzednio, interfejsy zależą tylko od pakietu Microsoft.Orleans.Core
, ponieważ interfejs ziarna jest niezależny od implementacji.
Implementacje modułu Grain
Ziarna dziennika muszą pochodzić z JournaledGrain<TGrainState,TEventBase> lub JournaledGrain<TGrainState>, które są zdefiniowane w pakiecie Microsoft.Orleans.EventSourcing
.
Dostawcy spójności logów
Obecnie mamy trzech dostawców spójności logów (dla magazynu stanów, magazynu logów i magazynu niestandardowego). Również wszystkie trzy są zawarte w pakiecie Microsoft.Orleans.EventSourcing
. W związku z tym wszystkie zarejestrowane ziarna mają już do nich dostęp. Aby uzyskać opis tego, co robią ci dostawcy i jak się różnią, zobacz Uwzględnione dostawcy spójności dzienników.
Konfiguracja klastra
Skonfiguruj dostawców spójności dzienników tak samo jak pozostali Orleans dostawcy. Aby na przykład uwzględnić wszystkich trzech dostawców (choć prawdopodobnie nie będziesz potrzebować wszystkich trzech), dodaj go do <Globals>
elementu pliku konfiguracji:
<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>
Można osiągnąć to samo programowo.
Orleans Począwszy od stabilnej wersji 2.0.0 ClientConfiguration
i ClusterConfiguration
już nie istnieją. Zostały one zastąpione przez ClientBuilder i SiloBuilder
(zwróć uwagę, że nie ma twórcy klastra).
builder.AddLogStorageBasedLogConsistencyProvider("LogStorage")
Atrybuty klasy ziarna
Każda klasa z dziennikowaniem ziarna musi mieć LogConsistencyProviderAttribute, aby określić dostawcę spójności dzienników. Niektórzy dostawcy dodatkowo wymagają elementu StorageProviderAttribute, na przykład:
[StorageProvider(ProviderName = "OrleansLocalStorage")]
[LogConsistencyProvider(ProviderName = "LogStorage")]
public class EventSourcedBankAccountGrain :
JournaledGrain<BankAccountState>, IEventSourcedBankAccountGrain
{
//...
}
W tym przypadku "OrleansLocalStorage"
jest używany do przechowywania stanu ziarna, natomiast "LogStorage"
jest dostawcą przechowywania w pamięci dla zdarzeń EventSourcing.
LogConsistencyProvider
atrybuty
Aby określić dostawcę spójności dzienników, dodaj atrybut [LogConsistencyProvider(ProviderName=...)]
do klasy ziarna i podaj nazwę dostawcy zgodnie z konfiguracją klastra, na przykład:
[LogConsistencyProvider(ProviderName = "CustomStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain, ICustomStorage
{
// ...
}
StorageProvider
atrybuty
Niektórzy dostawcy spójności dzienników (w tym LogStorage
i StateStorage
) używają standardu StorageProvider
do komunikacji z pamięcią masową. Określ tego dostawcę przy użyciu oddzielnego StorageProvider
atrybutu w następujący sposób:
[LogConsistencyProvider(ProviderName = "LogStorage")]
[StorageProvider(ProviderName = "AzureBlobStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain
{
// ...
}
Dostawcy domyślni
Można pominąć atrybuty LogConsistencyProvider
i/lub StorageProvider
, jeśli wartość domyślna jest określona w konfiguracji. W tym celu należy użyć specjalnej nazwy Default
odpowiedniego dostawcy. Przykład:
<LogConsistencyProviders>
<Provider Name="Default"
Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider"/>
</LogConsistencyProviders>
<StorageProviders>
<Provider Name="Default"
Type="Orleans.Storage.MemoryStorage" />
</StorageProviders>