书城计算机网络云计算和现代远程教育
19092800000016

第16章 云计算中的访问云(1)

怎样与云交互依赖于许多因素,其中比较重要的是提供商。有许多开发商允许你构建自己的应用程序,并且可以使用多个浏览器选项访问那些应程序。本章将更详细地探讨一些可以用于连接到云的工具,以便认识到哪些工具将最适合于你的组织和你的特定需求。

5.1云平台

云平台是指怎样把云计算环境提供给你。我们将更详细地探讨如何制造云并把它展示给你。以便我们有一个云平台的深刻印象和实际操作能力。

5.1.1Web应用程序框架

Web应用程序框架用于支持动态Web站点、Web应用程序和Web服务的开发。框架的意义在于减少Web开发中的公共活动涉及的开销。例如,框架提供了一些已经编写好的库,使得在开发Web站点时开发人员不必每次都从头开始。在Web生命的初期,其主要是在Web服务器上发布的手工编码的超文本标记语言(Hypertext Markup Language,HTML)。如果需要更改发布的页面,就不得不由页面的作者来完成。随着Web的发展壮大,公共网关接口(Common Gateway Interface,CGI)的添加使得它更具动态性,并允许外部应用程序与Web服务器对接。异步JavaScript和XML(Asynchronous JavaScript and XML,AJAX)是一组用于创建交互式Web应用程序的Web开发技术。通过使用AJAX,Web应用程序可以异步地从服务器检索数据。

1.AJAX是一个表示广泛Web技术的术语,这些技术可用于帮助Web应用程序与服务器通信,但是不会干扰页面的当前状态。AJAX指的是下面这些技术:(1)用于表示的可扩展的超文本标记语言(Extensible Hypertext Markup Language,XHTML)和层叠样式表(Cascading Style Sheet,CSS)。

(2)用于数据的动态显示以及与之交互的文档对象模型(Document Object Model,DOM)。

(3)分别用于交换和操纵数据的XML和XSLT(Extensible Style Sheet Language Transformation,可扩展的样式表语言转换)。

(4)用于异步通信的XML Http Request对象。

(5)用于把这些技术集合到一起的JavaScript。

AJAX在不断演化。例如,虽然JavaScript在AJAX的首字母缩写词中占有一席之地,但它不是唯一可用于开发AJAX应用程序的客户端语言,也可以使用像VBScript这样的语言。此外,XML对于数据交换并不是必需的。JavaScript对象表示法(JavaScript Object Notation,JSON)是一种广泛使用的替代选择,也可以使用HTML和纯文本。

AJAX的优点:AJAX可以把一些事情做得很好,但是在做另外一些事情时却很费力。其优点如下:

(1)通常Web站点上的多个页面包含相同的信息,如果手工编码这些页面将不得不把相同的内容写入每个页面。AJAX允许Web应用程序简单地检索新信息,并且调整内容的表示方式。这是非常高效的,不仅减少了消耗的带宽数量还减少了加载时间。

(2)使用异步请求允许客户的Web浏览器更具交互性,并且快速响应用户输入,用户甚至可能感觉到应用程序运行得更快。

(3)减少了通往服务器的连接,因为脚本和样式表只需下载一次即可。

AJAX的缺点如下:

(1)动态创建的Web页面不会出现在浏览器的历史引擎中,因此单击“后退”按钮不会重新创建上一次查看的页面。

(2)很难对动态创建的Web页面创建书签。

(3)如果浏览器不支持AJAX或者禁用了JavaScript,就不能使用AJAX功能。

(4)AJAX背后没有标准体系,因此没有广泛采用的最佳实践来测试AJAX应用程序。

