自從寫了RabbitHub框架系列後的一段時間內一直在思索更加輕量簡便,分佈式高併發的框架(RabbitHub學習成本較高),無心間在網上級聯看到了不少新框架:從helios到Akka.NET在到Orleans在到Azure Service Fabric,最終選擇了Orleans做爲研究對象,理由是微軟官方出品,Service Fabric尚未正式版,下面咱們來進入Orleans的大門。
來自官網的解釋:ios
一種構建分佈式、 高規模(伸縮)的應用程序,在.NET 簡單方法git
奧爾良是一個框架,提供一個簡單的方法來構建分佈式的高規模計算應用程序,而無需瞭解並應用複雜併發或其餘伸縮模式。它是由微軟研究院建立和設計在雲計算中使用。 github
特性架構
從上述的簡介能夠看出Orleans就是爲了分佈式、併發而生,那麼大併發、高用戶量也能夠獲得解決。併發
官網:http://dotnet.github.io/orleans/框架
文檔:http://dotnet.github.io/orleans/What's-new-in-Orleans分佈式
源碼:https://github.com/dotnet/orleans微服務
是否可靠我也不肯定,可是案例仍是很誘人的,特別是微軟官方遊戲:Halo四、Halo5(光環|光暈)的雲服務所有由它來承載。固然還有其它的用戶,不過我都不怎麼認識,就不列出了,大夥能夠去官網查看。高併發
Grains能夠理解爲一個服務,相似:UserService、AccountService,是主要的業務邏輯實現與抽象。學習
Silos能夠理爲一臺Server,裏面主要用於存儲Grains,也就是說Grains開發完成後須要註冊到Silos中,而後等待調用。
.NET Framework、Core CLR,也就是說能夠進行跨平臺部署。
具體的應用客戶端,能夠是控制檯、Web應用程序(MVC——包含vNext、WebForms)、WindowService、WPF等一切.NET端技術。
新建2個控制檯應用程序,和2個Windows類庫,項目結構以下:
在」Sample.Implements「中添加對項目」Sample.Interfaces「的引用。
在」Client「項目中添加對項目」Sample.Interfaces「的引用。
在」Server「項目中添加對項目」Sample.Interfaces「,」Sample.Implements「的引用。
安裝NuGet包「Microsoft.Orleans.Server」、」Microsoft.Extensions.DependencyInjection「到「Server」項目中。
安裝NuGet包「Microsoft.Orleans.Client」到「Client」項目中。
安裝NuGet包「Microsoft.Orleans.Core」到「Sample.Implements」和」Sample.Implements」項目中。
在」Sample.Interfaces「中新建一個IUserService,代碼以下
用意很是簡單,根據手機號碼判斷用戶是否存在。
在」Sample.Implements「新建一個UserService實現IUserService接口,代碼以下:
在」Server「Program.cs入口點中寫入以下代碼:
在」Client「Program.cs入口點中寫入以下代碼:
首先運行」Server.exe「等待出現以下文字:
在運行」Client.exe「
本次的源碼放在:https://github.com/majian159/Samples/tree/master/OrleansSamples/HelloWorld
能夠發現咱們的客戶端應用」Client「徹底沒有引用業務邏輯實現的項目」Sample.Implements「,也就是說業務邏輯的執行是在服務端」Server「執行的,本次Demo只用了一個服務端,大夥能夠想象下若是服務端進行了集羣,再經過一些協調服務進行管理分配,那麼搭建一個」微服務「的架構變得異常輕鬆,經過一些手段動態切換客戶端所需服務的服務端地址從而提供應用響應與容災的支持。
本文主要是作一個簡單的介紹和Demo的效果,在後續章節中我會繼續帶來一些更實用的特性介紹與剖析,雖然我也在摸索中,但儘可能不誤導大夥。。。
QQ羣:384413261(RabbitHub)
Email:majian159@live.com