Orleans[NET Core 3.1] 学习笔记(三)( 1 )本地开发配置
本地开发配置
本地开发和调试的时候,我们可能不需要去关注集群和网络ip端口。所以对于本地开发模式,Orleans给了我们比较简单的配置方式。
Silo配置
在本地开发的配置模式下,Orleans会默认使用本地11111和30000作为Silo和网管的监听端口
此时我们需要ClusterOptions
通过ISiloBuilder.Configure
方法进行配置。
ConfigureApplicationParts
用于将带有Grain类的程序集显式添加到应用程序设置中。由于WithReferences
扩展,它还会添加由程序集引用的所有程序集。完成这些步骤后,将建立Silo主机并启动Silo。
下面是启动本地Silo的示例:
public class Program
{
public static async Task Main(string[] args)
{
try
{
var host = await StartSilo();
Console.WriteLine("按回车键停止...");
Console.ReadLine();
await host.StopAsync();
return;
}
catch (Exception ex)
{
Console.WriteLine(ex);
return;
}
}
private static async Task<ISiloHost> StartSilo()
{
var builder = new SiloHostBuilder()
// 配置Silo只使用开发集群,并监听本地主机。
.UseLocalhostClustering()
// 配置ClusterId和ServiceId
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "MyAwesomeService";
})
// 配置连接
.Configure<EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback)
// 使用任何支持Microsoft.Extensions.logging的日志框架配置日志记录
// 在本例中,使用Microsoft.Extensions.Logging.Console包进行日志记录.
.ConfigureLogging(logging => logging.AddConsole());
var host = builder.Build();//运行给定的配置来初始化主机。只能调用一次。
await host.StartAsync();//启动当前Silo并等待
return host;
}
}
客户端配置
现在我们需要配置ClientBuilder
与本地Silo指定的群集ID相匹配的群集ID,并将静态群集指定为指向Silo的网关端口的群集
完成之后,我们可以使用Connect()
让客户端连接到集群
下面是启动客户端连接到本地Silo的示例:
client = new ClientBuilder()
// 配置客户端以连接到本地主机上的Silo
.UseLocalhostClustering()
// 配置ClusterId和ServiceId
.Configure<ClusterOptions>(options =>
{
options.ClusterId = "dev";
options.ServiceId = "MyAwesomeService";
})
.ConfigureLogging(logging => logging.AddConsole())
var client = builder.Build();
await client.Connect();
便捷路由
目录 : Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序
我不会,但可以学。