Orleans是一種新的編程模式,用來提升微軟通用語言運行庫(CLR)的抽象水平,Orleans的宗旨就是為了創建一種既適用于客戶端又適用于服務器的編程模式,簡化代碼調試,提高代碼的可移植性。3.0?版本帶來大量的改進和修復,以及一些新的特性。

自2.0以來的一些主要變化是:

  • 分布式ACID?事務——多個grains可以加入一個事務(不管它們的狀態存儲在哪里)

  • 新的調度器,它在某些情況下提高了30%以上的性能

  • 新的基于Roslyn代碼分析的代碼生成器

  • 重寫集群成員以提高恢復速度

  • 共同托管支持

Networking layer replacement with ASP.NET Bedrock

在3.0版本中,引入TLS支持,可通過?Microsoft.Orleans.Connections.Security?包獲得。Orleans 3.0將其整個網絡層替換為構建在?Project Bedrock?之上的整個網絡層,這是ASP.NET團隊的一個創舉。Bedrock的目標是幫助開發人員構建快速、健壯的網絡客戶端和服務器。

網絡層重寫還包括用對MemoryPool的依賴替換自定義緩沖區池,在進行這種更改時,序列化現在更多地利用了?Span。在Orleans 3.0中,增加了對通過協議協商逐步升級網絡協議的支持。Orleans 3.0中添加的協議協商,例如定制核心序列化程序,同時保持向后兼容性。新網絡協議的一個好處是支持全雙工silo-to-silo連接,而不是以前在silo之間建立的單純連接對。協議版本可以通過ConnectionOptions.ProtocolVersion配置。

Co-hosting via the Generic Host

現在,與其他框架(如ASP .NET Core)在同一個進程中共同托管Orleans比以前更容易。下面是一個使用UseOrleans將Orleans與ASP.NET Core一起添加到主機的示例:

1.png

使用通用主機構建器,Orleans將與其他托管服務共享服務提供商。這使得這些服務可以進入Orleans。例如,開發人員可以將IClusterClient或IGrainFactory注入ASP.NET Core MVC控制器,并直接從它們的MVC應用程序調用grains。此功能可用于簡化部署拓撲或向現有應用程序添加其他功能。

Improved extensibility

streams?現在可以有自定義數據適配器,允許它們以任何格式接收數據。這使開發人員能夠更好地控制?stream?項在存儲中的表示方式。它還使?streams提供程序能夠控制數據的編寫方式,從而使steams能夠與遺留系統和/或non-Orleans?服務集成。自定義事務狀態現在可以聲明它在事務中能夠履行的角色。現在可以公開訪問預定義的布局策略,以便在配置期間可以替換任何位置指示符。

Reliability improvements

此版本中,集群從故障中恢復得更快。消息傳遞錯誤現在得到更一致的處理,從而導致提示錯誤被傳送回調用方。這有助于開發人員更快地發現錯誤。例如,當消息不能完全序列化或反序列化時,詳細的異常將被傳回原始調用方。

內容來源:開源中國