Azure service fabric Azure服务结构(预览)Actors SDK为Actor继承提供了惊人的行为
在试用了preview SDK之后,我注意到了一些令人惊讶的事情,那就是在尝试为我正在开发的框架使用的一组相关参与者类型提供通用实现时 创建如下代码似乎无法按预期工作: 图书馆:Azure service fabric Azure服务结构(预览)Actors SDK为Actor继承提供了惊人的行为,azure-service-fabric,Azure Service Fabric,在试用了preview SDK之后,我注意到了一些令人惊讶的事情,那就是在尝试为我正在开发的框架使用的一组相关参与者类型提供通用实现时 创建如下代码似乎无法按预期工作: 图书馆: public abstract class CommonActor : Actor, ICommonActor { public abstract void DoStuff(); } 控制台应用程序: public class MyActor : CommonActor { public void ov
public abstract class CommonActor : Actor, ICommonActor
{
public abstract void DoStuff();
}
控制台应用程序:
public class MyActor : CommonActor
{
public void override DoStuff()
{
//Stuff
}
}
创建演员时,注册演员的调用失败
fabricRuntime.RegisterActor(typeof(MyActor));
我收到一个错误,该类型不是从Actor派生的,这显然是假的
我还注意到,这似乎破坏了生成服务清单的工具。(我必须通过禁用该工具来解决此问题。)
这基本上阻止了我以我想要的方式为我的用户编写API。我一点也不喜欢那样。与其他人的报告类似,这里几乎没有对依赖注入场景的支持,对我来说,Actors模型的实用性受到了极大的破坏
我错过什么了吗?这里有更好的实现参与者抽象的方法吗?谢谢您的报道。这是一个已知的限制,将在将来的版本中修复。虽然不美观,但您可以通过使用包容来解决问题。现在,只要使用
ActorService
装饰器显式命名子参与者,就可以实现这一点。在您的示例中,这将转换为像这样更新MyActor
类
[ActorService(Name = "MyActor")] // Child actors need this decorator
public class MyActor : CommonActor
{
public void override DoStuff()
{
//Stuff
}
}
有关更多信息,请参阅