2

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

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

我该如何设置它,以便我的代码从数据库中获取额外数据,执行一些计算,生成 xml 都位于一个位置,该位置可从 webrole(由外部 Web 服务调用触发)和工作角色(定期运行时间表)。

我已经查看了有关 TCP 内部端点和工作人员 webrole 通信的所有问题,但似乎没有一个涉及允许 webrole 调用 workerrole 上的方法并将该数据传递给调用者的情况。

如果有人可以帮助我,将不胜感激。谢谢

4

2 回答 2

5

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

但是,在您的情况下,可能会有更好的解决方案。您可能只是将网络角色用于这两个目的。我的意思是一个网络角色就像一个工人角色,只是安装了一个额外的 IIS。除非你真的(真的——真的)需要单独扩展和更新它们,否则你可以节省很多管理和部署的痛苦,也可以节省一些钱,只是使用 Web 角色来处理所有事情。

于 2013-02-20T05:31:42.210 回答
1

如果我是你,我会将其设置为 Web 角色,然后会向 Worker Role 发送一条消息,并根据此消息触发 Worker 角色上的事件以启动所需的流程。

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

于 2013-02-19T17:42:28.807 回答