Orleans---持久化

来源:互联网 发布:python retry 编辑:程序博客网 时间:2024/05/01 07:40

Orleans配置---持久化

这是Orleans系列文章中的一篇.首篇文章在此

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的概念和原理了.