Orleans 初接触_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Orleans 初接触

Orleans 初接触

 2017/11/22 12:04:32  爱上猫的红烧鱼  程序员俱乐部  我要评论(0)
  • 摘要:简介这篇随笔主要记录了自己学习Orleans的经过和理解,在学习过程中会一直更新,思路和理解可能有些偏颇,如果有幸有大佬看到这篇文章,希望能给予批评指正。导航1.2.3.理解首先,MicrosoftOrleans是在.net用简单方法构建高并发、分布式的大型应用程序框架。官方文档以及源码:http://dotnet.github.io/orleans/以下理解是学习了《MicrosoftOrleans之入门指南》(https://www.cnblogs.com/endv/p/6147976
  • 标签:

简介

  这篇随笔主要记录了自己学习Orleans的经过和理解,在学习过程中会一直更新,思路和理解可能有些偏颇,如果有幸有大佬看到这篇文章,希望能给予批评指正。

导航

1.

2.

3.

理解

  首先,Microsoft Orleans是在.net用简单方法构建高并发、分布式的大型应用程序框架。

  官方文档以及源码:http://dotnet.github.io/orleans/

  以下理解是学习了《Microsoft Orleans 之 入门指南》(https://www.cnblogs.com/endv/p/6147976.html)

  Orleans 框架可以构建大规模、高并发、分布式应用程序,而不需要学习专业分布式以及并发知识框架。它是由微软研究和设计应用于云计算。被广泛应用于微软云产品,而且微软官方游戏:Halo4、Halo5(光环|光晕)的云服务全部由它来承载,不少公司在用它。

class="Apple-converted-space">  特点:

    1.默认的可拓展性,构建复杂的分布式应用程序,可以使您的程序轻易拓展到数百个服务。

    2.低延时,它可以使你的程序状态保存于内存中,所以你的应用程序可以快速响应请求。

    3.简化并发,Orleans 允许你使用C#代码构建Actors 之间的异步处理消息。

    注:(Actor模型是一个概念模型,用于处理并发计算。它定义了一系列系统组件应该如何动作和交互的通用规则,一个Actor指的是一个最基本的计算单元。它能接收一个消息并且基于其执行计算。具体的我还没有去深入学习,http://www.jianshu.com/p/449850aa8e82这篇文章可以简单的了解)

    在Orleans,actors 被称作grains,采用一个接口来表示,Actors的消息用异步方法来接受,如下:

public interface IMyGrain : IGrainWithStringKey
{
    Task<string> SayHello(string name);
}

运行在Orleans 框架里的实现代码
public class MyGrain : IMyGrain
{
    public async Task<string> SayHello(string name)
    {
        return "Hello " + name;
    }
}

然后通过创建代理对象,并调用Grains的方法来发送消息
var grain = GrainClient.GrainFactory.GetGrain<IMyGrain>("grain1");
await grain.SayHello("World");

  cluster:

    大量的silos 同时在一起工作就形成了orleans的集群,orleans运行完全自动化的集群管理。

    所有silo都使用一个动态更新的共享成员存储库,并有助于协调集群管理,通过阅读共享存储库了解对方的位置,在任何时候,一个silo可以通过注册在共享存储中连接到一个集群。

    这种方式的集群可以在运行时动态扩展。 Orleans 提供弹性和可用性从群集中删除无效的silos。

  Orleans 和客户端代码

    Orleans 包括两个不同的部分:Orleans 基础部分(grains) 和客户端部分

    Orleans 的一部分是由应用程序的运行时服务称silos grains 组成,在调度限制下的运行时执行的Grain代码和确保内部在Orleans 编程模型。

    客户端部分通常是一个web前端,通过少量的Orleans 客户端库连接到Orleans 部分,使得客户端代码可以通过引用服务端的一个grain的引用进行通讯。

    例如:一个ASP.NET web应用程序运行在服务端的部分可以是Orleans 的客户端。 客户端部分运行在.net 应用程序池的主线程中,和不受调度的限制和Orleans 运行时的保证。

  Orleans 导入的包

    Orleans 有两个必须的包Microsoft.Orleans.Server(服务端包)和Microsoft.Orleans.Client(客户端包)

    在NuGet里直接安装就行了,它会自动把其他依赖的包也都安装上,vs就是这么省心,但是需要注意的是,不要随意去更新Orleans包所引用的其他包的版本,可能会导致一些奇奇怪怪的错误(血的教训)

  Orleans 有哪些部分组成

    我简单的把Orleans分成了四个部分

    IGrains : 这里放置所有Grains类要扩展的接口。

    Grains  : 这个里面实现所有IGrain载明的接口,实现所有的Grain类,包括它们的方法以及字段。

    Host     : 这个里面就是要运行Silo的。也就是服务端

    Client    : 这个里面就是要运行GrainClient的。它要和Host通信,它就是客户端。

 

  • 相关文章
发表评论
用户名: 匿名