本地開發配置
本地開發和調試的時候,我們可能不需要去關注集群和網絡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環境下的分布式應用程序