Orleans 2.0
2.0是Orleans 的主要版本,其主要目标是兼容.NET Standard 2.0并通过.NET Core实现跨平台。作为这项工作的一部分,Orleans API更加符合现代化的配置,就像配置和托管Asp.NET应用一样。
由于它与.NET Standard 2.0兼容,因此面向.NET Core或.NET Framework Full 的应用程序可以使用Orleans 2.0。核心团队对此版本进行测试的重点是完整的.NET Framework,以确保现有应用程序可以轻松地从1.5迁移到2.0,并具有完全向后兼容性。
2.0中最重要的变化如下:
完全转移到程序化配置,利用依赖注入和流式构建器API。
旧的API中,基于配置对象和XML文件的配置为实现向后兼容而保留,但不会继续支持,将来会被弃用。在“配置”部分中查看更多详细信息应用程序集的显式编程规范,用于在 Silo 或 Client 初始化时替换Orleans运行时对文件夹的自动扫描。
Orleans 仍会自动在指定的程序集中找到相关类型,例如 Grain 接口和类,序列化程序等,但它将不再尝试加载它可以在文件夹中找到的每个程序集。提供了用于加载文件夹中所有程序集的可选辅助方法,以实现向后兼容:IApplicationPartManager.AddFromApplicationBaseDirectory()
。
- 代码生成的改造。
虽然对于开发人员来说几乎是不可见的,但代码生成在处理各种可能类型的序列化方面变得更加健壮。F#组件需要特殊处理。有关详细信息,请参阅代码生成部分。
- 创建了一个
Microsoft.Orleans.Core.Abstractions
NuGet包,并将几种类型移动/重构。
Grain 代码很可能只需要引用这些抽象,而 Silo 主机和 Client 将引用更多的 Orleans 包。我们计划不会频繁地更新这个包。
添加对Scoped服务的支持。
这意味着每个 Grain 激活都会获得自己的Scope Provider
,Orleans会注册一个上下文IGrainActivationContext
对象,该对象可以注入到Transient
或Scoped
服务中,以访问激活的特定信息和Grain激活的生命周期事件。这与ASP.NET Core 2.0为每个Request
创建Scope
上下文的方式类似,但在Orleans的情况下,它适用于 Grain 激活的整个生命周期。有关服务生命周期的更多信息,请参阅ASP.NET Core文档中的服务生命周期和注册选项。迁移日志组件,以使用
Microsoft.Extensions.Logging
(与ASP.NET Core 2.0相同的抽象)。2.0包括对ACID分布式跨 Grain 交易的测试版支持。
该功能将为原型设计和开发做好准备,并将在2.0版本之后的某个时间提供生产使用。有关详细信息,请参阅事务