Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Azure中的web角色和工作者角色之间共享代码_Azure_Communication_Webrole - Fatal编程技术网

在Azure中的web角色和工作者角色之间共享代码

在Azure中的web角色和工作者角色之间共享代码,azure,communication,webrole,Azure,Communication,Webrole,不确定这在Azure服务中是否可行,以及这是否是最好的方法 我有一个类,它从数据库中提取数据并构建xml输出。在正常情况下,由于它是以辅助角色运行的,因此它将在必要时运行,并将XML推送到外部web服务。 但是,我还需要能够将该功能作为服务公开,以便不同的外部web服务可以对我的系统进行web服务调用,并获得完全相同的XML响应。 我可以在工作者角色中设置RESTful Web服务,并构建与工作者角色中存在的功能相同的功能—问题是我现在有重复的代码 我如何设置它,使我的代码能够从数据库中获取额外

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

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

我如何设置它,使我的代码能够从数据库中获取额外数据,执行一些计算,生成xml,所有这些都位于一个位置,可以从webrole(由外部web服务调用触发)和worker角色(按常规运行计划)访问

我已经浏览了所有关于TCP内部端点和worker webrole通信的问题,但是没有一个涉及允许webrole调用workerrole上的方法并将数据传递给调用方的情况

如果有人能帮我,我将不胜感激。
谢谢

如果我是你,我将成为Web角色,然后将向Worker角色发送消息,并根据此消息触发Worker角色上的事件以启动所需流程


您可以使用队列存储或WCF服务来实现这一点。

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


但是,在您的情况下,可能有更好的解决方案。您可以将web角色用于这两个目的。我的意思是,web角色就像工作者角色一样,只是安装了额外的IIS。除非您真的(真的)需要单独扩展和更新它们,否则仅使用web角色就可以节省大量的管理和部署痛苦,还可以节省一些钱。

是的,但这不允许我将工作人员角色响应同步传递回web角色。我知道同步通信存在问题,所以我想我的问题实际上是关于工作人员和web之间的共享代码。我想这是不可能的?您是否使用服务总线检查了它们之间的连接,比如使用服务总线队列创建工作人员角色,或者角色之间的相互通信。我在MSDN上发现了一个类似的问题我希望这对你有帮助我认为这个url也可以帮助你重新思考-我想这里的答案是创建一个新的通用项目,其中包含任何共享代码,并从我的web和worker角色引用它。这可能是最有意义的。在Azure中这样做有什么问题吗?这基本上就是@sharptooth所建议的,只是假设该项目将单独编译。谢谢。非常有用。我需要查看本地副本,并考虑您的建议,只使用Web角色-但我相信我们将需要保持一个单独的网络和工人(现在无论如何)。这是我第一次部署到Azure-如果我用共享代码创建的类库在两个项目中都被引用,这会不会自动使它包含在部署中?ie为什么这么麻烦?@Gotts:没什么麻烦,反正你会添加一个引用,唯一的额外步骤就是设置“复制本地”。我想说,之所以需要这样做,是因为Azure SDK和“工具”有着惊人的缺陷。