Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, obtendrá información sobre varias opciones de configuración de aprovisionamiento de eventos para .NET Orleans.
Configurar referencias de proyecto
Interfaces de grano
Como antes, las interfaces dependen solo del Microsoft.Orleans.Core
paquete porque la interfaz de grano es independiente de la implementación.
Implementaciones granulares
Los granos registrados deben derivar de JournaledGrain<TGrainState,TEventBase> o JournaledGrain<TGrainState>, que se define en el paquete Microsoft.Orleans.EventSourcing
.
Proveedores de coherencia de registros
Actualmente se incluyen tres proveedores de coherencia de registros (para el almacenamiento de estado, el almacenamiento de registros y el almacenamiento personalizado). Los tres están incluidos también en el paquete Microsoft.Orleans.EventSourcing
. Por lo tanto, todos los granos registrados ya tienen acceso a ellos. Para obtener una descripción de lo que hacen estos proveedores y cómo difieren, consulte Proveedores de coherencia de registros incluidos.
Configuración del clúster
Configure proveedores de coherencia de registros como cualquier otro Orleans proveedor. Por ejemplo, para incluir los tres proveedores (aunque probablemente no necesitará los tres), agréguelo al <Globals>
elemento del archivo de configuración:
<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>
Puede lograr lo mismo mediante programación. A partir de la versión 2.0.0 estable, Orleans y ClientConfiguration
ya no existen. Se han reemplazado por ClientBuilder y SiloBuilder
(tenga en cuenta que no hay ningún generador de clústeres).
builder.AddLogStorageBasedLogConsistencyProvider("LogStorage")
Atributos de la clase Grain
Cada clase de grano registrada debe tener un LogConsistencyProviderAttribute para especificar el proveedor de consistencia del registro. Algunos proveedores requieren además un StorageProviderAttribute, por ejemplo:
[StorageProvider(ProviderName = "OrleansLocalStorage")]
[LogConsistencyProvider(ProviderName = "LogStorage")]
public class EventSourcedBankAccountGrain :
JournaledGrain<BankAccountState>, IEventSourcedBankAccountGrain
{
//...
}
Por lo tanto, aquí "OrleansLocalStorage"
se usa para almacenar el estado de granos, mientras que "LogStorage"
es el proveedor de almacenamiento en memoria para eventos de EventSourcing.
atributos de LogConsistencyProvider
Para especificar el proveedor de coherencia de registros, agregue un [LogConsistencyProvider(ProviderName=...)]
atributo a la clase de grano y proporcione el nombre del proveedor como configurado en la configuración del clúster, por ejemplo:
[LogConsistencyProvider(ProviderName = "CustomStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain, ICustomStorage
{
// ...
}
atributos de StorageProvider
Algunos proveedores de coherencia de registros (incluidos LogStorage
y StateStorage
) usan un estándar StorageProvider
para comunicarse con el almacenamiento. Especifique este proveedor mediante un atributo independiente StorageProvider
, como se indica a continuación:
[LogConsistencyProvider(ProviderName = "LogStorage")]
[StorageProvider(ProviderName = "AzureBlobStorage")]
public class ChatGrain :
JournaledGrain<XDocument, IChatEvent>, IChatGrain
{
// ...
}
Proveedores predeterminados
Puede omitir los atributos LogConsistencyProvider
y/o StorageProvider
si se especifica un valor predeterminado en la configuración. Para ello, use el nombre Default
especial para el proveedor correspondiente. Por ejemplo:
<LogConsistencyProviders>
<Provider Name="Default"
Type="Orleans.EventSourcing.LogStorage.LogConsistencyProvider"/>
</LogConsistencyProviders>
<StorageProviders>
<Provider Name="Default"
Type="Orleans.Storage.MemoryStorage" />
</StorageProviders>