理论上,如果所有云提供商都支持相同的语言,这应该是可能的。据我所知GAE支持Python和Java。 Amazon EC2 可以使用实际服务器本身上的几乎任何内容,而 Azure 是一个完全的 .net 平台。因此,实际的处理方面,即编写队列 Web 服务和处理单元可能很困难。
另一个障碍是没有通用的统一API来调用云计算服务。无论如何,GAE/Azure/EC2 的实现都是不同的,因此它们的 API 公开的方法都不同,为此,您的一线代码需要知道它正在调用哪种类型的 API 来控制云计算资源。
然而,Web 服务本质上是松散耦合的。意思是,如果您努力抽象资源控制,以便您可以在任何您想要的云上创建实例,如果该新实例是处理 Web 服务输入/计算的另一个单元,并且公开的 Web 服务与 GAE 上的相同以 EC2 为例,没有什么可以阻止两者的交谈。同样,如果您在实例之间使用某种形式的 Web 服务/协议,您仍然应该能够跨计算平台通过互联网与其他实例进行通信。也就是说,这样做会将内部应用程序的数据暴露给全世界,从而带来安全风险。
我同意否认:Java 是一个非常好的方法。有大量的 EJB 容器,甚至还有更多的 Web 服务服务器(例如 Tomcat)。我猜 EC2 支持它(嗯,它肯定支持,但他们是否运行 Tomcat/Geromino 而不是 IBM 版本以及收费如何我不知道)。 GAE 声音基于这篇博文的限制 http://www.pardontheinformation.com/2009/06/google-app-engine-for-java-3-tips-for.html- 无论谷歌在后端做什么,他们都设计了一些非常奇怪的东西。