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

developerWorks 中国  >  WebSphere  >

WebSphere Everyplace Mobile Portal: 第 1 部分:扩充 WebSphere Portal 的功能来为移动用户服务

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码


级别: 初级

Thomas Burke (thomas.burke@us.ibm.com), 咨询软件工程师, IBM
Kristen Balhoff (kbalhoff@us.ibm.com ), 专职软件工程师, IBM

2004 年 12 月 01 日

本文是 WebSphere® Everyplace® Mobile Portal 系列专题中的首篇文章,给出了移动门户网站的总体介绍,并说明如何使用它来满足您移动设备的需求。本文着重介绍了 XML 设备无关性标记扩展(XML Device-Independent Markup Extensions,XDIME),以及多通道服务器(Multi Channel Server,MCS)是如何整合到 WebSphere Portal Server 中的。阅读完本文并仔细研究实例后,您就可以对 XDIME 有个基本的了解,并且知道 portlet 应用程序是如何使用它的。

引言

WebSphere Everyplace Mobile Portal(以下称为 Mobile Portal)是 WebSphere Portal Server(以下称为 Portal)的扩展。Mobile Portal 提供了一些扩展功能使 Portal 能够以最少的耗费支持各种可移动设备包含尽可能多的内容。下面简明地列出了 Mobile Portal 的功能:

  • 将 Multi Channel Server(MCS)整合到 WebSphere Portal 中使其能够支持 XDIME
  • 配备 XDIME 聚集器(XDIME aggregator),来管理 portlet 的表达
  • 提供预装载通知,它是按照一定规则加入了“面对”资源的页面。例如,用户发出 portlet 请求,可能导致帐单上出现了额外的开销。而遵循一套既定规则的预装载通知能提醒用户这个请求将导致多余的开销。预装载通知在用户首次访问 portlet 时被创建,一天一次,每次访问 portlet 时都会出现,等等。
  • 内容过滤,这依赖于设备的性能。
  • 具有管理移动页面(Manage Mobile Pages)的 portlet,它被用来管理门户的导航,以及上述提及的预装载通知、内容过滤和元数据。
  • 元数据支持导航节点。管理移动页面的 portlet 能配置元数据使其适合于 Portal 中的对象。定制的聚集器使用这种元数据来提供某些具体的功能,例如创建导航节点的图标、更改移动设备的标题。
  • MCS API 使其具有能够访问设备的特性。
  • 提供 WebSphere Everyplace 移动设备更新服务,这可以通过预订获得。
  • 具备一个支持 XDIME portlet 开发的工具包。

本文重在介绍 XDIME 以及 MCS 如何整合到 Portal 中。在本系列专题中,以后的文章将深入研究列表中的其它功能。至于更多的有关 WebSphere Everyplace 移动设备更新服务的信息,请参阅 Mobile Portal 信息中心





回页首


什么是 XDIME?

XDIME 是一种抽象的、设备无关的标记语言。经过处理,它可以转换成多种标记语言。例如 WML 1.1、WML 1.3、XTHML Basic、XHTML-MP、HTML 3.2、HTML 4.0 等等。应用程序使用 XDIME 生成一个标记,以支持一系列设备。如果设备不能都兼容同一个标记语言,那么 XDIME 将被转换成适合每个设备的语言。这将使开发人员不用再注重那些调节标记语言细微差别的过程中冗长乏味的细节,而更加关注应用程序的内容及其业务逻辑性。业务逻辑性无需多设备支持就可交付。例如,开发人员可能用 XDIME 编写独立的应用程序,那么 XDIME 可以被转化成适用于 PDA 的 HTML、移动电话的 WML,或应用于智能电话的 XHTML。

MCS 是一个 Mobile Portal 组件,它处理 XDIME 来生成各种标记语言。正如图 1 所示,MCS 接收 XDIME 作为输入,并生成符合设备要求的标记语言。


图 1. MCS 处理 XDIME 来生成设备的首选标记
简化视图:MCS 处理 XDIME 来生成设备的首选标记

