本地開發和調試的時候,咱們可能不須要去關注集羣和網絡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環境下的分佈式應用程序調試