如何生成或创建 Grain Factory/Proxy?
How to generate or create Grain Factory/Proxy?
我最近被介绍到 Orleans 项目,目前正在阅读和验证概念。
除了我遇到的几乎所有文章和教程都不能像现在这样工作(主要是由于 API 更改)之外,它们还需要安装 Orleans SDK;其中包含库、文档、项目模板等。
我决定 "hard way" 并使用标准项目模板(控制台应用程序和 Class 库)和 NuGet;在 Orleans 项目模板 (OrleansHostWrapper
) 的样板代码的帮助下。
有一件事我不知道该怎么做;这正在生成 Grain
factory/proxy。当我 运行 筒仓时,我收到消息:
Cannot find generated factory type for interface
有人可以帮忙吗?有没有不用安装Orleans SDK也能生成工厂的方法?
我在 Orleans Codeplex site 中提出了这个问题,并从 Sergey Bykov 那里得到了这个答案:
Microsoft.Orleans.Templates.Interfaces for Grain
interface projects and Microsoft.Orleans.Templates.Grains 对于 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/
这些将 codegen.cs 添加到您的属性中,这是生成的代码。
目前我认为最好的做法是为接口创建一个项目,为 grain 实现创建一个单独的项目。
我不知道这是否仍然与您相关,但 GetGrain 的静态方法现已弃用。
您需要执行以下操作:
var grainFactory = GrainClient.GrainFactory;
var grain = grainFactory.GetGrain<MyGrain>(0);
请记住,"MyGrain" 现在必须从 Orleans.dll 继承 "IGrainWithIntegerKey" 接口。
希望对您有所帮助。
我最近被介绍到 Orleans 项目,目前正在阅读和验证概念。
除了我遇到的几乎所有文章和教程都不能像现在这样工作(主要是由于 API 更改)之外,它们还需要安装 Orleans SDK;其中包含库、文档、项目模板等。
我决定 "hard way" 并使用标准项目模板(控制台应用程序和 Class 库)和 NuGet;在 Orleans 项目模板 (OrleansHostWrapper
) 的样板代码的帮助下。
有一件事我不知道该怎么做;这正在生成 Grain
factory/proxy。当我 运行 筒仓时,我收到消息:
Cannot find generated factory type for interface
有人可以帮忙吗?有没有不用安装Orleans SDK也能生成工厂的方法?
我在 Orleans Codeplex site 中提出了这个问题,并从 Sergey Bykov 那里得到了这个答案:
Microsoft.Orleans.Templates.Interfaces for Grain
interface projects and Microsoft.Orleans.Templates.Grains 对于 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/
这些将 codegen.cs 添加到您的属性中,这是生成的代码。
目前我认为最好的做法是为接口创建一个项目,为 grain 实现创建一个单独的项目。
我不知道这是否仍然与您相关,但 GetGrain 的静态方法现已弃用。
您需要执行以下操作:
var grainFactory = GrainClient.GrainFactory;
var grain = grainFactory.GetGrain<MyGrain>(0);
请记住,"MyGrain" 现在必须从 Orleans.dll 继承 "IGrainWithIntegerKey" 接口。
希望对您有所帮助。