【问题标题】:Is Azure Worker Role for an on-premise solution available through Windows Azure Pack or App Fabric是否可以通过 Windows Azure Pack 或 App Fabric 获得内部部署解决方案的 Azure Worker Role
【发布时间】:2014-06-17 06:47:47
【问题描述】:

我正在编写一个应用程序,该应用程序将同时部署到云和本地数据中心(对于那些本质上还不信任云数据的客户。

如果我选择使用 MS Azure,我可以将新的云项目类型与他们的 Web 和 Worker 角色一起使用。但是,我怎样才能让工作人员角色为内部部署变体运行?

我是否必须编写自己的主机(例如作为 Windows 服务)?这并不理想,因为它需要额外的代码和部署。

是否存在不需要完全设置私有云的 Azure 兼容方法,例如在 Windows Azure 包或 App Fabric 的东西(App Fabric 仍然是最新的?)?

【问题讨论】:

    标签: azure process cloud azure-worker-roles


    【解决方案1】:

    这在 Azure 包中不存在。

    没有必要尝试在前提下拥有一个工人角色。您需要做的就是拥有一个安装 Windows 服务的虚拟机。

    使用Topshelf 创建 Windows 服务很容易。

    使用 Topshelf 部署 Windows 服务实际上比部署工作角色容易得多,因为您只需运行使用 install 创建的 .exe,然后使用 start 参数。

    因此,您实际上需要的代码比工作角色少,因为您不需要第二个包装项目。

    【讨论】:

    • 如果您尝试在云端和本地运行相同的代码,那么您仍然可以创建 Windows 服务控制台应用程序,然后将其部署到 Web 角色(与所有人的工作角色相同)意图和目的)使用 AzureWebFarm.OctopusDeploy 之类的东西,或者您可以将控制台应用程序部署为 Web 作业(这可能在 AzurePack 中可用,如果没有,那么 TopShelf .exe 无论如何都会作为普通 .exe 运行而无需参数)。
    • 那么好消息是您永远不需要引用 ServiceRuntime 或使用 RoleEnvironment 或其他 Azure 特定的东西 - 代码不知道它的部署位置:))
    【解决方案2】:

    虽然我之前没有使用过 Windows Azure Pack,但它似乎能够在内部提供此功能,但是要求和设置过程非常严格,而且它肯定是面向企业的。

    更好的选择是您创建一个控制台应用程序,该应用程序根据您的操作系统任务计划程序为您的 WorkerRole 触发 OnStart() 和 Run() 函数。

    在我看来,工作量并不大,您可以保持您的 WorkerRoles 不变,但只需为任何本地解决方案添加控制台应用程序。

    【讨论】:

    • 您通常在 OnStart 和 Run 方法中使用 RoleEnvironment,所以这不起作用。
    • 您可以使用 RoleEnvironment.IsAvailable 布尔值在您所做的事情之间切换,具体取决于您所在的位置(例如 Azure 或本地)
    • 是的。但这需要为您通常不想要的本地安装安装 Azure SDK。
    • 您只需为 RoleEnvironment 变量引用 Microsoft.WindowsAzure.ServiceRuntime,无需安装整个 SDK。
    • 但是 ms 正在讨论本地代码如何与 azure 版本相提并论。如果是这种情况,则不需要额外部署
    猜你喜欢
    • 2017-10-22
    • 2017-06-03
    • 2023-03-14
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多