IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management | Open source  >

Zend Core for IBM 技术路线图

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Stewart Nickolas (nickolas@us.ibm.com), Emerging Technologies, IBM 
John Steinbacher (jjstein@us.ibm.com), 项目经理, Emerging Technologies, IBM 

2005 年 3 月 01 日

Zend Core for IBM® 提供了无缝的开箱即用 PHP 开发和生产环境,包括 Zend 的支持以及和 IBM Cloudscape™ 与 DB2 ® Universal Database® (DB2 UDB) 数据库的集成。面对应用日增的面向服务架构(SOA),该产品提供了对 XML 和 Web 服务的原生支持。它为数据库驱动的应用程序提供了快速开发和部署的基础,为易用的轻型 Cloudscape 数据库和高性能的、能支持关键应用的数据库 DB2 提供了一致 API,从而建立了从前者到后者的迁移路径。

简介

2005 年 2 月 25 日,IBM 和 Zend Technologies 宣布建立战略伙伴关系,在 PHP 环境的开发和支持方面进行合作。按照协议,Zend 开发了“Zend Core for IBM”。除了初步宣布的合作方式之外,IBM 和 Zend 还将在 PHP 技术上进一步加强合作。合作有两个目标:

  • 第一个目标是为企业客户提供“do-it-yourself”基础设施和 PHP 开发中固有的简单性。
  • 第二个目标是以非植入的方式为 PHP 增加企业类支持,首先要避免对不需要这种支持的用户增加复杂性,避免影响 PHP 取得成功的长处。

随着 PHP 5 的发布,Zend 向服务企业客户的需求迈出了重要的一步。本文简要描述了 PHP 5 一些重要的新特性,介绍了我们正在研究的一些技术。请关注这个领域,无论路线图还是本文都将很快变化。





回页首


Web 的演化

Web 已经演化成为一种构建软件应用程序和业务的健壮平台,而且还在迅速地发展之中。面对这种快速的变化,我们需要关注两个关键的趋势:利用 do-it-yourself 基础设施和应用程序构建,保持相对简单的项目的低成本、快速和简单;将面向服务架构的好处引入脚本语言。

Do-it-yourself IT

图 1 所示的趋势越来越明朗,即“do-it-yourself”(DIY) Web 基础设施和应用程序的增长。成熟而健壮的开放源代码 Web 基础设施的出现、日益强大(而相对易于使用)的脚本语言促进了 DIY-IT 的成长。这些 DIY 应用程序往往:

  • 出现在中小型组织和企业部门中。
  • 为特定的任务而设计,基于特定的场合和活动,通常编程相对较少,主要用于访问和聚合有价值的内容。
  • 主导思想是“够好就行”,通常由非程序员编写,很少事先强调所谓的“X-abilities”(可靠性、可伸缩性、可用性、可维护性……)。
  • 强调时效性,使用更加紧凑、迭代性的开发周期,用分钟、天或周而不是年、月来度量。
  • 随着小组需求的变化不断地快速演化。


图 1. 动态内容的演化
动态内容的演化

应用程序使用的内容主要有三类,如 图 2 所示:

  • 静态内容 —— 数据库、平面文件、XML 等。
  • 活动内容 —— 网页、表单、脚本、wiki、blog 等。
  • 快速变化的内容 —— RSS 提要、Web 服务、复制等。


图 2. Do-it-yourself IT
Do-it-yourself IT

blog 和 wiki 创造了彼此交互的新方式,使 Web 变成了真正能够读/写的 Web,受到了热烈欢迎,从而进一步推动了 Web 应用程序的演化。这些技术仍然在不断发展,形成了 DIY-IT 的下一股潮流,将活动内容(如 wiki)和不断变化的内容(如 Web 服务)这两者提供的面向用户的信息架构的灵活性结合起来,为建立新的以内容为中心的应用程序提供了易于使用的集成平台。

创新推动着新平台的建立,为编辑和发布内容提供简单而功能丰富的环境。发布和处理内容的新能力源自专业网站社区,面向更加广泛的技术素养不高的受众。内容用简单的“所见即所得”编辑器处理,任何人都能使用。大部分内容还提供了直接与内容提供者交互的机制,如讨论选项卡、历史选项卡、版本选项卡和邮件列表选项卡。





