在 Azure 或 Amazon 上托管控制台应用程序,这可能吗?
Posted
技术标签:
【中文标题】在 Azure 或 Amazon 上托管控制台应用程序,这可能吗?【英文标题】:Hosting console application on Azure or Amazon, is it possible? 【发布时间】:2012-02-01 11:10:34 【问题描述】:我想知道是否可以编写控制台应用程序以移植到 Windows Azure 上。
控制台应用程序没有界面,它只是在不通知用户它正在做什么的情况下完成它的工作。在这种情况下,它将是一个套接字应用程序。
我不希望它成为一个网站。它不会对项目有任何补充。
编辑:感谢大家这么快回复我。现在我对我一直在寻找的东西有了答案。现在我的问题是:在亚马逊会叫什么?它是 Azure 上的工作者角色......现在我知道了,感谢你们所有人
【问题讨论】:
【参考方案1】:您绝对可以在 Windows Azure 中以 Web 或 Worker 角色(它们都是 Windows Server 2012 或 2008 R2/SP2)运行控制台应用程序,并且通常可以不加修改地运行它们。您需要:
为您的控制台应用程序提供二进制文件或安装程序,以及任何其他支持 DLL。您可以将它们作为部署的一部分或将它们存储在 Blob 存储中,并在 VM 启动时将它们复制到本地。 为您的控制台应用正在侦听的 tcp/http/https 端口配置输入端点 处理标准输出/标准错误输出 为控制台应用需要的临时文件/缓存等配置本地存储 在OnStart()
(首选位置,在将 VM 实例放入负载平衡器之前调用)或 Run()
中启动您的控制台应用程序。
您需要考虑当有多个 VM 实例时控制台应用程序如何运行。您的控制台应用程序的两个实例可以同时运行吗?如果没有,您需要在启动控制台应用程序可执行文件之前设置互斥体检查。
Steve Marx 最近blogged about running the Mongoose Web Server in Windows Azure(Mongoose 是一个基于 C++ 的控制台应用程序)。所有代码都在 github 的 PackAndDeploy 项目中,所以你可以看看他是如何设置的。
编辑 2013 年 7 月 27 日 这个答案有点过时了。您还可以在 Windows 或 Linux 虚拟机中运行控制台应用程序。现在,您可以选择 Windows Server 2012 作为网络/工作者角色实例的操作系统。
【讨论】:
【参考方案2】:在亚马逊上没有“工人角色”和相关的超级简单部署。您可以简单地部署控制台应用程序并在您的 EC2 实例上手动或通过计划任务启动它。 如果您的应用程序必须在无人值守且没有登录用户的情况下运行,那么您必须依赖部署在 AWS EC2 上的 Windows 服务。
【讨论】:
【参考方案3】:您可以在 Windows Azure 中使用辅助角色。输出可以写入某些monitors。
【讨论】:
【参考方案4】:您不能托管控制台应用程序,您可以使用一种称为 Worker Role 的东西。
【讨论】:
实际上 Worker 角色不像 Windows 服务。它实际上是一个 Windows Server 2008 R2 或 SP2 虚拟机。 Web 角色也是如此,除了 Web 角色也会激活 IIS。【参考方案5】:您不能直接在 Azure 或任何其他云中托管控制台应用程序。正如 Ghyath 所说,在 Azure 的情况下,您将不得不使用辅助角色。
查看this 示例,该示例演示了如何将控制台应用程序转换为 Windows azure 中的辅助角色。请参阅任务 1。
【讨论】:
在亚马逊上会叫什么?? 抱歉,我不确定亚马逊的运作方式。不会有任何像概念这样的工人角色。我认为如果是亚马逊,您将不得不在 Web 服务中托管那段代码 您不仅限于 Worker Role - 您可以轻松地在 Web Role 中运行控制台应用程序,并且无需转换 - 您只需要编写适当设置环境的脚手架代码。以上是关于在 Azure 或 Amazon 上托管控制台应用程序,这可能吗?的主要内容,如果未能解决你的问题,请参考以下文章
将 iOS 应用程序连接到 Amazon 上托管的 Ejabberd 服务器
HTTP 连接在 Amazon EC2 上托管的 nodejs 应用程序中过早终止