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

developerWorks 中国  >  WebSphere | Web development  >

WebSphere sMash 带来了什么精彩内容? v1.1.1 新特性介绍

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

朱 可, 软件工程师, IBM 中国软件开发中心

2009 年 8 月 31 日

本文将向您概括介绍 WebSphere sMash v1.1.1 版本中的新增功能,其中包括对更多操作系统和部署平台的支持,PHP 运行环境性能的提升,AppBuilder 开发工具对 PHP 调试器和 iWidget 编辑器的支持等。

WebSphere sMash 新版本 v1.1.1

免费下载 WebSphere sMash Developer Edtion V1.1.1,体验其带来的新特性!

更多关于 WebSphere sMash 方面的最新技术资源,请参考 WebSphere sMash 产品专题

2009 年 7 月 1 日,IBM 正式发布了 WebSphere sMash v1.1.1 版本。自去年 12 月发布 v1.1 版本以来,这次发布的新版本积累了过去 5 个多月迭代开发的成果,更新范围包括 sMash 商业版、WebSphere sMash Reliable Transport Extension 和 sMash 社区版,主要更新内容涉及支持更多操作系统、功能增强、新特性、性能改进、以及产品开发者版本的使用条款。

新版本的 WebSphere sMash 产品的功能增强主要包括:对更多操作系统平台的支持,PHP 运行时环境性能方面的提升、对 Assemble flow 和其他 sMash 组件的功能更新。

除了正式发布的产品之外,WebSphere sMash 社区版本(Project Zero)也发布了新特性。包括 AppBuilder 中的可视化 iWidget 编辑器和 PHP 调试器,以及供业务人员使用的 AppCreator。

在这个新版本发布之际,除了产品的新特性和功能增强之外,Project Zero 社区还修改了 WebSphere sMash 开发者版本(WebSphere sMash Developer Edition)的使用条款,这意味着开发者在使用该版本进行开发、测试和演示时,将没有商业版本对 sMash 运行平台和应用程序实例的数量限制。

以下我们将向您详细介绍 sMash v1.1.1 版本的这些更新内容。





回页首


支持更多操作系统和部署平台

在这个版本发布之前,WebSphere sMash 只能运行在 Mac,Linux 和 Windows 操作系统上,v1.1.1 版本发布之后,你可以在 IBM AIX,以及 p 系列和 z 系列主机版本 Linux 操作系统上运行 WebSphere sMash。这使得 sMash 为 Web 应用程序开发带来的价值得以在 IBM 的其他解决方案中广泛应用,同时也为开发者带来了更多部署环境的选择。你可以在 Windows 或者 Mac 操作系统上开发 sMash 应用程序,之后只需将应用程序打包成为一个 ZIP 文件,传至其他平台上进行部署即可。

除了更多操作系统的支持之外,新版本中还允许将 WebSphere sMash 部署到其他 IBM 的计算基础设施上:包括 IBM Smart MarketPlace、IBM WebSphere Message Broker 和 CICS,对于已经采购这些基础设施的 IBM 客户来说,他们可以使用 WebSphere sMash 在现有的平台上创建 Web 2.0 应用程序。





回页首


WebSphere sMash 和云计算

Amazon EC2 是什么?

EC2 全称 Amazon Elastic Compute Cloud,是 Amazon 于 2006 年推出的计算基础设置。用户通过购买机器镜像(Amazon Machine Image, AMI),根据实际运行的计算单元数量和实际使用的时间和机器利用率来支付费用。

现在您可以立即在云计算环境中使用 sMash !今年五月初,亚马逊 Web 服务与 IBM 协议,通过亚马逊的云计算平台 Amazon EC2 来使用 IBM 的产品和技术,其中就包括 WebSphere sMash.。开发者只需要获得 Amazon 的 Web 服务账号,选购指定的机器镜像(Amazon Machine Image),即可获得完整的 WebSphere sMash 运行环境。关于如何在云计算环境中使用 WebSphere sMash,请参考 developerWorks 网站上的文章 面向企业的云计算,第 2 部分:Amazon EC2 公共云上的 WebSphere sMash 和 DB2 Express – C

目前提供 WebSphere sMash 运行环境的机器镜像均为 SUSE Linux Enterprise Server (SLES) 10 SP2 操作系统,预装的软件包括:

  • IBM JDK6 SR3
  • WebSphere sMash
  • IBM HTTP Server 7.0
  • MySQL 5.0
  • SQLite

当你获得该机器镜像之后,就可以通过 Amazon EC2 的命令行工具或管理控制台来启动镜像实例、进行简单设置即可开始使用 WebSphere sMash 基于浏览器的开发环境 AppBuilder,立刻开始开发和部署 Web 应用程序。


