出于好奇,我打开了我的Azure网络角色项目,导航到包含RoleEntryPoint
后代类的文件,并且完全删除了该类定义。然后我打包角色并将其部署到Azure中 - 角色开始时没有任何错误指示。Azure Web角色如何在没有入口点的情况下运行?
这怎么可能工作?
出于好奇,我打开了我的Azure网络角色项目,导航到包含RoleEntryPoint
后代类的文件,并且完全删除了该类定义。然后我打包角色并将其部署到Azure中 - 角色开始时没有任何错误指示。Azure Web角色如何在没有入口点的情况下运行?
这怎么可能工作?
除了DarwkwingDuck所说的之外,我只想提到RoleEntryPoint提供方法来在角色实例初始化,运行和停止时运行代码。
如果我们继续通过RoleEntryPoint class documentation on MSDN阅读我们也将看到以下内容:
辅助角色必须扩展RoleEntryPoint类添加功能 到角色实例。 Web角色可以选择扩展RoleEntryPoint类,也可以使用ASP.NET生命周期管理方法处理启动和停止序列。对于VM角色,使用Windows 而不是RoleEntryPoint类。
因此,Web角色可以选择扩展RoleEntryPoint类。
RoleEntryPoint存在于您的部署中,无论您是否从中继承。请注意,您在该类中拥有的所有方法都将覆盖基类实现。如果您没有继承RoleEntryPoint,那些基类实现将执行。
这也使得将旧版应用程序引入Azure变得更加容易 - 只需将现有的Web应用程序添加到云项目中作为角色即可。
这怎么可能? RoleEntryPoint是抽象的。 – 2013-02-12 22:08:07
@AidanRyan抽象关键字应用于类级而不是方法级。所以,虽然RoleEntryPoint必须被继承(因为它不能被实例化),但它的方法不需要被覆盖。 – BobbyA 2017-08-28 20:34:48
抽象类不能被实例化,并且OP说后代类被完全删除了...那么在这种情况下究竟是在实例化什么呢?我有一种感觉,有一些基础结构与Web角色案例中调用的RoleEntryPoint是并行分离的。 – 2017-08-29 16:39:49