根据解释中的观点,似乎 MCS 神奇地将 XDIME 转换成了 WML、XHTML,或是设备所需的任何标记。但事实上,MCS 本身并没有足够的信息决定该向设备发回什么标记。接收的报头并不可靠,因为设备接收的内容常常不准确。这是就需要使用 MCS 策略储存库(MCS policy repository)。这个储存库是 MCS 的核心,包括成百上千的设备的描述,并且每个描述都含有上百个属性。每个描述都被称为一种 设备策略(device policy),它与一类设备(例如,移动的、手持的或 Clamshell 的等等)或是一个具体的设备(例如,由指定的厂商提供的指定型号的设备)相关联。由于经常引进新设备,设备储存库就必须定时更新以保证它的实时性。客户可以通过预订移动设备更新服务来持有设备储存库的最新版本。

MCS 使用一个由特殊到一般的分级方法将设备储存库中的策略同具体的设备匹配起来。首先要尽可能多地掌握设备的准确信息,比如具体的型号及厂商。之后,MCS 遍历设备各层寻找更为一般的信息,直到找到与其策略匹配的为止。例如,MCS 首先查找设备的某个型号,然后是厂商,接着是类型等等,直到找到匹配的为止。这就是某些策略在文章的后面才介绍的原因,像布局、组件、主题策略,这些都能被定义在设备树状图中的任何层次。这也是将高层的一般策略作为最后的手段的原因,可以获得所有的策略。

连同每台设备的许多物理特性一起,设备储存库也存储设备的首选标记语言。配置有这种信息的 MCS 可以更易于将 XDIME 转换成特定设备的标记,还可以通过引入布局的概念使其更加灵活。





回页首


使用布局增加灵活性

XDIME 应用程序的目标设备可能在屏幕尺寸上有较大的差别,这使得为一个能适合于任何设备的独立页面编码难于实现。例如,假设您有两台设备,其中一台的像素是另一台的四到八倍。那您如何描述每台设备的相应信息呢?一般,开发人员通过为硬件编写 JSP 代码来生成不同的标记(通常对标记语言用“最小公分母”方法)以适应这些差异,并且在满足设备要求的基础上适当删除一些内容。若需要支持大量的设备,那么如何处理各种不同的屏幕尺寸、标记,以及需要什么样的设备性能来支持,这些都将成为问题。对具体设备描述的管理很快就变得非常杂乱。MCS 通过设备布局策略(layout policies)解决了这个问题,这个策略管理设备描述并删减其内容以适合不同的屏幕尺寸及设备性能。

例如,假设您开发了一个股票报价系统的应用程序,它必须能灵活地应用于 PDA、XHTML 手持设备以及 WML 手持设备。同时,假设要求显示在 PDA 上的页面应当包括公司名称、显示股票行情的符号、当前股票价格,以及在过去三个月中的股票运作图表,并附加公司信息。XHTML 手持设备必须显示公司名称、股票行情、当前价格、以及公司的标志。而 WML 要求指出公司的名称、股票符号,以及显示股票的价格。

数据 PDA XHTML WML
公司名称
公司的行情自动播报机
当前价格
公司标志
额外的公司信息
股票图表

这个例子是一个很好的关于设备布局的用例,因为它的内容不同于我们以前提及过的任何设备种类。

看完上述需求表格,您可能认为从 portlet 来看 JSP 应具有逻辑性,并能删减一些被 XHTML 和 WML 设备省略的信息,然而,使用 XDIME 事实并非如此。能被任何设备调用的 JSP 代码实际上生成同样的标记,当这些标记应用于设备的布局中时数据才被删减。

考虑下面给出的 XDIME 实例:


清单 1.由 portlet 生成 XDIME
				
        
<canvas layoutName="/stockLayout.mlyt" type="portlet" class="body">
    <pane name="Name">
        <b>JK Telecom</b>
    </pane>
    <pane name="Ticker">
        JKT
    </pane>
    <pane name="Price">
        192.73 +0.25
    </pane>
    <pane name="Logo">
        <img src="/logo.mimg" />
    </pane>
    <pane name="Chart">
        <img src="/chart.mimg" />
    </pane>
    <pane name="Additional">
        <hr/>
        JK Telecom is a industry leading communication services provider. 
    </pane>
</canvas>
		
      