回页首


面向服务的架构

Web 发展的另一个趋势也促进了 DIY-IT,即面向服务架构(Service-Oriented Architectures,SOA)的采用。应用程序设计使用 SOA 改变了代码和内容的比例,出现了大量通过 SOA 提供的内容,并且不断增长。现在很多企业的 IT 基础设施都由很多复杂的异构平台、技术和应用程序构成。随之而来的是过于复杂而脆弱的编程模型。应用程序员面临着太多的技术选择,有太多的概念和接口要学习,类似的事情有太多不同的方法去做。我们迫切需要极大地简化编程模型。IBM 认为对于实现跨越不同业务、业务伙伴和运行时的端到端集成,SOA 是保持互操作性和灵活性的关键。

SOA 不过是一种构建应用程序的架构风格,促进了组件之间的松散耦合从而更便于组件的重用。SOA 应用程序由服务构建而来。服务是一种自包含的软件模块,执行特定的任务,具有独立于平台和编程语言的公开契约/接口。因此,服务的用户不必担心服务实现的技术细节。服务操作通常是使用消息(包括请求消息和应答消息)而不是 API 或者文件格式进行调用的。中立的接口定义不紧密捆绑到特定实现上,这种特性称为服务之间的松散耦合。相反,紧密耦合意味着应用程序不同组件之间的接口在功能和形式上紧密交缠在一起,一旦应用程序或者其中的一部分需要某种修改就会变得非常脆弱。松散耦合系统有很多好处,包括:

  • 使应用程序适应发展的技术。
  • 通过将遗留应用程序包装成服务,利用现有的投资。
  • 把应用程序与企业内部或外部的其他系统进行集成。
  • 通过装配已有的服务快捷方便地建立新的业务过程。





回页首


不断发展的开放源代码平台

开放源代码平台

推动 DIY-IT 的背后动力之一是 LAMP 开放源代码软件的成功。LAMP 软件包括以下组件

  • Linux —— 提供了核心操作系统。
  • Apache —— 提供了 Web 服务器。
  • MySQL —— 卓越的数据库服务器。
  • PHP、Perl 和 Python —— 一组服务器端脚本语言。
如果将其结合起来使用,就为构建健壮的、可伸缩的、数据库驱动的动态 Web 应用程序提供了一套低成本的解决方案。这些技术还有很多变体,包括对其他操作系统(如 Windows 和 Mac OS X)和数据库(如 PostgreSQL 和 DB2)的支持。

LAMP 软件组的技术社区在这种解决方案的普及中发挥了很大的作用。LAMP 社区是开放源代码社区中最活跃的一个。社区提供了空前的支持,开发了大量单击一次就能自动安装和自动配置的解决方案和库,并保持产品的简单易用,而且成本很低。技术强大的组件再加上活跃的社区,使 LAMP 成为事实上的 Web 应用程序平台。

LAMP 软件组一个重要的组成部分是 PHP ,世界上最受欢迎的服务器端脚本语言之一。有人估计,超过 40% 的 Web 开发人员使用它,在大约 70% 的基于 UNIX 的 Apache Web 服务器上可以找到它。过去四年中这种语言有明显的增长,目前超过 1500 万个网站使用它。重要的业务也开始采用 PHP,比如 Lufthansa 的电子票务系统、 Electronic Arts 的 Sim City Online、波音公司的载荷测量系统、Orange 的 WAP 门户。

