介绍

Orleans.MultiClient 是一个 Orleans 复合客户端,只需要简单配置就可以简单高效连接和请求 Orleans 服务。
Orleans.MultiClient 可以轻松连接多个不同服务的 Orleans 服务,在请求 Orleans 时会根据请求的接口自动寻找 Orleans 客户端,使用者无需关心底层的实现。

Orleans.MultiClient 的开源地址和 Demo 可以在 GitHub 源代码下载查看。

https://github.com/AClumsy/Orleans.MultiClient/

使用

从 NuGet 下载 Orleans.MultiClient 包。

dotnet add package Orleans.MultiClient

简单例子

如果有一个服务需要同时调用 A 和 B 两个 Orleans 服务,看一看 Orleans.MultiClient 是怎么更简单的调用 Orleans 服务的。
第一步:先引用 Orleans.MultiClient 包和 AB 的接口,分别为 IHelloA、 IHelloB
第二步:需要把 Orleans.MultiClient 注入到 DI 容器 中,并且配置添加两个 Orleans Client。

提示:Orleans.MultiClient 暂时只支持 .NET Core 平台上面使用。

services.AddOrleansMultiClient(build =>{    build.AddClient(opt =>    {        opt.ServiceId = "A";        opt.ClusterId = "AApp";        opt.SetServiceAssembly(typeof(IHelloA).Assembly);        opt.Configure = (b =>        {            b.UseLocalhostClustering();        });    });    build.AddClient(opt =>    {        opt.ServiceId = "B";        opt.ClusterId = "BApp";        opt.SetServiceAssembly(typeof(IHelloB).Assembly);        opt.Configure = (b =>        {            b.UseLocalhostClustering(gatewayPort: 30001);        });    });});

第二步:开始调用对应的 Orleans 服务。
IOrleansClient 是 Orleans.MultiClient 的复合客户端,通过 IOrleansClient 调用 Orleans 服务。

var serviceA = _serviceProvider.GetRequiredService<IOrleansClient>().GetGrain<IHelloA>(1);var resultA = serviceA.SayHello("Hello World Success GrainA").GetAwaiter().GetResult();

var serviceB = _serviceProvider.GetRequiredService<IOrleansClient>().GetGrain<IHelloB>(1);var resultB = serviceB.SayHello("Hello World Success GrainB").GetAwaiter().GetResult();

简单吧,只要配置好客户端之后,在使用的过程中,无需管怎么连接 Orleans ,只要通过依赖注入得到 IOrleansClient 就可以轻松的请求 Orleans 服务。

配置

注入到 DI 容器

AddOrleansMultiClient :把 Orleans.MultiClient 注入到 DI 容器 中,使用时需要通过依赖注入得到 IOrleansClient 。

添加多个 Client

AddClient: 添加多个 Orleans 客户客户端,添加客户端时需要配置 Orleans 相关选项。 Orleans.MultiClient 提供了函数和 IConfiguration 两种方式进行配置。
使用 IConfiguration 进行配置时需要注意配置文件的内容必须是 IList<OrleansClientOptions>类型的。

