《PaaS程序设计》一3.1 不可移植的PaaS:遵照一个模板

3.1 不可移植的PaaS:遵照一个模板

采用不可移植PaaS的平台即服务,我们就可以基于这个平台的独特规范和API编写代码,从而创建应用。
这意味着我们的代码结构需要严格依附于特定的模板或应用编程接口(API)。这些API可能主要集中在服务数据库、存储架构或者搜索架构上。而其他时候,API属于低层次并且面向编码的。有时候我们必须使用专门为那个平台所构建的特定语言。
正如我们所看到的,这种平台里有各种不同类型的“钩子”,使得它可移植性较差。最早形式的平台即服务就是建立在这种结构化很强的想法之上。这些从早期实践中诞生的雏形,逐渐形成了我们现在的平台即服务。
但问题很快就出现了:为什么我们必须基于私有API编写代码呢?难道为了这些优势以及对数据的访问就得失去灵活性?在我们检视新生代公司针对这个问题的回答之前,先看看不可移植PaaS领域里的几个主角。

3.1.1 Force.com

作为Salesforce的开发者平台,诞生于2008年的Force.com(http://force.com),允许开发者扩展Salesforce的功能从而创建应用,而Salesforce(http://www.salesforce.com)则是一个非常流行的SaaS客户关系管理(CRM)销售工具。这是我们知道的PaaS的鼻祖之一。Force.com激发了一代应用,数以千计的开发者开发了新的应用来访问、分析Salesforce丰富的数据。
Force.com的平台即服务提供Web服务的应用编程接口以及工具集、一个用于创建应用的用户接口、一个用于存储数据的数据库以及基础的网站托管功能。最近,平台添加了移动功能,使得基于Force.com的PaaS平台开发移动应用也一样便捷。
使用Force.com的缺点是:开发者不能随意使用编程语言创建通用应用。应用逻辑层建立于Apex之上,它是运行在Force.com上的一种强类型、面向对象、类似于Java的语言。优点是基于Web的接口创建新应用相对简单、便捷。我们可以选择自己想要的数据类型、创建数据结构,可以自动生成Web和移动设备界面并收集数据。
在数据输入选项的基础上,我们也能加入公式、审批程序、发送邮件,并且测试快速、简单。Force.com的PaaS平台有自己的Force.com集成开发环境,开发者们测试、部署应用都很快速、简单。
当我们在Force.com平台的约束下工作时,不需要去考虑扩展、管理应用问题,Salesforce替我们完成了。PaaS正是采用了这些基础理念,才能获得如此的流行度。
随着Force.com平台的成熟,它支持越来越多的服务:例如Database.com(http://database.com),提供定制接口和数据输入,为全世界近100 000商家提供数据库服务。

3.1.2 Google App Engine

Google App Engine(http://developers.google.com/appenqine/),也是2008年发布的,是PaaS最早版本之一。GAE的承诺是:开发者们可以挖掘Google的巨大能力、利用Google运算资源,以及使用Google的设备和运维设备的专家技术。但我们的应用必须遵守Google的标准。Google不仅建立了运维团队,还有一整套工具和系统,以及其特定的工作方式——他们这种工作方式正是为了扩展到“Google规模”。
我们探讨的是什么样的规模呢?在这种规模里,我们需要成千上万台设备来解决一个问题。当我们面对像Google这么大的规模时,工具要非常规范。为了能够处理海量数据,就必须这么做。毫不夸张地说,Google基本上处理了整个互联网的数据。GAE的中心思想之一就是如果遵照它的标准,我们的应用也可以具备这些强大的功能,而且只需要支付使用的那部分功能的费用。
GAE为什么不支持可移植的原因很明显。只有在我们按照Google的一套规则使用时,才能接入它现有的基础设施。一方面,我们得按照Google规定的方式编写代码。另一方面,如果这么做,我们就能获得在Google的规模上运行程序的好处。
很多PaaS平台都会有各种限制。当开发者面对不可移植的PaaS,例如GAE,那些限制是很严格的。开发者必须得尽可能遵从这些规范,才能充分运用GAE的特长。
使用GAE,对于访问文件系统、内存访问、能使用的内存数量以及每个进程能运行的时间都有限制。
这些局限性迫使开发者想其他办法。例如,假设我们有一个网站需要编译很多清单列表,并计算列表上的数据项。在传统主机环境里,当一个用户访问这个网站,传送结果需要相当多的时间。所有过程必须在结果返回给用户前完成。根据处理的复杂度,这一过程很容易,大概需要数秒的时间。
GAE的另一个局限是:我们的应用需要很长时间才能获得结果。如果不能很快返回,GAE就会杀掉这个进程。
如果应用在设计的时候就知道不能运行很长时间,这对用户体验来说其实是开发中的一个积极因素。这迫使开发者问自己:“如果不是简单地按我通常的做法,Google会让我怎么做呢?”因此,可以创建一个缓存,每当用户访问网站时从缓存中取出数据填充到列表中,而不用每次都编译这个列表。缓存能很快响应并提供最佳的用户体验。为了后台编译缓存,我们可能需要用另一套Google工具,以一种可扩展性更强的方式来做运算,然后将结果放到缓存数据库里。
GAE有很好的前景和很大的客户份额。它的承诺——充分运用Google的资源——使得它成为不可移植PaaS领域的典范。

3.1.3 Windows Azure

微软也在努力思考如何创建一个PaaS平台。微软的.NET Framework专家引导公司围绕.NET来思考最佳实现方式。2008年,微软发布了Windows Azure(http://www.windowsazure.com)。
公司着手创建一组库。其设计考虑是:如果开发者将这些库包含在他们的系统中, Azure就可以利用这些库来扩展系统。微软也提供可扩展的标准服务。
有了Windows Azure,我们就拥有了一些基础系统,例如消息总线和队列系统,以及一组满足应用不同需求的选项。这些为开发者提供了一些模式,以支持他们创建基于互联网互通的分布式应用。如果我们融入了微软提供的库、技术和服务,就可以利用Azure系统简单而快速地扩展应用。
最近,微软开始脱离不可移植Azure系统,去除一些将开发者捆绑到特定服务上的需求。允许扩展到不同语言和技术,从而将Azure慢慢转型到可移植领域,这就不需要为了适应平台而调整代码。因此,Azure从不可移植起步,现在正慢慢转型到可移植。事实上,微软最近发布了一个可移植版本的平台即服务。

3.1.4 不可移植PaaS总结

尽管所有这些PaaS选项开始是不可移植的,很多平台都开始添加功能使得自己越来越可移植。GAE发布了PHP支持服务,需要做的修改越来越少。Windows Azure也发布了PHP支持服务,而且开发者可以做得更多,而不用像以前那样依附于微软的接口。

时间: 2024-08-02 11:41:51

《PaaS程序设计》一3.1 不可移植的PaaS:遵照一个模板的相关文章

《PaaS程序设计》一导读

前 言 编程很艰难编程是一项很艰苦的工作.相当艰苦.当你完成代码编写并且编译成功,你很开心.可是你会发现程序存在bug,这耗费了你几小时.几天.甚至几周时间去查找.定位.解决这些问题和边界情况.当你完成所有编码并且认为不会再有更难的问题了,你还得部署代码:Vim apache.conf.vim my.cnf.vim /etc/host.iptables.当你觉得你是一个程序员时,突然你深深陷入了系统管理的泥潭中,完全不明白怎么会这样.程序员比较擅长的事是创造性的偷懒.当一个程序员重复做同一件事情

《PaaS程序设计》一第3章 PaaS类型

第3章 PaaS类型 在前面的章节里,我们简单讨论了移植的概念,即将应用移植到不同系统上.虽然可移植性在很多情况下是一种充满吸引力的特性,但是,我们依然需要权衡可移植和不可移植的PaaS.

《PaaS程序设计》一1.7 云技术的未来5年

1.7 云技术的未来5年 PaaS已经成熟起来,但仍不适用所有应用. 新一代Twitter或Facebook会建立在PaaS上么?答案是"不一定",但至少大部分公司都认识到移植到PaaS平台上的好处.2013年,PaaS还没被广泛接受,就像2006年的Ruby on Rails.一些大公司采用PaaS取得了成功(例如,Groupon使用EngineYard).一旦出现一些更大的成功故事展示了PaaS的巨大潜力,我们很快就会看到PaaS的广泛使用了.另一个影响接受度的因素是PaaS是否适

《PaaS程序设计》一1.8 兑现承诺

1.8 兑现承诺 在这章开篇,我们看到PaaS改变了Jason Gendron的生活.PaaS让他专注于自己的天赋.一心编码和管理公司,为他的创新节约成本.PaaS为他节省出时间,给他提供强大的服务器,帮助他实现TwitClub.通过移动IaaS提供商的需求.管理每天的运维事项.处理故障和宕机事件, PaaS改变了数以百万开发人员的生活.无论你是在政府机关需要处理数百个客户端,在公司有几千个用户或者在自己创业,PaaS都提供工具帮你挖掘你的潜能.它减少了开发者自己创新的代价,减少了风险投资者们投

h-怎样对一个程序实现的功能移植到已有的一个大MFC项目中?

问题描述 怎样对一个程序实现的功能移植到已有的一个大MFC项目中? 1// HttpPost.cpp written by l_zhaohui@163.com 2// 2007/11/30 3#include "stdafx.h" 4#include <windows.h> 5#include <stdio.h> 6#include <stdlib.h> 7 8#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS 9#

Java PaaS中多租户的规范和一些PaaS厂商具体的实现

本文已就 Java http://www.aliyun.com/zixun/aggregation/16038.html">PaaS 规范中涉及到多租户部分做出介绍,介绍一下 Waratek JVM 在 JVM 虚拟化上的概况,并简述市面几种常见 PaaS 中的多租户实现模型. 多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是: 在一台服务器上运行单个应用实例,它为多个租户提供服务. 在这种架构上,应用程序被设计成能将自己的数据.配置进行虚拟的分区,以便每个租户都

《PaaS程序设计》一3.2 可移植性:不再繁琐

3.2 可移植性:不再繁琐 可移植PaaS是这样一种平台,在其上运行的代码编写完成之后,就不需要进行较大修改.开发者在共享主机或者专用主机上开发的代码迁移到可移植PaaS上不再那么困难.想要运行应用不再需要依赖服务转接器. 平台仍然存在局限性,这是需要应对的挑战,但这些局限相对代码来说更偏功能性. 可移植性扩大了平台即服务支持的语言数量和类型,也扩大了语言自身的灵活性.如果我们想要将应用移植到不同的可移植PaaS平台上,需要调整应用的某些内容,但不需要彻底改写系统. 相对而言,看看早期的Goog

《PaaS程序设计》一2.3 PaaS:综合两种方式的最佳方案

2.3 PaaS:综合两种方式的最佳方案 对于开发者来说,通常会以共享主机的方式起步.很快,就会经历需要更强的功能和控制的阶段,于是,就会转向独立主机托管.在完全拥有了控制权之后,你可能会感到很惬意,也会很兴奋,因为你可以对服务器进行调整和优化,让它们运行得更快,网站可以更快地的被加载,并且可以处理更多的用户请求. 然后,随着时间的流逝,兴奋感很快就会烟消云散,因为日复一日维护服务器所增加的负担,会让人筋疲力尽.独立服务器可以提供更强的功能和控制,但是很容易就会遭受攻击,而作为开发者,你必须自己

《PaaS程序设计》一1.3 云:发展历程简介

1.3 云:发展历程简介 什么是云?这个外来术语被过度使用. Dropbox就是所谓的云么?或者是iPhone?还是Gmail? 对某些人来说,这些林林总总的例子也许就是所谓的云,但对开发者而言不是. 对开发者来说,云是相互关联的一组基础技术,借助这些技术可以采用新的方法来构建和运行新的技术.如果用户不能在基础技术上开发新技术,那就不是云. 很多应用和SaaS都是基于基础云技术构建的.Dropbox和Gmail就是建立在基础云技术上的SaaS应用.但它们本身不是云技术. 20世纪90年代数据中心