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 )客户端配置
Orleans[NET Core 3.1] 学习笔记(三)( 1 )本地开发配置的更多相关文章
- Orleans[NET Core 3.1] 学习笔记(三)( 3 )服务端配置
		
服务端配置 Silo通过SiloHostBuilder和许多补充选项类以编程方式进行配置. Silo配置有几个关键方面: Orleans集群信息 集群提供程序(不知道咋翻译) Silo到Silo和Cl ...
 - Orleans[NET Core 3.1] 学习笔记(三)( 2 )客户端配置
		
客户端配置 通过一个ClientBuilder和多个补充选项类,以编程方式配置一个用于连接Silo集群并将请求发送至Grain的客户端. 客户端配置示例: var client = new Clien ...
 - Orleans[NET Core 3.1] 学习笔记(四)( 1 )创建项目
		
ClassRoom ClassRoom是一个练手demo,目的是为了能熟悉掌握Orleans的基本知识和使用方法,我会尽量在这个项目中加入更多的知识点,一边学一边练避免我看完文档就忘掉 创建项目 依旧 ...
 - Orleans[NET Core 3.1] 学习笔记(二)Hello World
		
项目结构 开始Orleans之前,我们都知道Orleans主要可以分为俩部分,Host和Client. 所以我们可以创建如下的项目结构: IGrain 一个包含Grain接口的库(.NET Stand ...
 - Orleans[NET Core 3.1] 学习笔记(一).NET环境下的分布式应用程序
		
前言 Orleans是一个跨平台的框架,用于搭建可扩展的分布式应用程序 第一次接触Orleans还是两年前做游戏服务器的时候,用SignalR+Orleans的组合,写起代码来不要太爽. 即将进入20 ...
 - Orleans[NET Core 3.1] 学习笔记(四)( 2 )获取Grain的方式
		
简介 在这一节,我们将介绍如何在Silo和Client中获取Grain及调用Grain Grain获取方式 从Grain内部获取: //根据特定的Key值创建或获取指定的Grain IStudent ...
 - Orleans[NET Core 3.1] 学习笔记(四)( 3 )监控Orleans Silo的方式 OrleansDashboard
		
简介 Orleans用起来的确很爽,更爽的是咱们有能监控它的工具. OrleansDashboard 这个工具是一个可视化的Silo监控工具,Silo和Grain的活跃状态一目了然,各个接口的响应速度 ...
 - CAS学习笔记三:SpringBoot自动配置与手动配置过滤器方式集成CAS客户端
		
本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式集成CAS客户端. 需要提前搭建 CAS 服务端,参考 https://www.cnblogs.com/hell ...
 - StackExchange.Redis学习笔记(三) 数据库及密码配置 GetServer函数
		
这一章主要写一些StackExchange.Redis的配置及不太经常用到的函数 数据库连接 下面是我的连接字符串,里面指定了地址,密码,及默认的数据库 Redis启动后默认会分成0-15个数据库,不 ...
 
随机推荐
- Python字符串类型判断错误
			
Python里面常用的字符串类型有str和unicode,如果要判断一个对象的类型,最好用basestring,否则可能会判断错误: str1 = "hello" str2 = u ...
 - nyoj  1112-求次数  (string, substr(begin, length), map, pair)
			
1112-求次数 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:8 难度:2 题目描述: 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新 ...
 - nyoj  1071-不可以!(a*b + fabs(a*b))
			
1071-不可以! 内存限制:64MB 时间限制:1000ms 特判: No 通过数:10 提交数:18 难度:1 题目描述: 判断:两个数x.y的正负性. 要求:不可以使用比较运算符,即" ...
 - ArcGIS API For Javascript :如何在地图上做出点位脉冲闪烁的效果
			
日常地图表达中我们通常使用的地图符号多是静态地图符号,时间久了会造成视觉审美疲劳,也没有现代感. 在这种背景下,对现有地图符号进行简单处理,即可得到色彩鲜艳,对比度强烈,活灵活现的地图表达形式. 灵感 ...
 - man 与 help
			
man帮助文档被划分为节 序号 节号 说明 1 1 命令帮助信息 2 2 系统调用函数的帮助信息(内核提供的接口函数) 3 3 库函数帮助信息 4 4 设备文件帮助信息 5 5 配置文档帮助说明 6 ...
 - WPS Office 2012专业版与WPS2019政府云办公增强版下载安装与体验
			
WPS Office 2012专业版与WPS2019政府云办公增强版下载安装与体验 一.WPS Office 2012专业版. 优点:没有广告,很清爽,界面很人性化.是我于2019年11月找出来安装测 ...
 - ubuntu server 1604 配置网络信息
			
对于新安装的linux 服务器(ubuntu server 1604) 一,配置网络 连接网线与路由器 查看系统的网卡信息 ifconfig -a //列出所有的网卡信息,不管启用还是没有启用的 ...
 - Spring与Redis整合(spring-data-redis)
			
maven依赖 <properties> <!-- redis 版本 --> <redis.version>2.9.0</redis.version> ...
 - HTML 空元素(转)
			
HTML 空元素 在 HTML 中,通常在一个空元素上使用一个闭标签是无效的.例如,<input type="text"> </input> 的闭标签是无效 ...
 - linux bash shell编程之参数变量和流程控制。
			
参数变量:用来向脚本中传递参数 我们在执行脚本的时候可以在其后面加入一些参数,通常来说这些参数与脚本中变量为对应关系. start.sh argu1 argu2 引用方式: $1,,2,……${10} ...