orleans2 1 這是你沒玩過的船新版本

2022-02-01 16:45:05 字數 2780 閱讀 8772

不知不覺orleans就發布到2.1版本的,但是說也奇怪orleans越是完善我發現園子相關的部落格就越少,大概是大佬都在美滋滋用在生產環境,不屑於玩demo了吧。

但是小弟不才還是只會玩demo,所以只能簡單的介紹介紹2.1版本的新玩法了。

1.新建乙個asp.net core的webapi專案,然後引用下面幾個nuget包:

1

microsoft.orleans.orleansruntime

2microsoft.orleans.codegenerator.msbuild

3microsoft.orleans.transactions

4orleans.providers.mongodb

5 orleansdashboard

2.包裝一下orleans的silobuilder類,並且繼承ihostedservice直接和asp.net core執行在一起

1

public

class

2)//

配置資料庫

17 .configurelogging(x =>18)

22 .usedashboard(x =>

23)//

hostself設定為false

26 .usetransactions()//

2.1的事務配置簡化了

27.build();

2829 client = _silo.services.getrequiredservice();//

把sliohost的iclusterclient暴露出去。30}

3132

public

async

task startasync(cancellationtoken cancellationtoken)

3336

37public

async

task stopasync(cancellationtoken cancellationtoken)

3841 }

3.startup類配置:

1

public

class

startup27

8public iconfiguration configuration 910

public

void

configureservices(iservicecollection services)

1118

19public

void

2025

/dashboard

"});//

設定一下dashboard的訪問路徑

2728

}29 }

4.新建一些grain類,這裡只給出乙個後面我會貼**位址出來。

public

class usergrain:grain,iusergrain

public

async taskupdateinfo(userinfo info)

public

async taskgetbalance()

}

[statelessworker]

public

class atmgrain : grain, iatmgrain//

轉賬事務的專用grain

}public

class accountgrain : grain, iaccountgrain//

加錢,減錢,查錢啦

async task iaccountgrain.deposit(uint

amount)

async task iaccountgrain.withdraw(uint

amount)

return x.value -=amount;

});}

task

iaccountgrain.getbalance()

}

5.controller相關的**,這裡也是照舊只貼一部分

可以看到2.1之後配置真的簡單了很多,簡單幾步之後你就能快樂的進行無資料庫設計無併發考慮的程式設計啦。

測試條件就是使用者1和使用者2相互轉賬( ̄︶ ̄)↗ ,10個執行緒,分別轉1000次(對應的url:/api/values/atm?from=1&to=2&amount=1和/api/values/atm?from=2&to=1&amount=1)。

測試條件就是1轉2,2轉3,3轉4,4轉1,10個執行緒,分別轉500次(url參考上面)。

最最後面貼幾個orleans相關的**庫,畢竟我上面的demo還是太小兒科了,

分布式、高效能、事件溯源、事件驅動、最終一致性框架

headless cms and content managment hub

Orleans 整體介紹

orleans 是微軟開源的actor模型開發框架。actor模型 此模型解決了併發程式設計時對資源競爭使用的問題,將對同乙個業務資料的訪問從並行變為序列執行,降低了多執行緒程式設計的難度,使普通程式設計人員也能輕鬆編寫高併發應用。orleans的主要特點是通過框架提公升開發人員的效率,並預設提供對...

orleans傳送廣播訊息

乙個client傳送訊息給orleans,就只需要掉用grain的函式就行了.但是有時候grain需要傳送訊息給client,在orleans裡面,就只能通過observer來實現.1 public inte ce ichat igrainobserver25 6public class chat ...

orleans 專案除錯注意

start process dotnet argumentlist watch p server w05082019.silo w05082019.silo.csproj run start sleep 3 start process dotnet argumentlist watch p serv...