Orleans逐步教程

 

參考文檔: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();
    }
}
GrainInterfaces-ITestGrain
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;
        }
    }
}
Grains-TestGrain
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();
        }
    }
}
Host-Program

下載地址:https://pan.baidu.com/s/1c3OO0zYspa

相關文章
相關標籤/搜索