微軟奧爾良Orleans分散式應用框架已是跨平臺

banq發表於2018-10-31

Microsoft Orleans(奧爾良)是.NET的開源程式設計框架,最初由Microsoft Research的eXtreme Computing Group構建,可以使用虛擬角色actor簡化分散式應用程式開發,這些角色是具有自己狀態的單執行緒物件,它們不共享任何記憶體並透過使用非同步遠端過程呼叫交換訊息進行通訊,這些呼叫是按需啟用的,當它們不再使用時被收集並按需要無縫地重新啟用。
因為執行時負責啟用,清理和分發虛擬角色actor(奧爾良稱之為grains),所以開發人員可以編寫他們的程式碼,好像它在一臺機器上執行而不用擔心併發性,Orleans將其擴充套件到儘可能多的伺服器。
當Microsoft 在2015年初開源奧爾良時,它需要.NET Framework,這意味著它只能在Windows Server上執行。2.0版本透過遷移到.NET Core來實現Orleans跨平臺,.NET Core現在可以在Linux和macOS上執行(支援.NET Core 2.0和2.1,因此開發人員無需升級其.NET版本即可使用新奧爾良版本)。
Orleans已經支援依賴注入,主要是允許開發人員在執行時將依賴項注入到自己的應用程式程式碼中,所有內部元件都是可注射的。

奧爾良設計
熟悉的ASP.NET概念使新開發人員更容易學習,還使社群更容易為奧爾良做出貢獻,這對專案來說變得越來越重要。
即將釋出的2.1版本中最大的變化之一是排程程式,它可以處理孤島中數百萬個任務的執行,新的排程程式提供了30%的更高吞吐量 - 它是由GitHub社群成員編寫的。
另一個重要特性是新的程式碼生成器。“奧爾良的一個重要價值主張是它易於使用。您可以編寫程式碼,就像物件是本地的一樣,即使它是遠端的; 為此,我們生成透明的代理類和序列化器。您可以本地編寫程式碼,該程式碼採用特定型別的引數,但需要從一臺機器神奇地轉移到另一臺機器,我們編寫序列化器來執行此操作。“
Orleans 2.1中新程式碼生成包的大部分程式碼也是由社群提供的。這使用Roslyn .NET編譯器的程式碼分析來避免潛在的衝突以及與不同版本的.NET Core SDK衝突的依賴關係。“程式碼生成的新版本使用程式碼來編譯程式碼:它根本不載入程式集,它沒有版本繫結 - 它只是查詢程式碼並生成序列化程式和代理引用的程式碼。”

 

相關文章