代码之家  ›  专栏  ›  技术社区  ›  RobG

谷歌应用引擎支持C++吗?[已关闭]

  •  14
  • RobG  · 技术社区  · 13 年前

    主应用程序引擎页面指出:“为Python环境编写的应用程序代码必须专门用Python编写。不支持用C语言编写的扩展。”

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

    我们需要将C/C++应用程序移植到SaaS服务。这可以用谷歌应用引擎完成吗?

    1 回复  |  直到 13 年前
        1
  •  19
  •   Community Mohan Dere    6 年前

    谷歌应用引擎目前有四种运行时可用:Go、Java、Python&PHP中。

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

    沙盒

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

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

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

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

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