【问题标题】:Worker & Web Role in same application同一应用程序中的 Worker 和 Web 角色
【发布时间】:2010-09-17 05:11:01
【问题描述】:

我们有一个 WebRole,它处理来自 WCF 服务的请求,它验证然后将消息放入云存储中的 Azure 队列。在同一个应用程序中,我们有一个 WorkerRole,它从队列中读取信息并调用处理请求并返回结果的持久层。我们想知道为什么工作角色没有选择我们的任何配置设置,因此没有提供我们正在寻找的 Trace 信息。我们意识到工作者角色可能正在寻找 app.config 并且找不到它。

有没有办法将辅助角色指向 Web 配置,或者能够将我们的企业库设置加载到 ServiceConfiguration.cscfg 文件中,这在任何一种情况下都意味着两者都可以从一个共同的地方读取?

非常感谢提前 亲切

【问题讨论】:

    标签: azure


    【解决方案1】:

    据我所知,您的辅助角色无法开箱即用地访问网络角色的网络配置。

    如果您将配置项移动到 ServiceConfiguration.csfg 文件,并且工作人员和 Web 角色在同一个云项目中,则设置将在同一个文件中。但由于 Web 角色和辅助角色是该云项目中的不同项目,因此它们的设置位于该 .csfg 文件的不同部分。如果您希望两者的设置相同,则必须复制设置。

    将您的设置放在此文件中的好处是,您可以在角色运行时更改设置,并让角色根据您的喜好做出响应,例如您可能希望某些设置重新启动角色,而对于其他设置,您可能只想更新静态变量。要更新 web.config 或 app.config,您需要重新部署该角色。

    您确实需要注意,ServiceConfiguration 文件不能替代 webconfig。如果您使用的工具会在 Web 或应用配置中查找其设置,除非它们特别聪明并且了解 Azure 环境,否则它们不会在 ServiceConfiguration 文件中查找设置。

    我知道您没有问过这个问题,但是如果您希望您的工作角色通过使用请求队列和响应队列来为您的 Web 角色提供几乎同步的响应,您可能会发现这个不会很好地扩展。如果你想对 Azure 中的辅助角色进行同步调用,最好使用 WCF(这在指南中的任何地方都没有突出显示)。正如您所说,无论如何,所有这些都只是 WCF 服务,您的问题的答案可能是取消工作者角色。

    【讨论】:

    • 您可能想要添加 ServiceConfiguration 文件的原因,以便在角色运行时可以更改它。此外,API 挂钩。
    • 这是很好的反馈,让我们考虑了我们的方法。干杯科林
    【解决方案2】:

    您不能在 Azure 中跨角色共享 web.config 或 .cscfg,因为无法保证角色与另一个角色位于同一主机、群集甚至数据中心。

    如果您只是想共享连接字符串、应用程序特定变量等项目,我将简单地创建您自己的“配置管理器”类,该类将获取一些 XML 并将其解析为一组设置。通过这种方式,您可以将该配置存储在 Azure Blob 存储中,并且更改就像更新该 Blob 并通知您的应用程序重新加载一样简单。 (使用服务管理 API 非常容易)。

    【讨论】:

      猜你喜欢
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2020-09-24
      • 2018-02-28
      相关资源
      最近更新 更多