在Azure中共享Web和辅助角色之间的代码

时间:2013-02-19 15:48:53

标签: azure communication webrole

不确定Azure服务是否可行,以及它是否是最好的方法。

我有一个类,它从我的数据库中提取数据并构建一个xml输出。在正常情况下,因为它以worker角色运行,所以它将在必要时运行并将XML推送到外部Web服务。 但是,我还需要能够将该功能公开为服务,以便不同的外部Web服务可以对我的系统进行Web服务调用并获得相同的XML响应。 我可以在worker角色中设置一个RESTful webservice,并构建与我的worker角色相同的功能 - 问题是我现在有重复的代码。

如何设置它以便我的代码从数据库获取额外数据,执行一些计算,生成xml全部位于可从webrole(由外部Web服务调用触发)和辅助角色访问的一个位置(按照正常的运行时间表)。

我查看了有关TCP内部端点和工作者webrole通信的所有问题,但它们似乎都没有涵盖允许webrole在workerrole上调用方法并将该数据传递给调用者的情况。

如果有人可以帮助我,我将非常感激。 感谢

2 个答案:

答案 0 :(得分:5)

从技术上讲,解决方案是您创建一个包含所有共享代码的类库(.NET程序集),并在两个角色项目中使用它。您必须在每个角色项目中对该程序集的引用上将“copy local”设置为“true”,以便将程序集打包到角色包中。

但是在您的情况下可能会有更好的解决方案。您可能只是将Web角色用于这两个目的。我的意思是一个Web角色就像一个工人角色,只是安装了一个奖励IIS。除非你真的(真的非常)需要单独扩展和更新它们,否则你可以节省大量的管理和部署痛苦,还可以节省一些资金,只需使用Web角色即可。

答案 1 :(得分:1)

如果我是你,我会将其作为Web角色,然后向工作者角色发送消息,并根据此消息,触发工作者角色上的事件以启动所需的过程。

您可以使用队列存储或WCF服务来执行此操作。