不知不覺orleans就發布到2.1版本的,但是說也奇怪orleans越是完善我發現園子相關的部落格就越少,大概是大佬都在美滋滋用在生產環境,不屑於玩demo了吧。
但是小弟不才還是只會玩demo,所以只能簡單的介紹介紹2.1版本的新玩法了。
1.新建乙個asp.net core的webapi專案,然後引用下面幾個nuget包:
12.包裝一下orleans的silobuilder類,並且繼承ihostedservice直接和asp.net core執行在一起microsoft.orleans.orleansruntime
2microsoft.orleans.codegenerator.msbuild
3microsoft.orleans.transactions
4orleans.providers.mongodb
5 orleansdashboard
13.startup類配置: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 }
14.新建一些grain類,這裡只給出乙個後面我會貼**位址出來。public
class
startup27
8public iconfiguration configuration 910
public
void
configureservices(iservicecollection services)
1118
19public
void
2025
/dashboard
"});//
設定一下dashboard的訪問路徑
2728
}29 }
publicclass usergrain:grain,iusergrain
public
async taskupdateinfo(userinfo info)
public
async taskgetbalance()
}
[statelessworker]5.controller相關的**,這裡也是照舊只貼一部分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()
}
可以看到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...