日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Orleans MultiClient 多个Silo复合客户端

發布時間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Orleans MultiClient 多个Silo复合客户端 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

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?包和?A、B?的接口,分別為?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?服務配置,如連接組件(Consul、Zookeeperr、等)。如果配置了?全局 Orleans 服務配置?這個選項可以不配置,但是這選項配置之后會覆蓋上面的?全局 Orleans 服務配置。

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

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?


總結

以上是生活随笔為你收集整理的Orleans MultiClient 多个Silo复合客户端的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。