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