> Linux新闻 >

Orleans 3.0 发布,微软下一代云计算编程模式

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<byte> 的依赖替换自定义缓冲区池,在进行这种更改时,序列化现在更多地利用了 Span<T> 。在 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 一起添加到主机的示例:

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。此功能可用于简化部署拓扑或向现有应用程序添加其他功能。

Improved extensibility

streams 现在可以有自定义数据适配器,允许它们以任何格式接收数据。这使开发人员能够更好地控制 stream 项在存储中的表示方式。它还使 streams 提供程序能够控制数据的编写方式,从而使 steams 能够与遗留系统和/或 non-Orleans  服务集成。自定义事务状态现在可以声明它在事务中能够履行的角色。现在可以公开访问预定义的布局策略,以便在配置期间可以替换任何位置指示符。

Reliability improvements

此版本中,集群从故障中恢复得更快。消息传递错误现在得到更一致的处理,从而导致提示错误被传送回调用方。这有助于开发人员更快地发现错误。例如,当消息不能完全序列化或反序列化时,详细的异常将被传回原始调用方。

发布说明:

https://devblogs.microsoft.com/dotnet/orleans-3-0/

(责任编辑:IT)