使用 OpenLaszlo 创建 Web 富客户端(4)
- UID
- 1066743
|
使用 OpenLaszlo 创建 Web 富客户端(4)
部署:proxied 与 SOLO 应用程序 有些读者可能已经迫不及待地跳到了 小节去看有哪些类型的 OpenLaszlo 应用程序。如果您没有这么做,而是坚持读到这里的话,我想您也很想知道如何将 Laszlo 文件转换成可以部署到 Web 上的格式。本节将谈到这个话题,并且还会点明哪种部署模型最适合您,是 proxied 还是 SOLO。
SOLO 部署 SOLO(standalone OpenLaszlo output 的简称)部署方式只受那些可以为 Flash 文件服务的 Web 服务器的支持。为了将 Laszlo 应用程序转换成一个 Flash 文件,可以调用编译器(例如 lzc file.lzx —— .lzx 是 Laszlo 文件的扩展名)来产生一个输出文件,只要带有必需的最小版本以上的 Flash,就可以播放该文件。这样就非常简单了:将生成的文件放在 Web 服务器上,然后将它包括在一个 HTML 文档的主体中就可以了。OpenLaszlo 编译器会负责所有底层的工作(资源组合,代码生成,等等)。但是,SOLO 部署方式有一个限制,有些非常强大的特性(例如 Web 服务调用、RPC 和某些类型的媒体流)SOLO 部署方式不能提供。
proxied 部署:所有特性 使用 proxied 部署方式,可以得到 OpenLaszlo 系统所能提供的所有特性。这是这种部署方式的一个优点,但是:为了使用这种部署模型,必须在服务器上安装一个 OpenLaszlo Server 环境。这种服务器环境是位于 J2EE 应用程序或 servlet 容器之上的一个 Web 应用程序,负责为 .lzx 文件处理所有请求。OpenLaszlo Server 的一个很棒的特性是,您只需将 Laszlo 文件和 OpenLaszlo Server 组件放在一个服务器上,便可以浏览页面并看到结果,因为它是由服务器动态编译和缓存的。OpenLaszlo Server 另外一个主要的优点是它位于所部署的应用程序与应用程序需要访问的其他资源之间,执行各种所需的转换。因此 Laszlo 支持(在被代理的情况下) XML-RPC 之类的特性。
对于很多用户来说,安装 OpenLaszlo Server 是很快的,并且它还捆绑了 Tomcat,安装起来很方便。对于那些使用 IBM WebSphere® 或其他 J2EE 应用服务器的用户来说,可以使用 中提供的一个 Web 应用程序档案文件和关于如何设置环境的说明。系统管理方面超出了本文的范围,不过可以在 小节中找到很多相关的参考资料。
何时使用 proxied 部署 由于在 SOLO 部署方式下媒体请求不是代理的,因此 SOLO 应用程序只支持 Flash、JPG 和 MP3 媒体类型。而且,由于不存在数据的代理,SOLO 部署中也不支持 RPC、SOAP 和持久连接之类的项。
虽然本文只对 proxied 和 SOLO 部署方式作了简要的概述,但是足以令您见识到 OpenLaszlo Server 的威力。在最后一节中,我将展示 Laszlo 支持的数据绑定和 RPC 特性,有些特性在 proxied 模式下具有不同的行为,或者依赖于 proxied 模式。
数据绑定特性和 RPC 谈到在 Laszlo 中显示大量数据的时候,这种语言的数据绑定特性可以说是非常方便的。通过数据绑定可以将特定的组件值映射为一个已有的数据结构,而不必进行额外的编程。数据绑定主要用于创建基于表单的布局,在这种情况下您需要将大量项插入到一个可视化的模板中。您可以将 UI 的文本域和其他内容绑定到外部数据存储,并且可以使用那些数据来填充像下拉框和复选框之类的控件。
数据源通常是一个 XML 文档,该文档或者被静态地编译成 OpenLaszlo 应用程序,或者被动态地获取。您也可以使用 XMLHttpRequest 之类的 API 开发更具手动特点的解决方案,但是使用数据绑定将减少开发时间。在 OpenLaszlo 中,可以在 XML 文档中指定元素,通过在 datapath 属性中添加 XPath 来绑定这些元素。 展示了一个简单的例子,这个例子将一些联系信息绑定到某些文本区域。
清单 7. 简单的联系信息的数据绑定1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <canvas>
<dataset name="contactInfo">
<contacts>
<contact>
<name>John Doe</name>
<phone>555-2000</phone>
<DOB>16-01-1973</DOB>
<role>Developer</role>
</contact>
<contact>
<name>Jane Doe</name>
<phone>555-3000</phone>
<DOB>27-02-1974</DOB>
<role>Manager</role>
</contact>
</contacts>
</dataset>
<view datapath="contactInfo:/contacts/">
<simplelayout axis="y" />
<view datapath="contact/">
<simplelayout axis="x" />
<text datapath="name/text()" />
<text datapath="phone/text()" />
<text datapath="DOB/text()" />
<text datapath="role/text()" />
</view>
</view>
</canvas>
|
上面的例子引入了数据绑定中的另一个重要概念:XPath 继承。您可以看到,外部的视图与 XML 文档的根节点(<contacts>)是绑定的,而嵌套在里面的视图则绑定到一个 <contact> 节点。另一个值得注意的地方是两个 实体都显示出来了,如 所示。
图 4. 清单 7 的输出 这是默认的行为,不过您可以指定一个特定的 contact 节点(例如 datapath="contact[1]")。如果使用这种默认行为,LzReplicationManager 将复制相应的 <view> 项。
数据绑定还可以做更多的事情,因为 <dataset> 对象可以定义成远程对象。此外,它们可以动态更新,利用数据绑定层处理所有底层的事情。当然,和 Laszlo 中的大多数特性一样,您可以以多种方式使用数据绑定。例如可以覆盖声明了 datapath 属性的项上的 applyData() 方法,以定制数据的格式化。类似地,<dataset> 的 ondata 事件可用于处理其他定制的更新。除了这些简单的覆盖外,Laszlo 还包括很多更复杂的接口和对象(包括 <datapointer> 元素),更高级的 Laszlo 开发人员可能会感兴趣。
RPC 选项 虽然完整地描述 RPC 的工作原理超出了本文的范围,不过我还是觉得有必要提到 OpenLaszlo 对 RPC 提供支持的方式。在 proxied 部署方式中,OpenLaszlo 支持三种类型的 RPC:JavaRPC、SOAP 和 XML-RPC。所有这些方法都有相关的特定组件,但是它们都继承 OpenLaszlo RPC 组件 <rpc>。同样,RPC 也需要 OpenLaszlo Server。后者负责处理数据的编排和将请求代理给远程服务器。
通过使用 JavaRPC (或其他 RPC 方法),不必修改服务器端已有的逻辑便可以与 OpenLaszlo 兼容。这相对于基于 Ajax 的解决方案来说是一个优点,它提供了定制的或第三方的软件来将 Ajax 型请求映射到 JavaRPC 模型中。此外,由于 OpenLaszlo 会创建代理存根(使用 Laszlo Delegates),大大减轻了开发人员的负担。由于 OpenLaszlo 中提供的 RPC 方法非常类似于更传统的相应的 RPC 方法,因此那些熟悉 RPC 的用户可以直接上手。那些不熟悉 RPC 的用户也可以放心,OpenLaszlo 中的 RPC 支持允许以一种直观的方式与服务器端逻辑紧密耦合。 |
|
|
|
|
|