微软奥尔良Orleans分布式应用框架已是跨平台

18-10-31 banq
    

Microsoft Orleans(奥尔良)是.NET的开源编程框架,最初由Microsoft Research的eXtreme Computing Group构建,可以使用虚拟角色actor简化分布式应用程序开发,这些角色是具有自己状态的单线程对象,它们不共享任何内存并通过使用异步远程过程调用交换消息进行通信,这些调用是按需激活的,当它们不再使用时被收集并按需要无缝地重新激活。

因为运行时负责激活,清理和分发虚拟角色actor(奥尔良称之为grains),所以开发人员可以编写他们的代码,好像它在一台机器上运行而不用担心并发性,Orleans将其扩展到尽可能多的服务器。

当Microsoft 在2015年初开源奥尔良时,它需要.NET Framework,这意味着它只能在Windows Server上运行。2.0版本通过迁移到.NET Core来实现Orleans跨平台,.NET Core现在可以在Linux和macOS上运行(支持.NET Core 2.0和2.1,因此开发人员无需升级其.NET版本即可使用新奥尔良版本)。

Orleans已经支持依赖注入,主要是允许开发人员在运行时将依赖项注入到自己的应用程序代码中,所有内部组件都是可注射的。

奥尔良设计

熟悉的ASP.NET概念使新开发人员更容易学习,还使社区更容易为奥尔良做出贡献,这对项目来说变得越来越重要。

即将发布的2.1版本中最大的变化之一是调度程序,它可以处理孤岛中数百万个任务的执行,新的调度程序提供了30%的更高吞吐量 - 它是由GitHub社区成员编写的。

另一个重要特性是新的代码生成器。“奥尔良的一个重要价值主张是它易于使用。您可以编写代码,就像对象是本地的一样,即使它是远程的; 为此,我们生成透明的代理类和序列化器。您可以本地编写代码,该代码采用特定类型的参数,但需要从一台机器神奇地转移到另一台机器,我们编写序列化器来执行此操作。“

Orleans 2.1中新代码生成包的大部分代码也是由社区提供的。这使用Roslyn .NET编译器的代码分析来避免潜在的冲突以及与不同版本的.NET Core SDK冲突的依赖关系。“代码生成的新版本使用代码来编译代码:它根本不加载程序集,它没有版本绑定 - 它只是查找代码并生成序列化程序和代理引用的代码。”