【问题标题】:Does Google App Engine support C++? [closed]Google App Engine 是否支持 C++? [关闭]
【发布时间】:2015-08-08 10:26:13
【问题描述】:

App Engine 主页声明“为 Python 环境编写的应用程序代码必须专门用 Python 编写。不支持用 C 语言编写的扩展。”

https://developers.google.com/appengine/docs/whatisgoogleappengine

我们需要将 C/C++ 应用程序移植到 SaaS 服务。可以用 Google App Engine 完成吗?

【问题讨论】:

  • 奇怪的是,如果它“过于本地化”,它会给我一个青铜徽章!
  • 2 年过去了,我对这个判决感到困惑

标签: google-app-engine


【解决方案1】:

目前有四种可用于 Google App Engine 的运行时:Go、Java、Python 和 PHP。

这些不仅是唯一可用的运行时,而且语言的功能也受到限制。您无法使用许多传统上可用的子系统来帮助您扩展 Web 应用程序。您链接的页面上的主要示例提到不允许打开套接字或写入文件系统。另一个常见的限制是线程化或执行耗时超过一分钟的计算。

沙盒

应用程序在安全环境中运行,该环境提供对底层操作系统的有限访问。这些限制允许 App Engine 跨多个服务器分发应用程序的 Web 请求,并启动和停止服务器以满足流量需求。沙盒将您的应用程序隔离在其自身安全、可靠的环境中,该环境独立于硬件、操作系统和 Web 服务器的物理位置。

安全沙盒环境的限制示例包括:

  • 应用程序只能通过提供的 URL 获取和电子邮件服务访问 Internet 上的其他计算机。其他计算机只能通过在标准端口上发出 HTTP(或 HTTPS)请求来连接到应用程序。
  • 应用程序无法在任何运行时环境中写入文件系统。应用程序可以读取文件,但只能读取使用应用程序代码上传的文件。应用程序必须使用 App Engine 数据存储区、内存缓存或其他服务来处理请求之间持续存在的所有数据。 Python 2.7 环境允许读取、写入和修改字节码。
  • 应用程序代码仅在响应 Web 请求、排队任务或计划任务时运行,并且无论如何必须在 60 秒内返回响应数据。发送响应后,请求处理程序无法生成子进程或执行代码。

Google App Engine 的重点是编写基于它们提供的可扩展服务的单线程应用程序。与传统的 C/C++ 应用程序开发相比,这是一个相当大的范式转变,因为您需要使用 Google 的机制来存储数据、访问 Internet 上的其他资源、发送和接收电子邮件、缓存。这样做的原因是为了消除您的应用程序中的瓶颈,以便您的应用程序的大量实例可以根据请求需求启动和拆除。

将传统的 C/C++ 应用程序移植到 GAE(和许多其他 SaaS)很可能需要进行大量重构,以至于需要进行重写才能利用在 SaaS 平台上运行所获得的收益。

【讨论】:

    猜你喜欢
    • 2013-11-18
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2014-08-05
    • 2020-02-21
    • 1970-01-01
    相关资源
    最近更新 更多