我最近被介绍到奥尔良项目,目前正在做一些阅读和概念验证。
除了我遇到的几乎所有文章和教程都无法按现在工作(主要是由于 API 更改)之外,它们还需要安装新奥尔良 SDK;其中包含库、文档、项目模板等。
我决定以"艰难的方式"执行此操作,并使用标准项目模板(控制台应用程序和类库)和 NuGet;在奥尔良项目模板 (OrleansHostWrapper
的样板代码的帮助下。
有一件事我无法弄清楚该怎么做;那就是生成Grain
工厂/代理。当我运行思洛存储器时,我收到以下消息:
找不到接口的生成出厂类型
谁能帮忙?是否有其他方法可以在无需安装新奥尔良 SDK 的情况下生成工厂?
方法是将 nuget 包添加到项目中Microsoft.Orleans.Templates.Grains 或 Microsoft.Orleans.Templates.Interfaces 中,具体取决于项目类型。
https://www.nuget.org/packages/Microsoft.Orleans.Templates.Grains/https://www.nuget.org/packages/Microsoft.Orleans.Templates.Interfaces/
这些将代码生成.cs添加到生成的代码的属性中。
目前,我认为最佳实践是有一个用于接口的项目和一个用于粒度实现的单独项目。
这是否仍然与您相关,但是GetGrain 的静态方法现已弃用。
您将需要执行以下操作:
var grainFactory = GrainClient.GrainFactory;
var grain = grainFactory.GetGrain<MyGrain>(0);
请记住,"MyGrain"现在必须从 Orleans .dll继承"IGrainWithIntegerKey"接口。
希望这有帮助。
我在奥尔良Codeplex网站上问过这个问题,并从Sergey Bykov那里得到了这个答案:
Microsoft.Orleans.Templates.Interfaces 用于Grain
接口项目和 Microsoft.Orleans.Templates.Grains 用于Grain
实现项目,可以在未安装 SDK 的情况下生成这些项目。