图 1. 在 Amazon EC2 中运行 WebSphere sMash(查看大图
图 1. 在 Amazon EC2 中运行 WebSphere sMash




回页首


PHP 运行环境性能的提升

WebSphere sMash 自 1.1 版本以来一直致力于改善 PHP 运行环境的性能。自从引入使用 PHP 代码生成 Java 字节码 (Java bytecodes) 的技术以来,通过 Java 虚拟机提供的即时编译器 (Just In Time Complier) 技术大大提升了 PHP 代码的运行效率和运行性能。在这次发布的新版本里,主要采用缓存字节码技术,同时在内存和磁盘上缓存由 PHP 代码生成的 Java 字节码,使得在 sMash 上运行 PHP 的启动时间大大缩短。

从目前的基准测试结果来看,WebSphere sMash 的 PHP 运行已经达到了 PHP.net 的安装包提供的水平,在很多测试用例中,sMash 的 PHP 运行时甚至会超过 PHP.net。除了基准测试之外,使用 sMash 运行著名的 PHP 应用程序,如 SugarCRM、WordPress 所展现出的响应时间和吞吐量已经相当于 Apache HTTP 服务器附加 mod_php 5.2.6 模块默认条件下的水平。

1.1.1 版本相比去年发布的 1.1 版本,6 个月的时间内 WebSphere sMash 的 PHP 运行环境的吞吐量增加了整整一倍。这项性能提升工作还在持续进行中,我们期待着在以后的版本中出现运行更快、更大吞吐量和更低延迟的 PHP 运行时。





回页首


支持更多网络应用协议

作为 Web 2.0 应用程序的开发平台,WebSphere sMash 新版本中提供了丰富的访问外部服务和资源的能力。很多开发者在 Project Zero 开发社区的论坛上咨询 sMash 是否能支持像 SMTPS/POP3S 这样在互联网上广泛使用的应用协议,从而可以扩大 sMash 应用程序的使用范围。这次发布的新版本不仅支持 HTTP/HTTPS,SMTP 协议,还增加了对 FTP/SFTP、SMTPS、POP3/POP3S 等应用协议的支持。举例来说,大多数的互联网邮件服务提供商的 SMTP 服务都要求发信人提供身份验证和使用安全连接,现在你可以在 sMash 里通过配置文件 config/zero.config 轻松实现。


清单 1. 连接要求身份验证的 SMTP 服务
/config/connection/defaults/smtp/hostname = "smtp.projectzero.org" 
/config/connection/defaults/smtp/userid = "user1" 
/config/connection/defaults/smtp/password = "password1" 
/config/connection/defaults/smtp/smtpsConfig = "defaultConfig"

之后依旧使用原有的 Connection 对象发送 Email。


清单 2. 调用 Connection 对象的 Groovy 代码
import zero.core.connection.*
try {
  Connection conn = new Connection("mailto:you@example.com", Connection.Operation.POST);
  conn.addRequestHeader("From", "me@projectzero.org");
  conn.addRequestHeader("Subject", "Hello!");
  conn.addRequestHeader("Content-Type", "text/plain; charset=\"UTF-8\"");
  conn.addRequestHeader("X-My-Custom-Header", "Custom header value");
  conn.setRequestBody("This is the e-mail body.");
  Connection.Response resp = conn.getResponse();
} catch (Exception e) {
  // failed to send email
}

除了发送邮件的 SMTP 协议,1.1.1 版本中还增加了 POP3/POP3s 协议支持,在 sMash 应用程序中自动定期检查指定邮箱中是否有新邮件,并根据需要处理邮件的内容和附件。清单 3 配置内容显示了如何连接指定邮箱、检查新邮件的周期、和如何处理新邮件。


清单 3. 通过 POP3s 收取指定类型的邮件
/config/mail/stores/myMailStore = {
    "hostname" : "pop3.projectzero.org",
    "protocol" : "pop3s",
    "userid" : "user1",
    "password" : "pass1"
}

/config/timer/tasks/myMailKicker = { "delay" : 60 } # polling every 60 seconds

/config/handlers += [
{
    "events" : "timer",
    "handler" : "zero.mail.kicker.MailKicker.class",
    "conditions" : "/event/_taskName =~ myMailKicker",
    "instanceData": {
        "mailStore" : "myMailStore",
        # 如果有新邮件到达就向 /zero/receiver/mail 发送请求
        "receiverURL" : "http://example.com:8081/zero/receiver/mail"
},
{
    "events" : "POST",
    "handler" : "zero.mail.receiver.MailReceiver.class",
    "conditions" : "/request/path =~ /zero/receiver/mail(/.*)?"
},
{
  "events" : "mailMessage",
  # 编写事件捕获器处理新邮件
  "handler" : "myUrgentMailMessageHandler.groovy", 
  # 仅处理以URGENT为开头标题的邮件
  "conditions" : "(/event/mailStore == myMailStore) && 
  	(/request/mail/headers/Subject =~ URGENT:.*)"
}]





回页首


流程引擎的新功能

在新发布的 1.1.1 版本里,一项重要的主题就是让 sMash 的流程引擎 Assemble flow 支持 PHP,使得 PHP 程序员体验使用 Assemble flow 模块时编程的简单性。之前 PHP 程序员如果需要在一个流程中使用 PHP 代码,必须按照指定的编程规范创建特定的指定单元(Assemble flow 中称为“活动”),或者只能用 PHP 来创建页面模板,而现在允许在已有的 “script” 类型的活动中调用 PHP 程序(之前仅允许调用 Groovy)。如图 2 所示在 AppBuilder 中指定 script 活动的 PHP 代码文件,和清单 4 所示的 PHP 代码中如何处理活动的输入输出数据。


图 2. 在 script 活动中调用 PHP 脚本
图 2. 在 script 活动中调用 PHP 脚本

清单 4. script 活动所调用的 PHP 代码
			
<?php
// file: /app/script/getManagerEmail.php
// get input data
$employeeEmail = zget("/event/employeeEmail");
// Do something to find manager's email
$managerEmail = findManager($employeeEmail);
// set script activity output data
zput("/event/result", $managerEmail);
?>

除了对 PHP 的全面支持以外,Assemble flow 中还为创建人工活动流程增加了很多功能。

根据已有 Zero 资源表单(Zero Resource Form)自动创建表单页。

在 AppBuilder 中的流程编辑器里打开 webUI 类型活动(Assemble flow 中负责人工交互的执行单元)的属性对话框,你可以看到在 view 属性中可以选择 “Create UI based on Zero Resource Form”,在之后弹出的对话框中选择保存路径、表单和模板语言即可自动创建表单页。


图 3. 选择从 Zero 资源表单创建页面
图 3. 选择从 Zero 资源表单创建页面

图 4. 选择表单页的保存路径、Zero 资源表单和模板语言
图 4. 选择表单页的保存路径、Zero 资源表单和模板语言

为 “webUI” 类型的活动提供可定制的通知机制给开发人员创建人工活动带来了足够的灵活性,可以根据实际需要定制通知类型:如发送邮件、短消息、创建“待办事项”等。


清单 5. 配置事件捕获器实现 “webUI” 活动结束后发送短消息
			
/config/handlers += [{
   "events" : "webUINotification",
   "handler" : "sendSMSHandler.groovy", 
    # 发送短消息
   "conditions" : "(/event/attributes#assignTo != null) && (/event/status == complete)"
}]

基于流程实例的访问控制增强了流程的安全性,保证每个流程实例中,只有活动的流程参与者才可以访问特定的活动。举例而言,可以实现审批流程中只允许审批人进行审批操作。





回页首


AppBuilder 的 PHP 调试器和 iWidget 编辑器

iWidget 是什么?

iWidget 是 IBM 推出的 Web 窗口小部件规范,它可以运行在 IBM Mashup Center 以及其它产品中,也可以直接嵌入在网页中。

WebSphere sMash 的集成开发工具 AppBuilder 又带给了我们新的惊喜:继调试功能支持 Java 和 Groovy 之后,新版本中又支持了调试 PHP 的功能。这意味着 PHP 程序员只需要一个火狐浏览器(Firefox),就可以获得一个基本功能全面的 PHP 运行和开发环境。


图 5. 在 AppBuilder 中使用断点调试 PHP 代码
在 AppBuilder 中使用断点调试 PHP 代码

除了 PHP 调试器外,WebSphere sMash 新版本中的 AppBuilder 还增加了一个 iWidget 编辑器,Web 开发人员现在可以使用 AppBuilder 来开发 IBM Mashup Center 所使用的 iWidget,并且能够以可视化的方式定义各种事件。


图 6. AppBuilder iWidget 编辑器
AppBuilder iWidget 编辑器




回页首


其他

除了以上介绍的新特性之外,WebSphere sMash v1.1.1 版本还有很多增强功能。如目前可以运行在 WebSphere sMash 平台上的 PHP 应用程序数量不断增加,将 Groovy 语言从 1.5.6 升级至 1.6.2 来获得 Groovy 编译和运行时环境的性能提升、AppBuilder 代码重构、性能提升以改善程序员的开发体验等等,这里不再进行详细介绍,感兴趣的读者可以访问 ProjectZero 社区的博客和 Wiki 站点来了解各种新特定的详细内容。



参考资料

学习

获得产品和技术

讨论


关于作者

zhuke's photo

朱可 从清华大学获得工学硕士学位后加入了 IBM。目前就职于 IBM 中国软件开发中心, 是 Project Zero 团队的软件工程师,主要从事 WebSphere sMash 的产品开发工作。对 Web、Java、Linux 等技术和敏捷工程都有浓厚的兴趣。




对本文的评价








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