最近这段时间接触了些新的东西:Orleans框架。今天是春节前最后一天班,把我这段时间学习的东西总结一下分享给大家。

一、什么是Orleans

文档地址。这里我就直接翻译官方的介绍,有点地方翻译的有些蹩脚大家见谅。后面在使用场景上我会结合我们自己项目来说)

A straightforward approach to building distributed, high-scale applications in .NET

一个简单直接的大规模分布式的.Net应用

Orleans is a framework that provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was created by Microsoft Research and designed for use in the cloud.

Orleans 是一个提供简单直接的大规模分布式的计算应用,而不需要去了解复杂的高并发和其他相关。由微软研究和设计用于云端。

Orleans has been used extensively in Microsoft Azure by several Microsoft product groups, most notably by 343 Industries as a platform for all of Halo 4 and Halo 5 cloud services, as well as by a growing number of other companies.

Orleans 已经被几个微软的产品组用在Microsoft Azure云。值得一提的就是343公司《光环4》和《光环5》的云平台服务,和越来越多的其他公司

Orleans as a Stateful Middle Tier

Orleans 作为一个有状态的中间层

Orleans provides an intuitive way of building a stateful middle tier, where various business logic entities appear as sea of isolated globally addressable .NET objects (grains) of different application defined types distributed across a cluster of servers (silos).

Orleans提供一个直观的方式建造一个有状态的中间层,各种业务逻辑对象存在于一个可以全局定位的独立的不通应用类型.NET对象 的集群海洋里。

二、用法

In Orleans, grains are the building blocks of application code. Grains are instances of .NET classes that implement a conforming interface. Asynchronous methods of the interface are used to indicate which operations the grain can perform:
在Orleans里,谷物是用来建造应用程序的基础(大概是一个基础单位的意思)。谷物是一个实现了一个确定的.Net接口的类的实例。接口的异步方法用来指明这个谷物能提供哪些操作。
public interface IMyGrain : IGrainWithStringKey
{
Task<string> SayHello(string name);
}

The implementation is executed inside the Orleans framework:

实现是在Orleans框架里执行的

public class MyGrain : IMyGrain
{
public Task<string> SayHello(string name)
{
return Task.FromResult($"Hello {name}");
}
}

You can then invoke the grain by obtaining a proxy object (a grain reference), and calling the methods:

你可以通过获取一个代理对象(一个谷物的接口)触发一个grain,并且掉用他的方法。

var grain = GrainClient.GrainFactory.GetGrain<IMyGrain>("grain1");
await grain.SayHello("World");

三、总结

Orleans就是一个把高并发等复杂的细节隐藏在后面的分布式框架,让我们能快速的实现一个大规模可扩展的分布式应用。

在Orleans编程的世界里,你最主要有两个关注点:

1、定义接口

2、所有方法皆异步

当然还有很多其他的feature和注意点,需要我们去探索

 

Orleans学习总结(一)--入门认识的更多相关文章

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

    通过第一篇Orleans学习总结(一)--入门认识我们大致知道知道是干嘛的了,下面我们来动手造一个传说中的神秘的高并发集群Orleans程序. 一.创建四个C#工程 1.IGrain工程,用来定义各种 ...

  2. 从零开始学习jQuery (一) 入门篇

    本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些 ...

  3. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  4. WebSocket学习笔记——无痛入门

    WebSocket学习笔记——无痛入门 标签: websocket 2014-04-09 22:05 4987人阅读 评论(1) 收藏 举报  分类: 物联网学习笔记(37)  版权声明:本文为博主原 ...

  5. 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)

    四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...

  6. Xmpp学习之Android-smack入门指导

    Xmpp学习之Android-smack入门指导 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/69404 ...

  7. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  8. Orleans学习总结(六)--应用篇

    上一篇Orleans学习总结(五)--监控篇,我们这篇来说说我们项目的应用   这是我们项目的结构图   我们分别来说下各个部分 1.Zookeeper作为集群基础,至少开5个,分别在不同的物理机上 ...

  9. Orleans学习总结(四)--集群配置篇

    上篇我们讲了Orleans学习总结(三)--持久化篇,这一篇我们来说说集群配置,毕竟这个才是Orleans的看家本领 Orleans支持热起动,支持自动节点发现,能够断线重发等一系列黑科技. 我这篇是 ...

随机推荐

  1. Excel分组快速自动填充编号

    在Excel自动填充很简单,但如果按分组等条件进行填充就有点麻烦了 说麻烦可能是你并没有搞清楚到底如何才能实现你的需求   下图是客户提供的Excel数据,我需要将下面的数据导入到数据库中,因为客户在 ...

  2. ubuntu crontab 在时间段内随机执行一次

    crontab 在linux下做定时任务的命令, 1. 基本格式 * * * * * cmd 第一个表示:分钟 1-59, 每分钟用 */1 第二个表示:小时 023 第三个表示:日期1-31 第四个 ...

  3. Spark机器学习(12):神经网络算法

    1. 神经网络基础知识 1.1 神经元 神经网络(Neural Net)是由大量的处理单元相互连接形成的网络.神经元是神经网络的最小单元,神经网络由若干个神经元组成.一个神经元的结构如下: 上面的神经 ...

  4. hihocoder第237周:三等分带权树

    题目链接 问题描述 给定一棵树,树中每个结点权值为[-100,100]之间的整数.树中包含结点总数不超过1e5.任选两个非根节点A.B,将这两个结点与其父节点断开,可以得到三棵子树.现要求三棵子树的权 ...

  5. 一篇文章让你读懂iOS和Android的历史起源

    智能手机虽说是移动电话,但我们完全可以将其作为小型化的电脑来思考.这样一来也能够显示出智能手机OS的高性能.我们首先一起来回顾下智能手机OS的历史. OS的黎明期 其实在很早之前就已经有这样的想法,即 ...

  6. xcode 编译或者打包的时候 找不到图片的错误

    进入app路径,copy一份图片进去就好了

  7. Java线上问题排查思路及Linux常用问题分析命令学习

    前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...

  8. jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据.

  9. Socket网络编程--小小网盘程序(3)

    接上一小节,这次增加另外的两张表,用于记录用户是保存那些文件.增加传上来的文件的文件指纹,使用MD5表示. 两张表如下定义: create table files( fid int, filename ...

  10. (转)解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题

    转自:https://itbilu.com/linux/management/NymXRUieg.html 源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/l ...