2017-02-07 61 views
0

我正在构建使用Azure服务结构的概念验证应用程序,并且想要在启动时初始化群集中的几个“演示”用户参与者。我发现了一些简要的文章,讨论如何从DataPackage加载数据,该文件显示如何加载数据本身,但没有说明如何从这些数据创建角色。使用数据包初始化服务结构参与者

这可以用DataPackages完成,还是有更好的方法来完成这个?

回答

0

数据包只是不透明的目录,其中包含您希望在其中进行每个部署的任何文件。它不会加载或处理数据本身,因为只有您的代码知道数据的含义,您必须完成所有繁重的工作。例如,如果您有一个名为“SvcData”的数据包,它将在部署过程中部署该包中的文件。如果您在该目录中有一个StaticDataMaster.json文件,您可以在服务运行时(无论是在演员还是其他地方)访问它。例如:

// get the data package 
var DataPkg = ServiceInitializationParameters.CodePackageActivationContext. 
    GetDataPackageObject("SvcData"); 

// fabric doesn't load data it is just manages for you. data is opaque to Fabric 
var customDataFilePath = DataPkg.Path + @"\StaticDataMaster.json"; 

// TODO: read customDatafilePath, etc. 
+0

对,我知道它只是一个我可以加载的目录中的文件(如上面的示例所示)。问题更多的是如何在将SF包部署到群集中时从此演示数据创建演员。这个过程中有没有一点我可以加入,这将允许我创建和初始化演示演员?这是否可以在Actor构造函数OnActivateAsync方法内部完成(但是只有当一个actor被激活时才会触发;这是否太晚了?) – KyKo

+0

您必须有一个服务来查看数据包中的数据并创建actor通过ActorProxy调用它们。没有内置机制来自动创建单个角色。 – masnider

+0

@kyko演员有一个接口/合同。你可以添加一个方法来注入数据。可选地,您可以直接使用状态管理器。在某些时候,你需要请求演员做点什么。这就是演员创建的那一点。所以,在这方面通过构造函数获取数据可能不会起作用。没有什么能阻止你通过演员的方法传递数据。 –