Orleans 2.0 官方文档 —— 5.5.9 集群和客户端 -> 配置指南 -> 配置ADO.NET提供程序

配置ADO.NET提供程序

Orleans的任何可靠部署,都需要使用持久化存储来保持系统的状态,特别是Orleans集群成员身份表和提醒器(Reminder)。可用的选项之一,是通过ADO.NET提供程序来使用SQL数据库。

为了将ADO.NET用于持久性,集群或提醒器,需要将ADO.NET提供程序配置为silo配置的一部分,并且在群集的情况下,还需要将其配置为客户端配置的一部分。

silo配置代码应如下所示:

var siloHostBuilder = new SiloHostBuilder();
var invariant = "System.Data.SqlClient"; // for Microsoft SQL Server
var connectionString = "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Orleans;Integrated Security=True;Pooling=False;Max Pool Size=200;Asynchronous Processing=True;MultipleActiveResultSets=True";
//use AdoNet for clustering 
siloHostBuilder.UseAdoNetClustering(options =>
            {
                options.Invariant = invariant;
                options.ConnectionString = connectionString;
            });
//use AdoNet for reminder service
siloHostBuilder.UseAdoNetReminderService(options =>
            {
                options.Invariant = invariant;
                options.ConnectionString = connectionString;
            });
//use AdoNet for Persistence
siloHostBuilder.AddAdoNetGrainStorage("GrainStorageForTest", options =>
            {
                options.Invariant = invariant;
                options.ConnectionString = connectionString;
            });

客户端配置代码应如下所示:

var siloHostBuilder = new SiloHostBuilder();
var invariant = "System.Data.SqlClient";
var connectionString = "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Orleans;Integrated Security=True;Pooling=False;Max Pool Size=200;Asynchronous Processing=True;MultipleActiveResultSets=True";
//use AdoNet for clustering 
siloHostBuilder.UseAdoNetClustering(options =>
            {
                options.Invariant = invariant;
                options.ConnectionString = connectionString;
            });

其中,ConnectionString被设置为有效的AdoNet 服务器连接字符串。

为了使用ADO.NET提供程序用于持久化、提醒器或集群,有一些用于创建数据库工件的脚本,所有将承载Orleans silo的服务器,都需要访问这些脚本。缺少对目标数据库的访问,是我们看到开发人员犯的一个典型错误。

在AdoNet扩展的nuget上安装或执行nuget还原后,脚本被复制到项目目录\ OrleansAdoNetContent,其中每个受支持的ADO.NET扩展都有自己的目录。我们将AdoNet nugets拆分为每个功能单元:Microsoft.Orleans.Clustering.AdoNet用于群集,Microsoft.Orleans.Persistence.AdoNet用于持久性和Microsoft.Orleans.Reminders.AdoNet用于提醒器。

你可能感兴趣的:(Orleans)