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

通过第一篇Orleans学习总结(一)--入门认识我们大致知道知道是干嘛的了,下面我们来动手造一个传说中的神秘的高并发集群Orleans程序。

一、创建四个C#工程

1、IGrain工程,用来定义各种业务逻辑对象的接口的工程

1)创建一个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工程,实现IGrain中定义的各种业务逻辑

1)创建一个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)创建一个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架构里的C,他是请求业务逻辑的入口,可能是个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个工程都已经创建好了,设置下启动项

2)将4个工程输出目录都设置到一个目录,目的是为了让Host能加载到dll

三、测试工程

1)F5启动

当你得到这样的输出就说明一切正常

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

总结:至此我们的Orleans工程都跑起来了,单机版Orleans就分4部分:接口,实现,Host,Client。

你说这根本不是我想要的集群啊高并发啊,别急,这次我们只是简单的搭建起框架,甚至连配置都直接写在代码里了,后面还有相关的介绍。

原文地址:https://www.cnblogs.com/mrblue/p/8448110.html

时间: 2024-10-10 20:10:44

Orleans学习总结(二)--创建工程的相关文章

ARM 学习笔记之 创建工程(keil)

创建工程:         我们使用的是 keil 软件实现对我们编写的程序进行 编辑 + 编译: 链接:http://pan.baidu.com/s/1i5yIh97 密码:7az5 安装完成之后,就要创建新工程了: (1)创建工程文件夹 : /led (2)在 /led 下新建两个文件夹: /list  和  /output (3)在 keil 中创建新的工程: (4)在工程文件夹 /led 下写入工程名:led (一定要在与 list 和 output "平等的" 文件夹内) (

Zigbee系列 学习笔记二(工程文件分析)

以下为转载内容,因为学习Zigbee,稍作整理了一下,希望作者不要怪罪. 一.下载ZStack-CC2530.2.5.1a 网址http://download.csdn.net/detail/thanksgining/8328925 下载后: 二.安装ZStack-CC2530.2.5.1a 安装后: Components:顾名思义这个是库文件,里面放了一些ZDO,driver,hal,zcl等库代码 Documents:这个不用说大家都知道是放TI的开发文档的,你能够把这些文档一个个看懂,你对

MSMQ学习笔记二——创建Message Queue队列

一.创建Message Queue队列的主要流程 1.定义MQQUEUEPROPS 结构: 2.设置消息队列属性: 3.初始化MQQUEUEPROPS 结构: 4.调用MQCreateQueue创建队列. 下面对MSDN上的创建Message Queue队列示例函数: HRESULT CreateMSMQQueue( LPWSTR wszPathName, PSECURITY_DESCRIPTOR pSecurityDescriptor, LPWSTR wszOutFormatName, DWO

ROS学习随笔二(创建一个简单的ROS package)

本人在学习过程中,参见了如下几个博客及网站: ROS操作官网:http://wiki.ros.org/ROS/Tutorials 博客:http://blog.sina.com.cn/s/articlelist_1712413141_7_1.html 以及:http://blog.csdn.net/column/details/ros-explore.html 在创建package之前,需要先创建一个工作空间,本人安装的ROS版本是Fuerte. 1.Creating a ROS WorkSpa

Oracle学习记录 二 创建表等操作练习

进行了第一章的基本数据操作指令练习后,进行数据库的一些操作. 创建表class有两个栏:numbers和names: create table class (numbers number, names char(20)); 这样建名都是大写的了,不想这样就加上""双引号  numbers这是栏名,number这是数据类型 2. 在建表的时候,限制哪些数据可以存入哪些不可以 create table class2 (numbers number not null, names char(

Django学习笔记1.--创建工程

1,安装python 和 Django , 参考网上教程(安装python,配置path, 安装django,配置path..) 2,查看django安装版本:cmd-->python-->import django-->django.get_version() 3,建立一个django的web项目:cmd --> 至想要创建项目的目录-->django-admin.py startproject my_django_website 或 python django-admin

Quick cocos2dx-Lua(V3.3R1)学习笔记(二)----创建新项目

打开player,我们点击[新建项目]看到 第一个输入框是输入我们项目路径 第二个输入包的名字(com.公司名.gamges.项目名称) ok,填写完毕,右下角创建项目吧 .........................控制台输出结束,我们发现Create Project按钮变成Open了. 点击open,我们查看效果 果然,你们真的逃脱不了这个梗吗?Hello World,不能换点其他玩意么,比如 你吃了么O(∩_∩)O 是不是觉得这个窗口超级大啊,我的眼睛难以承受啊, 点击view按钮,里

Orleans学习总结(三)--持久化篇

经过上篇Orleans学习总结(二)--创建工程的介绍,我们的工程已经跑起来了,下面我们来介绍下持久化相关. 关于持久化的文档地址在这http://dotnet.github.io/orleans/Documentation/Core-Features/Grain-Persistence.html Orleans对持久化做了高度封装,使我们开发起来非常简单,而且切换数据库非常方便,简单到只需要几个配置就实现了. Orleans支持的数据库很多,我这里就以MySQL举例来说. 一.配置部分 上一篇

003 PyCharm 创建工程

/* 时间:2018/08/22 道德经:第十二章 五色令人目盲,五音令人耳聋,五味令人口爽,驰骋田猎令人心发狂,难得之货令人行妨.是以圣人为腹不为目,故去彼取此. */ 道德经:第十二章 /* 时间:2018/08/22 功能:PyCharm 创建工程 目录: 一: 命名规范 二: 创建工程 */ 一: 命名规范 1 : 字母开头,由字母/下划线/数字组成. 2 : 不要有中文/特殊字符. 3 : 不要和系统模块或第三方模块重名(如: selenium/requests). 4 : 可以使用,