【问题标题】:How does Azure web role happen to run without an entry point?Azure Web 角色如何在没有入口点的情况下运行?
【发布时间】:2012-02-07 08:30:31
【问题描述】:

出于好奇,我打开了我的 Azure Web 角色项目,导航到包含 RoleEntryPoint 后代类的文件并完全删除了该类定义。然后我将角色打包并部署在 Azure 中——角色启动时没有任何错误提示。

这怎么可能行得通?

【问题讨论】:

    标签: .net azure azure-web-roles


    【解决方案1】:

    除了 DarwkwingDuck 说的,我只提一下 RoleEntryPoint 提供了在角色实例初始化、运行和停止时运行代码的方法。

    如果我们继续阅读RoleEntryPoint class documentation on MSDN,我们还会看到以下内容:

    工作者角色必须扩展 RoleEntryPoint 类以添加功能 到角色实例。 Web 角色可以选择扩展 RoleEntryPoint 类,或者可以使用 ASP.NET 生命周期管理 处理开始和停止序列的方法。对于 VM 角色,Windows 使用服务而不是 RoleEntryPoint 类。

    因此,Web 角色可以选择扩展 RoleEntryPoint 类

    【讨论】:

      【解决方案2】:

      RoleEntryPoint 存在于您的部署中,无论您是否从它继承。请注意,您在该类中拥有的所有方法都覆盖了基类实现。如果您不继承 RoleEntryPoint,则会执行这些基类实现。

      这也使得将旧版应用程序引入 Azure 变得更加容易 - 只需将现有 Web 应用程序作为角色添加到云项目中即可。

      【讨论】:

      • 这怎么可能? RoleEntryPoint 是抽象的。
      • @AidanRyan abstract 关键字应用于类级别,而不是方法级别。所以虽然 RoleEntryPoint 必须被继承(因为它不能被实例化),但它的方法不需要被覆盖。
      • 抽象类不能被实例化,并且OP说后代类被完全删除了......那么在这种情况下究竟被实例化了什么?我感觉在 Web 角色案例中调用了一些与 RoleEntryPoint 平行且独立的基础架构......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2022-01-09
      • 2021-12-28
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多