2.Python Django。Django是用Python编写的一种开源Web应用程序框架。Django被开发用于使数据库驱动的Web站点的创建变得轻松,以及使用组件的可重用性。Django利用了不做重复的工作(Don't Repeat Yourself,DRY)原则。它还使用了动态生成的管理性创建、读取、更新和删除(Create,Read,Update,and Delete,CRUD)界面。

核心框架中包括:

(1)一个轻量级的、独立的Web服务器,用于开发和测试。

(2)一种缓存框架,它可以使用几种缓存方法中的任意一种。

(3)一种内部调度程序系统,允许应用程序的组件使用预定义的信号通信。

(4)一种国际化系统,把Django的组件翻译成多种语言。

(5)一种用于扩展模板引擎能力的模式。

5.1.2Web托管服务

我们在使用术语“云提供商”时,就需要一种允许使用者存储数据和应用程序的Web托管服务。一些Web托管服务包括Amazon Elastic Compute Cloud和Mosso。

1.Amazon Elastic Compute Cloud。Amazon Elastic Compute Cloud(http://aws.amazon.com/ec2)是一种在云中提供可调整大小的计算容量的Web服务。Amazon EC2的Web服务接口允许利用最小的代价获得和配置容量。它提供了对计算资源的完全控制,并且可以运行在Amazon的计算环境上。Amazon EC2把获得和引导新服务器实例所需的时间减少到只有几分钟,在客户的计算需求改变时允许你快速地上扩或下缩容量。Amazon EC2允许使用者只为实际使用的容量付费,从而改善了计算的经济性。

EC2使用Xen虚拟化。每个虚拟机(称为实例)都是一个虚拟专用服务器,并且可以是以下三种型号之一:小型、大型或特大型。可以基于EC2计算单元(Compute Unit)调整实例的大小,EC2计算单元是物理硬件的等价的CPU容量。一个EC2计算单元等价于1.0~1.2 GHz的2007 Opteron或2007 Xeon处理器。

2.Mosso。Mosso是The Hosting Cloud和CloudFS的发源地,提供了企业级托管和存储服务。Mosso提供了一种容易管理的接口,使得开发人员、设计者和IT经理可以快速、容易地部署可靠的Web应用程序以及高性能的基于云的存储服务。Mosso的产品中有3种组件:(1)云站点。它被宣传为“把站点置于云上的最快的方式”,跨数百台服务器运行Windows或Linux应用程序。(2)云文件。为媒体(包括备份、视频文件、用户内容)提供无限的在线存储空间,它是通过Limelight Networks的Content Delivery Network(内容分发网络)分配的。(3)云服务器。能够立即部署从一台到数百台云服务器,以及创建高级的高可用性架构。

5.1.3专有方法

除了广泛使用的标准(比如AJAX和Django)之外,各个公司还提供了他们自己的专有方法来连接云。Microsoft是有代表性的公司,他们设计了自己的基础设施来连接云。

1.Azure。Azure Services Platform是Microsoft的跨越云到企业数据中心的云解决方案。此外,它还跨PC、Web和电话分发内容。该平台结合了基于云的开发人员能力以及存储、计算和网络基础设施服务,它们全都宿主在Microsoft的全球数据中心网络内的运营服务器上。这给开发人员提供了在云中或者在现场部署应用程序的能力,并使之能够获得跨越广泛的业务和消费者场景的体验。

Azure Services Platform使开发人员能够在创建应用程序时,利用他们现有的技能、工具和技术,如Microsof NET Framework和Visual Studio。开发人员也可以选择广泛的商业或开源开发工具和技术,以及使用各种公共的Internet标准访问Azure Services Platform,包括表象化状态转变(Representational State Transfer,HTTREST)和Atom发布协议(Atom Publishing Protocol,AtomPub)。

Azure Services Platform的关键组件包括:(1)Windows Azure,用于服务托管和管理、低级可伸缩的存储器、计算和网络。(2)Microsoft SQL Services,用于广泛的数据库服务和报告。(3)MicrosofNET Services,它是熟悉的.NET Framework概念(比如工作流和访问控制)的基于服务的实现。(4)Live Services,便于用户跨越他们的PC、电话、PC应用程序和Web站点以一致的方式存储、共享和同步文档、图片、文件和信息。(5)Microsoft SharePoint Services和Microsoft Dynamics CRM Services,用于云中的业务内容、协作和快速解决方案开发。作为云产品的关键部分,Microsoft构建了数据中心交付在线服务。

2.Force.com(一种来自sales的PaaS)是用于创建和部署业务应用程序的另一种方式。通过用完整的、可伸缩的服务代替软件平台的复杂性,给开发人员提供了把思想转变成业务影响力的捷径。

Force.com特性。ForceCom PaaS提供了构建任何类型业务应用程序所需的构件,并且会自动将其作为服务部署给小型团队或整个企业。Force.com平台使顾客能够在同一个Salesforce.com实例内运行多个应用程序,允许公司的所有Salesforce.com应用程序共享公共的安全性模型、数据模型和用户界面。

多租户的平台包含:用于创建业务应用程序的完整特性集,如需应变的操作系统;按需创建任何数据库的能力;用于管理用户之间的协作的工作流引擎;用于构建复杂逻辑的Apex Code程序设计语言;用于以编程方式访问、混搭以及与其他应用程序和数据集成的Force.com Web服务。API现在还包括Visualforce,它提供了一个用于构建任何用户界面的框架。

Visualforce。作为平台的一部分,Visualforce给顾客提供了在任何屏幕上为任何体验设计应用程序用户界面的能力。通过使用Apex Code提供的逻辑和工作流信息,Visualforce提供了满足应用程序需求的灵活性,这些应用程序考虑到了各类设备上的许多不同类型的用户。Visualforce把HTML、AJAX和Flex用于业务应用程序。Visualforce允许创建和交付任何用户体验,提供对应用程序的设计和行为的控制。

Visualforce提供构建于标准HTML和Web表示技术之上的基于页面的模型,并且补充了一个组件库和一个控制器模型,前者用于实现公共的用户界面元素,后者用于在这些元素之间创建新的交互。Visualforce包括以下特性和能力:

(1)页面。它支持应用程序的用户界面的设计定义。允许开发人员使用包括HTML、AJAX和Flex在内的标准Web技术创建新页面。页面允许开发人员利用标准Web技术创建任何用户体验。

(2)组件。它提供了创建自动匹配Salesforce应用程序外观和感觉的新应用程序的能力,或者轻松地自定义和扩展Salesforce用户界面以满足特定的顾客和用户需求。顾客可以通过组合现有的用户界面元素快速创建用户体验。

(3)逻辑控制器。它使顾客能够构建任何用户界面行为。顾客能够使用Visualforce快速创建利用现有应用程序功能的新的外观和感觉。标准控制器给予顾客继承和重用任何标准的Salesforce UI行为(如新建、编辑和保存)的能力。

5.2Web应用程序

如果你要使用云上的应用程序,可以有许多种选择。你的决策过程很大程度上将取决于你的提供商以及他们提供什么。本节我们将探讨你在现有的云应用程序中所具有的选择。