C# 如何在Microsoft Azure中将内容从httpWebRequest从Web角色传输到工作人员角色

C# 如何在Microsoft Azure中将内容从httpWebRequest从Web角色传输到工作人员角色,c#,azure,azure-web-roles,endpoint,azure-worker-roles,C#,Azure,Azure Web Roles,Endpoint,Azure Worker Roles,请帮助一个新手: 我的想法是: Web角色接收http请求。(已完成) 用来帮助确定辅助角色的特定实例的url。(已完成) 请求的内容应该转到工作者角色进行[处理(它可能非常大,可能是xml、json、blob或其他类型) 工作者角色接收数据 辅助角色解析/处理内容中的数据,并执行一些计算。(完成) 工作者角色将响应发送回web角色。(可能是字符串或类似于请求中数据的内容:也可能相当大) 第3项和第4项是我最大的问题所在:不确定在这里做什么。 第6项我想我对该做什么有些想法,但很想听听你的建议

请帮助一个新手:

我的想法是:

  • Web角色接收http请求。(已完成)
  • 用来帮助确定辅助角色的特定实例的url。(已完成)
  • 请求的内容应该转到工作者角色进行[处理(它可能非常大,可能是xml、json、blob或其他类型)
  • 工作者角色接收数据
  • 辅助角色解析/处理内容中的数据,并执行一些计算。(完成)
  • 工作者角色将响应发送回web角色。(可能是字符串或类似于请求中数据的内容:也可能相当大)
  • 第3项和第4项是我最大的问题所在:不确定在这里做什么。
    第6项我想我对该做什么有些想法,但很想听听你的建议

    我知道的是:

    • 我不能使用队列:我相信有一个大小限制,这将 阻止我使用它
    • 我想我不能使用共享 存储,因为web角色现在是怎样的-说来话长
    • 这让我不得不使用端点:除非有人告诉我这是 绝对不可能,那么我将不得不考虑使用共享 储藏室

    提前感谢您的所有输入。

    您当然可以使用代码从web角色实例中找到工作人员角色实例的内部端点。有关详细信息,请参阅此线程:

    但是,我发现您的方法存在一个问题。您提到web角色将使用内部端点与worker角色通信以发送数据,然后等待worker角色处理该数据并发送响应。虽然从技术上讲,这样做是可能的,但会导致一些可伸缩性问题,因为您现在占用了web角色此外,您必须在代码中决定哪个工作者角色实例应该处理数据(假设有多个实例)


    我的建议是获取请求并将请求数据持久保存在blob存储中。您将获得blob的URL。然后使用blob的URL在队列中写入消息。消息写入队列后,您的web角色可以通知用户请求已提交。工作者角色实例将轮询此队列单击并处理消息。他们将从消息内容中获取blob URL,获取内容并处理它。处理完工作后,worker角色可以写入队列/表,指示工作已完成。Web角色可以不断轮询此表或队列,一旦任务完成,就可以通知用户。

    什么意思通过共享存储?类似于磁盘或azure blob存储?来存储临时文件以进行处理-您可以使用azure本地存储:是的,这就是我所说的共享存储:一个blob/表,可以由同一云服务中的所有角色访问。您将如何将数据从web角色传递给worker?这正是我的问题!我想e是一种在工作者角色上设置内部端点并使用该端点的方法(不必担心负载平衡)。抱歉:对整个云/网络来说是一种新手。请考虑将azure service bus与竞争对手作为web角色使用。它具有高度可扩展性,并提供内置负载平衡。