PHP 从一开始就是为 Web 开发设计的。方便的表单变量访问、内置的 HTML 模板和集成的数据库访问,使 PHP 成为 Web 开发人员的快速编程语言。此外,通过代码示例(请参阅 http://hotscripts.com)、PHP 扩展(请参阅 http://pear.php.nethttp://pecl.php.net)和文档,活跃的 PHP 社区为它增加了数量惊人的新功能。2004 年 7 月发布的 PHP 5 进一步增强了对 Web 服务、XML 和面向对象的支持。





回页首


Web 服务支持

PHP 社区很早就意识到了共享和重用代码的价值。Hotscripts.com 上成千上万可供重用的脚本和程序就是很好的证明。Web 服务将代码重用和集成又推进了一步,为在 Web 上创建和使用基于开放标准的可重用服务制定了标准。Web 服务就是满足以下条件的 SOA:

  • 接口必须基于 Internet 协议,如 HTTP、FTP 和 SMTP。
  • 消息必须采用 XML 格式,但允许有二进制的附件。

SOAP Web 服务又增加了以下约束:

  • 除了二进制附件之外,必须用 SOAP(一种简单的基于 XML 的协议规范,定义了在应用程序间传递信息的统一方式)传递。
  • 服务的描述必须采用 WSDL(描述 Web 服务能够做什么、在什么地方、如何调用的 XML 文档)。

在 PHP 4 中,对 Web 服务的支持依靠 PEAR::SOAP 这类用 PHP 编写的库来提供。PHP 5 提供了对高性能、可靠的基于 SOAP 的 Web 服务栈的原生支持,这个服务栈是用 C 编写、作为原生扩展实现的。它支持 SOAP 1.1、SOAP 1.2 和 WSDL 1.1 规范的一个子集,可用于创建基于 Document Literal、RPC Literal 和 RPC Encoded 的 Web 服务。 Web 服务栈可用于传递复杂的数据结构,但是传递 PHP 不支持的数据类型时必须小心。

PHP 5 支持使用 WSDL 文件创建 Web 服务,也可以不使用 WSDL 文件而通过 SOAP API 手工创建。使用 WSDL 文件时,PHP 把 Web 服务调用中传递的类型映射为 WSDL 文件中定义的类型来创建 SOAP 消息。Web 服务栈能够处理 PHP 5 中新的面向对象功能。这意味着复杂的数据结构可以表示成类,Web 服务栈能够自动将类属性映射到 WSDL 文件中定义的数据类型。

PHP 5 可能会对 Web 服务栈做一些改进,目前已经准备支持 HTTP 摘要验证和在 SOAP 信封中发送 HTTP Cookies。其他可能的改进包括:

  • 发送 SOAP 附件。
  • 支持 Web Service Security。
  • 对 SOAP 头的处理提供更好的支持。
  • WSDL 的创建。PHP 5 中必须使用 IBM's Rational® Application Developer 这类工具创建 WSDL。
  • Web 服务浏览器。

WS-I 基本概要(WS-I profiles)为 Web 服务规范提供了实现指南,以便支持不同 Web 服务厂商间的互操作性。WS-I 已经完成了 Basic Profile Attachments Profile 和 Simple SOAP binding Profile。Basic Security Profile 正在筹备之中。IBM 和 Zend 认为支持 WS-I 基本概要很重要,以后将努力实现与 WS-I 兼容。





回页首


XML 支持

XML 是用于描述结构数据的一种标记语言,已经成为存储数据、在应用程序和公司之间交换数据的常用格式。因此,目前建立的很多应用程序都需要能够创建或者使用 XML 数据。在 PHP 4 中,处理稍微复杂的 XML 文档都比较痛苦,需要精通笨拙的完全面向对象的 XML 解析 API,如文档对象模型(DOM)。幸运的是,PHP 5 增加了 SimpleXML,它允许开发人员使用更自然的方式处理 XML 文档。SimpleXML 建立在 PHP 的动态特性基础上,并且提供一个 XML 文档作为带有属性和文本内容的匿名 PHP 对象的数据结构。它完全胜任常见的属性和内容处理任务,更复杂的 XML 操作则留给其他扩展来完成。此外,在PHP 5 中,所有 XML 扩展都经过重新改写,以提供稳定、健壮和符合标准的 XML 实现,比如为了符合 DOM 规范,DOM 方法都经过重新命名。5.1 版将提供类 Java 的 XMLReader 类。





回页首


访问内容

Web 应用程序将继续改变代码和内容的比例,将不同的内容类型统一到一致的数据访问模型,简化不同来源数据的操作。将使用新的抽象,如服务数据对象(Service Data Object),隐藏与关系数据库这类数据源交互的复杂性。统一层将使用现有的数据源能力进行创建。静态数据仍然是以数据为中心的 Web 应用程序的核心。

PHP 4 包含十多个不同的专用数据库扩展,针对特定的数据库功能和性能进行优化。每个扩展都声明了不同的功能性名称空间,比如 mysql_connect() 和 ibase_connect() 分别返回 MySQL 和 Firebird/Interbase 的数据库连接;每个扩展都实现了自己的 API,与其他数据库扩展之间有一些微小却容易混淆的差别。专用数据库扩展的泛滥虽然对于只需要访问一种数据库的开发人员很好,但是有可能“锁定”应用程序,一旦需要支持其他数据库而对应用程序进行重构就要大量的投资。

统一 ODBC

从 PHP 3 开始出现的核心扩展 —— Unified ODBC 扩展 —— 是 PHP 快速、轻型数据库访问抽象的理论先驱。Unified ODBC 扩展为获得最高速度而用 C 语言编写而成,为保证可移植性而遵循 ODBC 规范的一个子集,可以针对 ODBC 驱动程序管理器或者实现 ODBC 兼容接口的本机数据库函数库进行编译。针对 ODBC 驱动程序管理器进行编译,使 Unified ODBC 能够访问任何提供 ODBC 驱动程序的数据库,由于在上面增加了数据库通信层而略微增加了性能成本。直接针对本机数据库函数库(如 DB2 Call Level Interface (CLI))编译 Unified ODBC,避免了 ODBC 驱动程序管理器层的开销,代价是限制了可访问数据库的类型。

多年以来,PHP 开发人员一直专门依靠 Unified ODBC 扩展访问 DB2 数据库。2001 年,IBM 认识到了 PHP 的这种要求,正式支持 PHP 应用程序通过 Unified ODBC 扩展访问用于 Linux、UNIX 和 Windows 的 DB2 Universal Database Version 7.2。 该扩展提供了坚实的数据库访问特性的子集,非常适合 PHP 4, 仍然可在 PHP 5 中使用。但是支持多种不同数据库,再加上对 ODBC 规范解释的不一致,这种负担意味着 Unified ODBC 不能让 PHP 开发人员充分利用 DB2 或者 Cloudscape 数据库的功能。Unified ODBC 的局限性体现在,难以处理大型对象(BLOB 和 CLOB 数据类型),从存储过程返回 OUT 或 INOUT 参数的不稳定性。所幸的是,很多应用程序不需要这些高级功能。

PHP 数据对象(PDO)

PHP 5 为 PHP 应用程序提供了真正的面向对象支持,同时 PHP 社区也认识到专用数据库扩展的增长损害了数据库驱动应用程序的可移植性,因为它要求任何希望具有可移植性的应用程序都必须在数据库专用驱动程序之上实现自己的真正的 可移植性层。此外,PHP DB 扩展的质量也随驱动程序的不同而不同。有些驱动程序非常稳定并得到了很好的维护,另一些则显得很糟糕。PDO 可以保证所有的 DB 扩展都有很高的质量,因为大部分代码在基础 PDO 类中共享,bug 的修复很快能传播到所有 DB 扩展中。认识到这个问题,再加上用面向对象解决方案来表达的想法,PHP 定义了一种通用的面向对象的数据访问接口称为 PDO,并开发了实现 PDO 接口的数据库专用驱动程序。PDO 的设计思想如下:

  • PDO 定义了一种轻型的、一致的、面向对象的数据访问接口:PDO 对象代表数据库连接,PDOStatement 对象代表 SQL 语句和数据库返回的所有结果,每个对象的方法和属性满足数据库中最常见的数据访问需求。
  • 实现 PDO 接口的每个数据库驱动程序可以选择公开附加的数据库专用特性作为标准扩展功能。
  • 虽然 PDO 实现了基本的兼容特性,比如保证每个数据库都默认打开 AUTOCOMMIT、支持每个数据库驱动程序的按名称绑定和按位置绑定,但是如果给定的数据库不支持序列和存储过程这类高级数据库功能,PDO 也不可能模仿出来。
2005 年 2 月 PDO beta 版发布之后,现有的 PDO 驱动程序包括 IBM Cloudscape 和 DB2 Universal Database(通过 PDO_ODBC)、Firebird/Interbase、Microsoft® SQL Server、MySQL、ODBC、Oracle、PostgreSQL 和 SQLite。针对 DB2 库编译 PDO_ODBC 驱动程序,为 Cloudscape 和 DB2 UDB 用户提供了完善的存储过程和大型对象支持,带来了优良的即用性能。

虽然目前关于 PDO 的讨论集中在发布 PHP 5.1 之前稳定数据访问对象和方法的核心集合,第二个目标是增加通过 PDO 驱动程序能够访问的数据库数量(比如通过某种方法访问 Informix® Dynamic Server 数据库),PDO 将来的发展可能会定义通用的数据库管理任务(如备份、恢复、停止和启动)。

PHP 的 DB2 和 Cloudscape 扩展

PHP 的 DB2 和 Cloudscape 扩展是一种新的数据库专用扩展,IBM 将于近期按照 Apache License Version 2.0 将其贡献给 PHP Extension Community Library (PECL)。既然 PHP 5 已经通过 PDO 定义了一种通用数据库接口,而且 PHP 4 中的 Unified ODBC 也提供了基本的支持,IBM 这样做看起来有点奇怪。但是,为了满足不断增长的在 PHP 4 中充分利用 DB2 和 Cloudscape 功能的需要,IBM 开发并提供了这一扩展。目前多数产品 PHP 服务器仍然运行 PHP 4,预计直到 2006 年的某个时候还不会转移到 PHP 5。 IBM 没有重载 Unified ODBC 扩展,为 DB2 的特殊要求增加更多的 #ifdefs,而是决定从头编写一个全新的扩展。因为 IBM 将把代码贡献给开放源代码社区,因此就有机会重用 PDO_ODBC 或其他驱动程序中的任何代码。DB2 和 Cloudscape 扩展 API 在很大程度上与 Unified ODBC 扩展兼容,而且这种新的扩展在 PHP 4 和 PHP 5 环境中得到了 IBM 的正式支持,因此 PHP 开发人员就拥有了一个坚实的、功能完备的平台,可以建立需要在 PHP 4 上运行的应用程序。

PHP 服务数据对象

今天,开发人员面临的问题是要根据数据源和平台使用很多不同的数据访问 API。PHP 也不例外,有很多数据库 API 和数据对象模式的变体可以选择。设计服务数据对象(SDO)就是为了简化和统一应用程序处理数据的方式。使用 SDO,应用程序员可以统一访问和操纵来自不同数据源的数据,包括关系数据库、XML 数据源、Web 服务和企业信息系统。关于 SDO 的设计目标和体系结构,详情请参阅白皮书“Next-Generation Data Programming: Service Data Objects”。

将应用程序连接到数据源的任务由数据仲裁服务执行。数据仲裁程序提供了不同数据源和客户应用程序所用的统一数据访问 API 之间的粘合层。客户应用程序向数据仲裁服务查询以获得数据。数据(简单的数据图表示。数据图是树状结构或者图结构的数据对象的集合。客户应用程序使用一致的 API 操纵数据,而不管数据来自何处。要提交对数据源的修改,客户应用程序只需要请求更新数据。数据仲裁程序处理与后端数据源交互的复杂性并应用所作的修改。这种架构使应用程序主要与数据图和数据对象打交道。SDO 和数据仲裁服务结合起来,提供了一种强大而简单的编程模型,极大地提高了服务架构和统一数据访问 API 提供内容,使所有客户构建自己的动态 Web 应用程序更加容易。



参考资料



作者简介

作者照片

过去五年中,Stewart Nickolas 一直在 IBM 的 Emerging Technologies 组工作,其间先后从事过 Web 服务、基于 Eclipse 的 Web 服务工具和富 Internet 客户机技术的开发。


作者照片

John Steinbacher 在 IBM Software Group 工作了十一年,先后作过开人员和开发经理。去年他进入 Emerging Technologies 领域,主管了多个孵化器项目。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


商标声明。 另一种商标声明。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款