Orleans 是一種新的編程模式,用來提升微軟通用語言運行庫(CLR)的抽象水平,Orleans 的宗旨就是為了創建一種既適用於客戶端又適用於伺服器的編程模式,簡化代碼調試,提高代碼的可移植性。3.0 版本帶來大量的改進和修復,以及一些新的特性。
自 2.0 以來的一些主要變化是:
在 3.0 版本中,引入 TLS 支持,可通過 Microsoft.Orleans.Connections.Security 包獲得。Orleans 3.0 將其整個網路層替換為構建在 Project Bedrock 之上的整個網路層,這是 ASP.NET 團隊的一個創舉。Bedrock 的目標是幫助開發人員構建快速、健壯的網路客戶端和伺服器。
網路層重寫還包括用對 MemoryPool<byte> 的依賴替換自定義緩衝區池,在進行這種更改時,序列化現在更多地利用了 Span<T> 。在 Orleans 3.0 中,增加了對通過協議協商逐步升級網路協議的支持。Orleans 3.0 中添加的協議協商,例如定製核心序列化程序,同時保持向後兼容性。新網路協議的一個好處是支持全雙工 silo-to-silo 連接,而不是以前在 silo 之間建立的單純連接對。協議版本可以通過 ConnectionOptions.ProtocolVersion 配置。
現在,與其他框架(如 ASP .NET Core)在同一個進程中共同託管 Orleans 比以前更容易。下面是一個使用 UseOrleans 將 Orleans 與 ASP.NET Core 一起添加到主機的示例:
ar host = new HostBuilder()
.ConfigureWebHostDefaults(webBuilder =>
{
// Configure ASP.NET Core
webBuilder.UseStartup<Startup>();
})
.UseOrleans(siloBuilder =>
{
// Configure Orleans
siloBuilder.UseLocalHostClustering();
})
.ConfigureLogging(logging =>
{
/* Configure cross-cutting concerns such as logging */
})
.ConfigureServices(services =>
{
/* Configure shared services */
})
.UseConsoleLifetime()
.Build();
// Start the host and wait for it to stop.
await host.RunAsync();
使用通用主機構建器,Orleans 將與其他託管服務共享服務提供商。這使得這些服務可以進入 Orleans。例如,開發人員可以將 IClusterClient 或 IGrainFactory 注入 ASP.NET Core MVC 控制器,並直接從它們的 MVC 應用程序調用 grains。此功能可用於簡化部署拓撲或向現有應用程序添加其他功能。
streams 現在可以有自定義數據適配器,允許它們以任何格式接收數據。這使開發人員能夠更好地控制 stream 項在存儲中的表示方式。它還使 streams 提供程序能夠控制數據的編寫方式,從而使 steams 能夠與遺留系統和/或 non-Orleans 服務集成。自定義事務狀態現在可以聲明它在事務中能夠履行的角色。現在可以公開訪問預定義的布局策略,以便在配置期間可以替換任何位置指示符。
此版本中,集群從故障中恢復得更快。消息傳遞錯誤現在得到更一致的處理,從而導致提示錯誤被傳送回調用方。這有助於開發人員更快地發現錯誤。例如,當消息不能完全序列化或反序列化時,詳細的異常將被傳回原始調用方。
發布說明:
[admin
]