最近这段时间接触了些新的东西: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. [Android] 判断手机上是否安装了某个程序

    http://blog.csdn.net/xiaodongrush/article/details/9320135 1. 首先得到该程序的包名 这个连上手机ADB,看logcat就能看到.比如:QQ客 ...

  2. Asp.Net Core 自定义设置Http缓存处理

    一.使用中间件 拦截请求自定义输出文件 输出前自定义指定响应头 public class OuterImgMiddleware { public static string RootPath { ge ...

  3. 理解 .NET 2015

    去年跟着BUILD之后,我发了一篇文章Exciting Times for .NET 并从那以后我已经很荣幸地能够与.NET团队并肩作战,这其中包括了运行时.框架.语言和编译器.虽然去年我的重心已经更 ...

  4. centos 7下独立的python 2.7环境安装

    之前写过python 3.x的独立安装,相对来说比较简单直接安装即可,因为对于系统默认的python版本是2.x,那么安装3.x的时候只需要编译到新的目录即可,所有的模块都不会和之前的2有联系,但是如 ...

  5. 深入理解JVM(一)——JVM内存模型

    JVM内存模型 Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区. ...

  6. MySQL 四种事务隔离级的说明[转]

    很早之前写的文章,重新回顾和学习下: 按照SQL:1992 事务隔离级别,InnoDB默认是可重复读的(REPEATABLE READ).MySQL/InnoDB 提供SQL标准所描述的所有四个事务隔 ...

  7. 玩魔兽争霸无故退出 提示框显示"0x21101663"指令引用的"0x02704acc"内存该存不能为"read" 确定就会终止程序

    20151002总结:下方法试过,没完全按照说的操作完,觉得有风险且那个read程序执行时间好长的,感觉有点干坏事的意思 ======================================= ...

  8. 【Java】数组不能通过toString方法转为字符串

    java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的.object里有一个方法就是toString(),那么所有的类创建的时候,都有一个toStrin ...

  9. MySQL 5.6新特性 -- Multi-Range Read

    如果基表很大,数据没有被缓存,在二级索引上使用范围扫描读取行可能会导致大量的随机磁盘访问.使用Multi-Range Read新特性,mysql可以减少对磁盘的随机读的次数:首先,mysql只是扫描索 ...

  10. 【Android】GPS定位基本原理浅析

    位置服务已经成为越来越热的一门技术,也将成为以后所有移动设备(智能手机.掌上电脑等)的标配.而定位导航技术中,目前精度最高.应用最广泛的,自然非GPS莫属了.网络上介绍GPS原理的专业资料很多,而本文 ...