Grain理想的生命周期应该如下图所示:
这就如美国电影中的大反派一样,死了再复活,死了再复活.当然如果复活的反派没有记忆,这个电影就真没劲.现在我要求Grain的复活是有记忆的复活.看我怎么办到.
其中持久化需要用到数据库,因为只有数据库才能比较方便的为以后event sourcing做好准备.
步骤1
这里只介绍一种,使用sql server作为持久化设备.为了能使Grain保存自己的状态值,我们需要配置一下Orleans
在silo端配置中写入如下配置:比较一下和上文配置的区别.
为了让使用Orleans提供的存储中间件,还需要引用
并使用以下脚本在数据库中创建Orleans所需要的表.地址是: https://github.com/dotnet/orleans/blob/master/src/OrleansSQLUtils/CreateOrleansTables_SqlServer.sql
这样我启动我的basic程序,Orleans就自动连接数据库,并使用数据库作为Grain的持久化存储设备.不过我还需要做一点点工作:
步骤2
返回到IGrains项目,我增加一个接口如下图:
步骤3
相应的,我又修改了Grains项目.如图
步骤4
我又修改了client项目
,我们试试火力.只截取client的截图.第一次运行应该有一条,而第二次运行应该有两条
数据库中查看是有数据的
后续
这个文章就说了一个事,在配置好StorageProvider之后,可以使用Orleans提供的函数,存储或者读取Grain的状态值,这个Grain必须扩展自Grain<>.
如果够细心会发现数据库中的表有version字段(截图中没有截取到),这个正是为了Eventsourcing做准备的.
经过以上的介绍.这个Orleans框架算是真正的入门了.不管我说的好与不好,对与不对.读到这里的人,都应该开始感觉,这也许仍然有wcf的影子,软件嘛都是大同小异,但是最后Orleans的目的远非如此.为了往后的文章更好的展开.我觉得有必要再回顾,并深入的介绍Orleans的概念和原理了.
相关文章:
.NET的Actor模型:Orleans
微软分布式云计算框架Orleans(1):Hello World
微软分布式云计算框架Orleans(2):容灾与集群(1)
Aaron Stannard谈Akka.NET 1.1
使用Akka.net开发第一个分布式应用
Orleans入门例子
Orleans例子再进一步
Orleans稍微复杂的例子—互动
Orleans简单配置
原文地址:http://www.cnblogs.com/gaopang/p/7409778.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注