services.AddOrleansMultiClient(build =>{    build.AddClient((OrleansClientOptions opt) =>{       ...    }});

全局 Orleans 服务配置

Configure:如果所有的 Orleans 的连接配置是一样的情况下,可以配置全局的 Orleans 服务配置。
比如:如果所有的 Orleans Silo 都是通过 Consul 进行服务发现的,就可以配置一个全局配置。

services.AddOrleansMultiClient(build =>{    build.Configure(b =>{        b.UseConsulClustering(o =>{            o.Address = new Uri("https://127.0.0.1:8500");        });    });}

OrleansClientOptions 配置

  • ServiceList:用于在 IOrleansClient 调用接口时和 Orleans 连接配置建立关联。ServiceList 的值时 Orleans Silo 接口的 Assembly.FullName, 由于 Orleans Silo 可能有多个接口,所以 ServiceList 是一个数组集合。可以通过 SetServiceAssembly 方法来配置 ServiceList。

  • ServiceId:Orleans Silo 的 ServiceId,在连接 Orleans 时需要。

  • ClusterId:Orleans Silo 的 ClusterId,在连接 Orleans 时需要。

  • Configure:Orleans 服务配置,如连接组件(ConsulZookeeperr、等)。如果配置了 全局 Orleans 服务配置 这个选项可以不配置,但是这选项配置之后会覆盖上面的 全局 Orleans 服务配置

原文地址:https://www.cnblogs.com/lfzm/p/10606584.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

Orleans MultiClient 多个Silo复合客户端相关推荐

  1. Orleans 2.0 官方文档 —— 5.4 集群和客户端 - 异构的silo

    异构的筒仓 概览 在给定的集群上,silo可以支持一组不同的grain类型:  在这个例子中,集群支持类型为A,B,C,D,E的grain: grain类型A和B可放置在silo 1和2. grain ...

  2. Orlens入门概念(4)Orleans 服务进程Silo

    Orleans 应用程序 正如前面的主题所述,典型的Orleans应用程序由一组服务器进程(孤岛)组成,其中包含Grainlive和一组客户端进程(通常是web服务器),它们接收外部请求,将它们转换为 ...

  3. Orleans 3.0 为我们带来了什么

    原文:https://devblogs.microsoft.com/dotnet/orleans-3-0/ 作者:Reuben Bond,Orleans首席软件开发工程师 翻译:艾心 这是一篇来自Or ...

  4. Orleans 知多少 | 2. 核心概念一览

    Orleans 术语解读 上面这张图中包含了Orleans中的几个核心概念: Grain Silo Orleans Cluster Orleans Client 从这张图,我们应该能理清他们之间的关系 ...

  5. Microsoft Orleans 之 入门指南

    Microsoft Orleans 在.net用简单方法构建高并发.分布式的大型应用程序框架. 原文:http://dotnet.github.io/orleans/ 在线文档:http://dotn ...

  6. Orleans 2.0 官方文档中文版 (闫辉)

    目录 第一章 概览 1.1 概览 -> 介绍 1.2 概览 -> 优点 1.3 概览 -> 常见问题 1.4 概览 -> Orleans 2.0 1.5 概览 -> Or ...

  7. Orleans 2.0 官方文档 —— 5.2 集群和客户端 - silo的生命周期

    silo的生命周期 概述 Orleans silo使用可观察的生命周期(参见Orleans Lifecycle),来有序地启动和关闭Orleans系统以及应用程序层组件. 阶段 Orleans Sil ...

  8. Orleans 2.0 官方文档 —— 5.6.2 集群和客户端 - 监控 - silo错误代码监控

    silo错误代码监控 组 日志类型 记录代码值 阈 描述 Azure问题 警告或错误 100800 - 100899 任何错误或警告 读取或写入Azure表存储的暂时性问题将被记录为警告.暂时性读取错 ...

  9. Orleans 2.0 官方文档 —— 6.8.4 部署 - 多集群支持 - silo的配置

    Orleans silo的配置 为了快速了解到概貌,我们将在下面的XML语法中,显示所有相关配置参数(包括可选配置参数): <?xml version="1.0" encod ...

最新文章

  1. 标准自编码器(TensorFlow实现)
  2. 社交电商风潮起,中小卖家何处去
  3. EntityFramework用法探索(三)CodeFirst流畅API
  4. Wordpress 修改 mysql 插件_史上最详细的WordPress安装教程(三):安装php 5.6及fpm、pdo、mysql等插件...
  5. node:爬虫爬取网页图片 1
  6. coloros11跟Android,安卓10与安卓11究竟差异在哪里?我们拿这两台新机试了一下
  7. FUSE—用户空间文件系统
  8. Mr.Panda and TubeMaster Gym - 101194J (二分染色有源汇上下界最大费用流)
  9. 《Python核心编程》第12章 习题
  10. 公司有加密需求,需要试用天锐绿盾,该如何操作?
  11. TA进阶实例36(MMD pmx导入Unreal流程)
  12. python竖线_python画横线竖线作为分界线
  13. 达摩达兰论估价pdf_应用公司理财PDF下载_(美)阿斯瓦斯・达摩达兰_机械工业出版社_会计_管理_零度图书网...
  14. nmds与mds的区别_聚类分析和NMDS分析的基本步骤.doc
  15. u盘如何在计算机应用内存,u盘扩大内存,小编教你如何用U盘扩展内存
  16. k8s节点假死排查记录
  17. 组装密度io/cm_组装领域:什么是正确的组装/图书馆数量?
  18. 使用Matlab绘制gif动图
  19. 2018NOIp爆零记
  20. SaaS企业如何构建与自身增长目标相匹配的市场力?

热门文章

  1. vista磁盘使用100%_如何在Windows 7或Vista中创建和使用密码重置磁盘
  2. apple tv 开发_如何防止Apple TV进入睡眠状态
  3. 从Windows XP升级? 这是您需要了解的Windows 7
  4. git针对已有仓库或已有文件的初始化操作
  5. 邮件系统之webmail
  6. 神经网络- receptive field
  7. 2016 China Joy抢先看,文末有彩蛋!
  8. html5 弹性布局
  9. Yet another nio framework for java
  10. java基础巩固笔记(6)-注解