我想要我的网站的网络角色,但我也希望该网站与我开发的另一个独立应用程序进行通信。
我认为不需要有两个虚拟机——我可以让我的工作角色和我的 wrb 角色在同一个虚拟机上吗?
是什么阻止我在那里上传我的应用程序的 RDP'ing?
这个角色特别需要高端口号上的连接 - 我是否必须更改任何内容才能允许这样做?(与 VM 上的 Windows 防火墙不同)
(到目前为止,Azure 让我的生活比仅仅为托管服务器付费要复杂得多)
我想要我的网站的网络角色,但我也希望该网站与我开发的另一个独立应用程序进行通信。
我认为不需要有两个虚拟机——我可以让我的工作角色和我的 wrb 角色在同一个虚拟机上吗?
是什么阻止我在那里上传我的应用程序的 RDP'ing?
这个角色特别需要高端口号上的连接 - 我是否必须更改任何内容才能允许这样做?(与 VM 上的 Windows 防火墙不同)
(到目前为止,Azure 让我的生活比仅仅为托管服务器付费要复杂得多)
我将向您指出我对此给出的其他 SO 答案,但是... Web 角色和工作人员角色只是 Windows 2008 服务器,运行和不运行 IIS。如果需要,您可以在 Web 角色中运行所有内容,并且只需扩展实例数量来处理负载。或者...为一些您不希望与您的 Web 角色 CPU/内存/网络竞争的任务创建一个工作角色。
您可以通过 tcp、http 或 https 侦听任何端口。您最多可以打开 25 个此类端口,并将流量定向到您想要的任何角色(并且它将在该角色的所有实例之间进行负载平衡)。
您不想 RDP 和安装软件。重新启动后,VM 不会保留此类更改。这是 Windows Azure 最酷的部分:在 webrole.cs 或 workerrole.cs 中,您可以设置任何您想要的内容,然后在 Run() 中,简单地休眠或启动后台任务(或其他)。如果在启动过程中,您需要安装一些需要提升权限的东西(可能是 MSI 或注册表添加),您可以使用启动任务来做几乎任何您想做的事情。这些更改会在重新启动期间重新应用。虽然......如果你发现已经安装了东西,你可以短路它并跳过安装(也就是说,有时你的东西会在重新启动之间保留 - 你不能指望这个,但你当然可以给自己留下一个面包屑知道东西已经安装...)。
我发布的更多 SO 答案:
是的,您可以将工作角色转换为 Windows 服务,然后将它们与您的 Web 角色一起部署。
WebRole 也可以定义 RoleEntryPoint,因此您可以在启动时使用它来安装和关闭 Windows 服务。其余的,例如通过防火墙打开端口,对 IIS 进行更改等,最好编写为命令行脚本或 .NET 代码,并在实例启动时执行。这样,您可以通过轻松增加实例数量来扩展您的服务。