正如上面所说,XDIME 标记适用于所有的设备,并且当标记应用于布局中时数据将被删减。由于设备布局是依据设备策略定义的,所以您也可以使用策略定义 手持设备种类。它将应用于 XHTML 设备。一种是用在 WML 设备中的 WAP 手持设备,另一种是用于 PDA 的 Master,以及其他的任何不符合上述两类标准的设备。下图展示了创建向导布局中的第一张面板,说明了设备储存库的分级特性。


图 2. 创建具体设备的布局
创建具体设备的布局

在设备布局方法中,布局决定哪些信息将被发送到设备,以及它们在屏幕中相对于其他的信息将显示在哪里。正如您所见的下面展示的布局一样,XHTML 和 WML 设备的布局省略了 Master 布局中显示的窗格。这将使布局忽略掉窗格信息。布局也可以包括哪些从未被 XDIME 文档引用过的窗格。以上是使用 XDIME 的一般情况并且不会使 MCS 出现错误。

您也许注意到了在每个布局中窗格出现在不同的位置。这说明 MCS 提供一些附加的灵活性。布局彻底改变了设备的类别。正如您所见的为 PDA 创建的布局一样,它的内容很可能比其他设备给出的更加丰富。


图 3. 股票实例 Portlet 的设备布局
股票实例 Portlet 的设备布局

XDIME 文档以及设备布局是建立 Mobile Portal portlet 最基本的条件。但若想配上一幅图片使 portlet 更加生动,该怎样做呢?请您回顾上面股票报价的例子所引用的图片,有没有注意到 <img> 标签看上去有些特别?那是因为 MCS 通过引入组件策略(component policy)增加了灵活性。





回页首


使用组件增加灵活性

图片是 MCS 所用的多种 组件策略之一。应用组件策略描述要显示的内容,如一幅图片,通过抽象的方式(如上面 <img> 标签中的 src="/logo.mimg" 属性)使查阅内容更为灵活。通过这种方式,您可以查询独立的抽象组件名称(如 /logo.mimg),并能绘制一些图像。

例如,若想在 PDA 上显示一幅 80x80 像素的图片( logo80x80.jpg),但考虑到这对于 XHTML 手持设备来说太大了,那么对于那种设备而言 40x40( logo40x40.jpglogo40x40.gif)的效果最好。同样,如果 WML 设备支持 WBMP 格式的图片,就可以显示 20x20 WBMP ( logo20x20.wbmp)的图片。您创建的图片策略可能使 logo80x80.jpgTablet 类的设备(在设备储存库中 PDA 是 Tablet 的子类)相关联, logo20x20.wbmpWAP Handset 类型的设备相联系,并且把 logo40x40 的图片作为普通图片。这样,MCS 就将 URL 图片传递到适当的设备上。

您应该创建两张普通图片,一张是 JPEG 格式的,另一张是 GIF 格式的。因为有些设备接受 JPEG 格式的图片,另一些接受 GIF 格式的,而不是两者都接受。因此,大部分的设备都具备这两种格式的图片组件。同样,由于图片是普通格式且可能用于各种设备中,所以它们应适用于所有设备,而不能设计成面向特定设备的图片。

MCS 对于其它组件也有类似的功能。Mobile Portal 支持声音、图表、动态视频、图片、链接、活动图片、脚本以及文字组件。





回页首


使用主题增添样式

考虑完 XDIME 的标记、布局、组件之后,接下来的一步是把样式信息加入到设计内容中去,类似于 HTML 的 CSS。MCS 通过引入 主题策略(theme policy)(不要同 Portal Theme 混淆)的概念来提供这种能力。主题可能面向设备等级中的任何层次,并且当标记被发到设备时转化成适宜的样式信息。例如,可能是以 CSS 的形式,或者内嵌作为合适的样式。这种能力使得开发人员可以指定不同的字体大小、颜色、排列方式等等,当它们被发送到不同的设备时以此为基础。例如,由于 PDA 有较大的屏幕,所以它可能使用比 XHTML 手持设备更大的字体。

虽然 XDIME 聚集器指定了一个缺省的主题,但是 portlet 开发人员也许并不注意它,而在 portlet 的 canvas 标签中创建并指定一个新的主题。然而,我们建议 portlet 的开发者使用聚集器的缺省主题,并依据需求对其进行改动,以防止过多的样式信息传到设备中,并占据设备输入缓冲单元中大量的空间。





