客户端配置
用于连接到 silo 的群集并将请求发送到 grain 的客户端是通过 IHostBuilder 和一些补充选项类以编程方式配置的。 与 silo 选项一样,客户端选项类遵循 .NET 中的“选项”模式。
用于连接到 silo 的群集并将请求发送到 grain 的客户端是通过 ClientBuilder 和一些补充选项类以编程方式配置的。 与 silo 选项一样,客户端选项类遵循 .NET 中的“选项”模式。
提示
如果只想启动本地 silo 和本地客户端以进行开发,请参阅本地开发配置。
将 Microsoft.Orleans.Clustering.AzureStorage NuGet 包添加到客户端项目。
客户端配置有几个关键方面:
- Orleans 群集信息
- 群集提供程序
- 应用程序部件
客户端配置示例:
var client = new HostBuilder()
.UseOrleansClient((context, clientBuilder) =>
{
clientBuilder.Configure<ClusterOptions>(options =>
{
options.ClusterId = "my-first-cluster";
options.ServiceId = "MyOrleansService";
})
.UseAzureStorageClustering(
options => options.ConfigureTableServiceClient(
context.Configuration["ORLEANS_AZURE_STORAGE_CONNECTION_STRING"]));
})
.Build();
using Orleans.Hosting;
var client = new ClientBuilder()
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "my-first-cluster";
options.ServiceId = "MyOrleansService";
})
.UseAzureStorageClustering(
options => options.ConnectionString = connectionString)
.ConfigureApplicationParts(
parts => parts.AddApplicationPart(
typeof(IValueGrain).Assembly))
.Build();
让我们分解此示例中使用的步骤:
Orleans 群集信息
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "orleans-docker";
options.ServiceId = "AspNetSampleApp";
})
这里我们设置了两个项:
- 将 ClusterOptions.ClusterId 设置为
"my-first-cluster"
:这是 Orleans 群集的唯一 ID。 使用此 ID 的所有客户端和 silo 都可以直接相互通信。 例如,有些人会选择对每个部署使用不同的ClusterId
。 - 将 ClusterOptions.ServiceId 设置为了
"AspNetSampleApp"
:这是应用程序的唯一 ID,该 ID 将由某些提供程序(例如持久性提供程序)使用。 此 ID 在各部署中应该是稳定的(不更改)。
群集提供程序
.UseAzureStorageClustering(
options => options.ConfigureTableServiceClient(connectionString);
.UseAzureStorageClustering(
options => options.ConnectionString = connectionString)
客户端将使用此提供程序发现群集中可用的所有网关。 有多个提供程序可供使用,这里我们在此示例中使用 Azure 表提供程序。
有关详细信息,请参阅服务器配置。
应用程序部件
.ConfigureApplicationParts(
parts => parts.AddApplicationPart(
typeof(IValueGrain).Assembly))
.WithReferences())
有关详细信息,请参阅服务器配置。