类似 Azure Functions 的解决方案,能够运行 Win32 桌面应用程序

标签 azure azure-functions azure-cloud-services azure-batch

我正在尝试将一些计算转移到 Azure 云服务。我尝试实现的工作流程的步骤之一包括运行生成文件的 Win32 桌面应用程序。显然,我们无法进行云计算的用户交互,因此应用程序是使用命令行参数启动的。该进程启动,生成文件,然后存在。目前我无法重构代码并将此功能移至命令行无窗口实用程序。

首先,我选择 Azure Functions,因为它们适用于事件驱动的简短计算,而这正是我所需要的。而且它们很便宜。但我遇到了一个问题,Azure Functions 中的进程正在 sandbox 内执行。阻止 User32/GDI32 系统调用,从而阻止我启动桌面应用程序。

我提出的另一个解决方案是安装一个虚拟机驱动器,安装了所有需要的 Visual C++ 可再发行组件,然后将 Azure Batch 与基于预配置驱动器的节点一起使用。但该解决方案还有另一个缺点,因为安装新节点需要几分钟的时间。当然,我可以拥有一些始终处于事件状态的节点,但无论如何,进一步扩展很慢,并且拥有事件节点并不便宜。另外,我感觉 Azure Batch 有点矫枉过正,因为在我的情况下不需要 HPC。 Azure Functions 的计算能力对我来说已经足够了。

有某种折衷的解决方案吗?这样我就有了一个快速扩展、快速响应的解决方案,但不需要基于Azure虚拟机建立Azure Batch?

最佳答案

许多 GDI32 调用现在可用,但以容器化形式提供。

因此,您可以使用桌面应用程序在 Docker 容器内部署函数。

引用以下article以获得更多解释。

引用以下documentation关于如何部署容器化功能。

关于类似 Azure Functions 的解决方案,能够运行 Win32 桌面应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72388377/

相关文章:

c# - 对使用 Azure 云服务的代码进行单元测试

F# 方法指针 "not accessible from this code location"

c# - Microsoft Azure 上的 C# DateTime 时间分隔符错误

python - python SDK如何将类类型转换为字符串

python - 如何使用 Http 触发器和队列消息输出修复 Azure 函数 (Python) 测试错误

c# - 如何从 Function App 设置 session ID 或创建自定义字段到 Application Insights

azure - 如何从云服务和可用性集中的一个 Azure VM 安全地访问另一个 VM

wcf - 更新 Azure 云服务的单个实例

azure - 不允许 IP 地址为 'XXX.XXX.XXX.XX' 的 Windows Azure 客户端访问服务器

c# - 从 Azure 函数调用 Asp.Net Web API 端点