1. 程式人生 > >Orleans學習總結(一)

Orleans學習總結(一)

nes ima com 文檔 直接 規模 .get 新的 結合

最近這段時間接觸了些新的東西: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學習總結(一)