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環境下的分布式應用程序

上一節Orleans[NET Core 3.1] 學習筆記(二)Hello World

下一節Orleans[NET Core 3.1] 學習筆記(三)( 2 )客戶端配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM