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