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