Orleans的官方定義是「用於構建健壯的,可擴展的分佈式應用程序的跨平臺框架」。它是Actor模型的.NET實現。html
本章主要記錄一些基礎概念。git
Actor模型並非什麼新的概念,它由Carl Hewitt在1973年提出,Gul Agha在1986年發表技術報告「Actors: A Model of Concurrent Computation in Distributed Systems」。程序員
--https://blog.csdn.net/gulianchao/article/details/7249117github
Actor模型是一個概念模型,用於處理併發計算。它定義了一系列系統組件應該如何動做和交互的通用規則,最著名的使用這套規則的編程語言是Erlang。編程
一個Actor指的是一個最基本的計算單元。它能接收一個消息而且基於其執行計算。後端
面向對象思想經過隱藏類的私有方法來實現封裝,僅容許外部調用公有方法來使用類。這一點在Actor中,給出了另外的理解。Actor外部僅能經過消息調用,Actor內部的實現對外不可見。併發
Actors一大重要特徵在於actors之間相互隔離,它們並不互相共享內存。一個actor能維持一個私有的狀態,而且這個狀態不可能被另外一個actor所改變。框架
光有一個actor是不夠的,多個actors才能組成系統。在actor模型裏每一個actor都有地址,因此它們纔可以相互發送消息。編程語言
一個Actor只能順序地處理消息,它經過Mailbox來存儲消息。分佈式
Actor概念被運用到許多知名語言和庫中,好比Erlang和Elixir, Akka (for the JVM) 和 Celluloid (for Ruby)。
-- https://www.jianshu.com/p/449850aa8e82
orleans常與akka進行比較,它們之間的主要區別在於:
這兩個項目都打算成爲完整的解決方案,這意味着Orleans的第二優先級是容許有經驗的用戶更詳細地控制該平臺,並將其適應於普遍的用例,而Akka還提升了抽象級別並提供了簡化但很是有用的抽象。
另外一個區別是設計方法學:
對於生命週期管理
Orleans Grains沒有生命週期,沒法啓動或中止。所以,它們也不會失敗並沒有法從新啓動,所以Orleans不提供用於軟件故障處理的工具-故障處理方面着重於從硬件崩潰中恢復。
另外一方面,「穀物激活」確實具備生命週期和相應的生命週期掛鉤,程序員可使用它們對激活或停用作出反應。
Akka Actor實現了完整的模型,包括定義的生命週期開始和結束,這些是顯式的操做。持久參與者支持將邏輯計算單元的生命週期擴展到正在運行的流程實例的生命週期以外。從新啓動Actor爲自動服務恢復提供了強大的手段。
自動建立
……
總結與解釋
儘管Orleans和Akka的實現存在一些重疊,可是很明顯,二者都追求徹底不一樣的目標:
Orleans提供了一種編程模型,該模型無縫地集成到非分佈式方法論和程序員技能中,它能夠擴展到單臺計算機的範圍以外,而沒必要處理編寫分佈式應用程序的困難。這是經過作出一組實現選擇(例如基於請求的響應式樣式以及使用常規方法調用等的至少一次交付)並向用戶提供一組受限制的工具來實現的,這些選擇是基於使用時無需瞭解底層技術。從中能夠得出上面看到的全部含義,包括缺乏穀物的生命週期,這已被抽象化。
Akka爲建模分佈式系統(Actor模型)提供了一種很是簡單有效的抽象方法,並向用戶提供了該低級工具以及更高的抽象方法。理念是,用戶必須瞭解分佈式編程,才能在實現權衡方面作出本身的選擇,
-- https://github.com/akka/akka-meta/blob/master/ComparisonWithOrleans.md
微軟Xbox中幾個核心遊戲的後端(Halo,戰爭機器4等等)是經過Orleans實現的,也就說明它應用於大型分佈式生產環境是有保障的。
-- https://www.zhihu.com/question/31472959
推薦博文:
http://www.javashuo.com/article/p-ouaqkaqs-kq.html
http://www.javashuo.com/article/p-yyckcnql-mk.html
http://www.javashuo.com/article/p-sytdrouz-mh.html
http://www.javashuo.com/article/p-uqfshkwl-mg.html
https://www.cnblogs.com/jzfan/p/orleans_demo.html
http://www.javashuo.com/article/p-eeiidoga-br.html
http://www.javashuo.com/article/p-vqwyzqef-mg.html
https://www.jianshu.com/p/449850aa8e82
https://blog.csdn.net/gulianchao/article/details/7249117
https://www.jianshu.com/p/141ea382d242
其餘資料:
https://dotnet.github.io/orleans/Documentation/index.html
https://github.com/akka/akka-meta/blob/master/ComparisonWithOrleans.md
https://www.brianstorti.com/the-actor-model/
https://en.wikipedia.org/wiki/Actor_model