本地开发和调试的时候,咱们可能不须要去关注集群和网络ip端口。因此对于本地开发模式,Orleans给了咱们比较简单的配置方式。html
在本地开发的配置模式下,Orleans会默认使用本地11111和30000做为Silo和网管的监听端口网络
此时咱们须要ClusterOptions
经过ISiloBuilder.Configure
方法进行配置。框架
ConfigureApplicationParts
用于将带有Grain类的程序集显式添加到应用程序设置中。因为WithReferences
扩展,它还会添加由程序集引用的全部程序集。完成这些步骤后,将创建Silo主机并启动Silo。async
下面是启动本地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的网关端口的群集oop
完成以后,咱们能够使用Connect()
让客户端链接到集群学习
下面是启动客户端链接到本地Silo的示例:ui
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环境下的分布式应用程序调试