參考文檔:https://dotnet.github.io/orleans/Tutorials/index.htmlhtml
1、經過模板建立Orleansgit
①下載vs插件:https://marketplace.visualstudio.com/items?itemName=sbykov.MicrosoftOrleansToolsforVisualStudiogithub
②經過模板添加ide
③引用關係測試
Grains引用GrainInterfacesui
Host引用 Grains、GrainInterfacesthis
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Orleans; namespace GrainInterfaces { public interface ITestGrain:IGrainWithGuidKey { Task Run(); Task<string> Get(); } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Orleans; using GrainInterfaces; namespace Grains { public class TestGrain : Grain, ITestGrain { public Task<string> Get() { return Task.FromResult(this.GetType().FullName + ".Get()"); } public Task Run() { Console.WriteLine(this.GetType().FullName + ".Run()"); return Task.CompletedTask; } } }
using System; using Orleans; using Orleans.Runtime.Configuration; using Orleans.Runtime.Host; using GrainInterfaces; namespace Host { /// <summary> /// Orleans test silo host /// </summary> public class Program { static void Main(string[] args) { // 首先,配置並啓動一個本地silo var siloConfig = ClusterConfiguration.LocalhostPrimarySilo(); var silo = new SiloHost("TestSilo", siloConfig); silo.InitializeOrleansSilo(); silo.StartOrleansSilo(); Console.WriteLine("Silo started."); // 而後配置並鏈接一個客戶端。 var clientConfig = ClientConfiguration.LocalhostSilo(); var client = new ClientBuilder().UseConfiguration(clientConfig).Build(); client.Connect().Wait(); Console.WriteLine("Client connected."); // // 這是你測試代碼的地方 // var testGrain = client.GetGrain<ITestGrain>(Guid.Empty); while (true) { Console.ReadKey(); testGrain.Run(); Console.WriteLine(testGrain.Get().Result); Console.WriteLine("\nPress Enter to terminate..."); Console.ReadLine(); } // 關掉 client.Close(); silo.ShutdownOrleansSilo(); } } }
下載地址:https://pan.baidu.com/s/1c3OO0zYspa