回页首


综上:如何在 Mobile Portal 中使用 MCS?

Mobile Portal 的 MCS 组件是以 门户过滤器(portal filter)的形式实现的。如果您研究下面的图表,就会发现 WebSphere Application Server 是第一个收到设备的 HTTP 请求的。应用程序服务器创建了一个请求对象并将其传递到 Portal。在这端,Portal 需确定将请求发送到哪个聚集器,因此它遍历客户的基本信息列表( 支持客户端的 Portal 管理页面),并在其中查找用户的正式的需求描述直到发现匹配的为止。在这个例子中,我们假设匹配成功并且调用了 XDIME 聚集器。由于 MCS 配置成 Portal 过滤器为生成 XDIME 标记服务,所以被加到了 XDIME 聚集器的前面,并且被 ServletRequest 和 ServletResponse 对象调用。在做完一些初步的处理后,过滤器调用 XDIME 聚集器处理一个封装的请求及响应。在 XDIME 聚集器完成任务并发出回应(包括将 portlet 标记加入 XDIME 文档)之后,将返回到 MCS。这端的响应包含一个待处理的完整的 XDIME 文档。


图 4. Mobile Portal 中的 MCS 运行时
图 4. Mobile Portal 中的 MCS 运行时

在请求的传递过程中,MCS 利用设备的用户代理信息在设备储存库中查找它的相关特性。然后,从响应中提取 XDIME 并通过运行 XDIME 上的转换装置将其转换成设备首选的标记。输入进转换装置的内容包括为设备定义的布局、由设备定义的 XDIME 中的任何组件策略,以及为设备指定的主题信息。一旦转换完成,新生成的标记将被置于响应中并发回到设备。

通过为目的设备应用布局、组件、主题策略,使得从 Mobile Portal 返回的响应是来源于特定设备的、具有明显表示的标记。尽管应用程序开发者只需要创建内容的一个 XDIME 版本以及这个 XDIME 引用的所有策略,但是 Mobile Portal 也能使 portlet 应用程序能适合于不同种类的设备。将上述内容综合起来,给出了股票报价系统应用程序这个实例在不同的设备模拟器中显示的最终结果:


图 5. 在三个设备的模拟器中实现 Portlet
图 5.  在三个设备的模拟器中实现 Portlet




回页首


结束语

正如你已在本文中学到的那样,Mobile Portal 为 WebSphere Portal 传输独立的移动设备的内容起到了重要作用。通过开发 XDIME 使这种功能得以实现。XDIME 能被处理成多种可支持的标记语言。它能够根据客户端的设备策略转换成适当的标记。

除了生成适当的标记以外,Mobile Portal 应用特定设备的布局策略,使得能更加灵活地描述与设备相关的内容。XDIME 的内容与特定的区域或窗格有关,它们依据布局策略显示或被省略掉。Mobile Portal 也使用组件策略来连接匹配的数字化产品,例如将一幅图片连接到目标设备上去。此外,主题策略能定制不同类型设备的外观。

最后,Mobile Portal 利用 WebSphere Portal 来识别移动设备、生成特定设备的内容,并且创建一个一次写入、多次复用的程序模型。

在该系列中以后的文章将包含一个教程,说明如何使用 WebSphere Studio Application Developer 来创建简单的 portlet。有一篇文章将介绍所有由 Mobile Portal 提供的组件策略并演示如何使用它们。






回页首


下载

描述名字大小下载方法
XDIME sampleXDIMEStockSample.zip15 KB  FTP|HTTP
关于下载方法的信息


参考资料



作者简介

Thomas Burke 的照片

Thomas Burke 在 Research Triangle Park, NC 的 IBM Pervasive Computing 工作,他是 WebSphere Everyplace Mobile Portal 开发组的软件工程师。闲暇时,Thomas 喜欢驾驶他的 1988 RX-7 参加汽车越野活动,也喜欢做各种美化居室的工作。


Kristen Balhoff 的照片

Kristen Balhoff 在 Research Triangle Park, NC 的 IBM Pervasive Computing 工作,她是 WebSphere Everyplace Mobile Portal 开发组的软件工程师。工作之余,她喜欢练习三项全能运动。




对本文的评价

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

建议?




回页首


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