Orleans配置---持久化
Grain理想的生命周期應(yīng)該如下圖所示:
這就如美國(guó)電影中的大反派一樣,死了再?gòu)?fù)活,死了再?gòu)?fù)活.當(dāng)然如果復(fù)活的反派沒(méi)有記憶,這個(gè)電影就真沒(méi)勁.現(xiàn)在我要求Grain的復(fù)活是有記憶的復(fù)活.看我怎么辦到.
其中持久化需要用到數(shù)據(jù)庫(kù),因?yàn)橹挥袛?shù)據(jù)庫(kù)才能比較方便的為以后event sourcing做好準(zhǔn)備.
步驟1
這里只介紹一種,使用sql server作為持久化設(shè)備.為了能使Grain保存自己的狀態(tài)值,我們需要配置一下Orleans
在silo端配置中寫入如下配置:比較一下和上文配置的區(qū)別.
為了讓使用Orleans提供的存儲(chǔ)中間件,還需要引用
并使用以下腳本在數(shù)據(jù)庫(kù)中創(chuàng)建Orleans所需要的表.地址是:?https://github.com/dotnet/orleans/blob/master/src/OrleansSQLUtils/CreateOrleansTables_SqlServer.sql
這樣我啟動(dòng)我的basic程序,Orleans就自動(dòng)連接數(shù)據(jù)庫(kù),并使用數(shù)據(jù)庫(kù)作為Grain的持久化存儲(chǔ)設(shè)備.不過(guò)我還需要做一點(diǎn)點(diǎn)工作:
步驟2
返回到IGrains項(xiàng)目,我增加一個(gè)接口如下圖:
步驟3
相應(yīng)的,我又修改了Grains項(xiàng)目.如圖
步驟4
我又修改了client項(xiàng)目
,我們?cè)囋嚮鹆?只截取client的截圖.第一次運(yùn)行應(yīng)該有一條,而第二次運(yùn)行應(yīng)該有兩條
數(shù)據(jù)庫(kù)中查看是有數(shù)據(jù)的
后續(xù)
這個(gè)文章就說(shuō)了一個(gè)事,在配置好StorageProvider之后,可以使用Orleans提供的函數(shù),存儲(chǔ)或者讀取Grain的狀態(tài)值,這個(gè)Grain必須擴(kuò)展自Grain<>.
如果夠細(xì)心會(huì)發(fā)現(xiàn)數(shù)據(jù)庫(kù)中的表有version字段(截圖中沒(méi)有截取到),這個(gè)正是為了Eventsourcing做準(zhǔn)備的.
經(jīng)過(guò)以上的介紹.這個(gè)Orleans框架算是真正的入門了.不管我說(shuō)的好與不好,對(duì)與不對(duì).讀到這里的人,都應(yīng)該開(kāi)始感覺(jué),這也許仍然有wcf的影子,軟件嘛都是大同小異,但是最后Orleans的目的遠(yuǎn)非如此.為了往后的文章更好的展開(kāi).我覺(jué)得有必要再回顧,并深入的介紹Orleans的概念和原理了.
相關(guān)文章:?
.NET的Actor模型:Orleans
微軟分布式云計(jì)算框架Orleans(1):Hello World
微軟分布式云計(jì)算框架Orleans(2):容災(zāi)與集群(1)
Aaron Stannard談Akka.NET 1.1
使用Akka.net開(kāi)發(fā)第一個(gè)分布式應(yīng)用
Orleans入門例子
Orleans例子再進(jìn)一步
Orleans稍微復(fù)雜的例子—互動(dòng)
Orleans簡(jiǎn)單配置
原文地址:http://www.cnblogs.com/gaopang/p/7409778.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Orleans配置---持久化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: Remoting核心类库RealProx
 - 下一篇: C#使用Xamarin开发可移植移动应用