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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Orleans学习总结(二)--创建工程

發(fā)布時間:2024/4/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Orleans学习总结(二)--创建工程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?通過第一篇Orleans學習總結(jié)(一)--入門認識我們大致知道知道是干嘛的了,下面我們來動手造一個傳說中的神秘的高并發(fā)集群Orleans程序。

?

一、創(chuàng)建四個C#工程

1、IGrain工程,用來定義各種業(yè)務邏輯對象的接口的工程

1)創(chuàng)建一個Class Library工程

2)安裝Olreans依賴
PM> Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
或者右鍵Refrerence->Manage NuGet Packages

?



3)在Class1.cs里寫入代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Orleans;public interface IHello : Orleans.IGrainWithIntegerKey {Task<string> SayHello(string greeting); }

?

?

2、Grain工程,實現(xiàn)IGrain中定義的各種業(yè)務邏輯

1)創(chuàng)建一個Class Library工程

?

2)安裝Olreans依賴

PM> Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
或者右鍵Refrerence->Manage NuGet Packages


3)在Class1.cs里寫入代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;public class HelloGrain : Orleans.Grain, IHello {public Task<string> SayHello(string greeting){Console.WriteLine(greeting);return Task.FromResult($"You said: '{greeting}', I say: Hello!");} }

?

4)添加工程依賴

?

3、Host工程,他加載所有跟他同級目錄的有類繼承自Orleans.Grain的dll

1)創(chuàng)建一個Console工程,你也可以是其他的GUI工程

?

2、添加依賴

PM> Install-Package Microsoft.Orleans.Server
??

?3、寫入代碼

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Orleans.Runtime.Host;namespace Host {class Program{static void Main(string[] args){var config = Orleans.Runtime.Configuration.ClusterConfiguration.LocalhostPrimarySilo();using (var host = new SiloHost("Default", config)){try{host.InitializeOrleansSilo();host.StartOrleansSilo();Console.WriteLine("Orleans Silo is running.");Console.WriteLine("Press Enter to terminate...");Console.ReadLine();host.StopOrleansSilo();}catch (Exception e){Console.WriteLine(e);Console.ReadLine();}}}} }

?

?

4、Client工程,也就是我們的前端工程,注意他的定位并不是說比如我們CS架構(gòu)里的C,他是請求業(yè)務邏輯的入口,可能是個Web服務器。

1)添加工程

?

2、添加依賴

PM> Install-Package Microsoft.Orleans.Client

3、寫入代碼

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Orleans; using Orleans.Runtime;namespace Client {class Program{static void Main(string[] args){Task.Run(() => Start(args)).GetAwaiter().GetResult();}public static async Task Start(string[] args){while (true){try{var config = Orleans.Runtime.Configuration.ClientConfiguration.LocalhostSilo();GrainClient.Initialize(config);break;}catch (SiloUnavailableException ex){await Task.Delay(1000);}}Console.WriteLine("Orleans Client is running.");while (true){Console.WriteLine("Input to say");var input = Console.ReadLine();if (!string.IsNullOrEmpty(input)){var grain = GrainClient.GrainFactory.GetGrain<IHello>(0);var ret = await grain.SayHello(input);Console.WriteLine(ret);}}GrainClient.Uninitialize();}} }

?

4、工程依賴

?

二、啟動工程

1)4個工程都已經(jīng)創(chuàng)建好了,設置下啟動項

?

2)將4個工程輸出目錄都設置到一個目錄,目的是為了讓Host能加載到dll

?

?

三、測試工程

1)F5啟動

當你得到這樣的輸出就說明一切正常

1)在Client控制臺程序下敲入字符,看效果

?

?

總結(jié):至此我們的Orleans工程都跑起來了,單機版Orleans就分4部分:接口,實現(xiàn),Host,Client。

你說這根本不是我想要的集群啊高并發(fā)啊,別急,這次我們只是簡單的搭建起框架,甚至連配置都直接寫在代碼里了,后面還有相關(guān)的介紹。

轉(zhuǎn)載于:https://www.cnblogs.com/mrblue/p/8448110.html

總結(jié)

以上是生活随笔為你收集整理的Orleans学习总结(二)--创建工程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。