移动 Web 开发:比较 Mobile Internet Toolkit 和 XSLT


Microsoft Corporation
2002 年 3 月

摘要:对用于创建移动 Web 应用程序的 Microsoft Mobile Internet Toolkit 和 XSLT(可扩展样式表语言转换)进行比较。

目录

简介

本文对用于创建移动 Web 应用程序的 Microsoft® Mobile Internet Toolkit 和 XSLT(可扩展样式表语言转换)进行了比较。

为什么移动开发困难重重?

消费者可以选择各种各样的移动设备,与此同时,制造商们也在不断地推陈出新。由于设备的种类太多,导致开发人员在开发移动 Web 应用程序时面临以下困难:

  • 不同的标记语言,包括 HTML、用于日本 i-Mode 电话的精简 HTML (cHTML) 和用于无线应用协议 (WAP) 电话的 WML。
  • 各种格式因素,包括各种屏幕尺寸、屏幕方向(水平或垂直)、颜色、灰度或者黑白屏幕等。这些可变因素影响了内容分页和用户必须生成的图形类型。
  • 不同的设备功能,包括设备是否能够显示图像、拨出电话或者接收通知消息等。
  • 状态管理,包括是否支持 cookie。

Mobile Internet Toolkit 概述

Mobile Internet Toolkit 包括服务器端技术,该技术扩展 Microsoft ASP.NET 编程模型,以便将内容发送到各种移动设备。由于每个设备都可以具有独特的功能组合,所以 Mobile Internet Toolkit 提供了一个抽象层,这样,开发人员在编写应用程序时就不必担心各种设备的特定详细信息。

下面的图例显示了 Mobile Internet Toolkit 如何针对不同的设备修改应用程序的输出。在向应用程序添加功能时可以看到,对于支持的各种设备,Mobile Internet Toolkit 可以很容易地修改应用程序的外观。在添加对其他设备的支持时,Mobile Internet Toolkit 可以很容易地针对该设备修改现有应用程序。

图 1:Microsoft Mobile Internet Toolkit 流程

根据设备显示方式抽象出应用程序逻辑

此抽象层提供了独立于设备的开发和可扩展性,以便支持将来的设备。最重要的一点就是控件不会显示标记,而是使用设备适配器显示标记。控件根据设备的功能,选择相应的设备适配器。控件本身并不显示基于设备的标记,而是使用设备的功能来确定要显示的内容。对于一个设备适配器使用的功能子集来说,如果两个设备具有相同的值,则该设备适配器将创建相同的标记,为这两个设备显示该控件。

下面的图例显示了如何处理设备发出的 HTTP 请求,以确定是否以粗体(即,SupportsBold 功能的值为 true)显示一个文本控件中的文本。请注意,无论抽象如何工作,控件或设备适配器都不能识别有关特定设备的任何信息。设备适配器识别 SupportsBold 的值为 true 时,将文本改变为粗体。

图 2:生成设备特定的 HTTP 响应

Mobile Internet Toolkit 包括了这一层次的抽象,所以用户可以规划合理的开发应用程序的计划,而无需编译设备功能和编写大量自定义代码以支持各种设备。

Mobile Internet Toolkit 扩展了 Visual Studio

Mobile Internet Toolkit 扩展了 Microsoft ASP.NET,为用户提供了丰富的、可以在多种编程语言中使用的对象模型。

用户的开发小组使用 Mobile Internet Toolkit 提供的类编写代码,并使用运行时显示引擎生成设备特定的标记。Mobile Internet Toolkit 还包括效率增强功能,称为 Mobile Internet Designer(移动 Internet 设计器)。设计器帮助用户创建移动 Web 页并无缝集成到 Microsoft Visual Studio® .NET 中。Visual Studio .NET 包含很多效率增强功能。例如功能强大的源代码级别的调试器,用户可以使用它执行节省时间的任务(如设置断点和在中断时查看变量值);对象浏览器,用户可以使用它查看项目中的对象;还提供了迅速访问文档的功能。使用 Visual Studio .NET、ASP.NET 和 Mobile Internet Toolkit 编程环境,开发人员可以迅速、方便地将数据绑定到控件、管理状态并执行源代码调试。本文稍后将对这些主题进行讨论。

XSLT 概述

当 XML 第一次作为 Web 通用数据交换语言出现时,很多人立即开始研究如何在 XML 文件内表示数据。最后,XSLT 成为 W3C 规范。XSLT 将 XML 文档转换为其他格式(通常是 HTML 文档),这样,可以用不同格式显示同样的 XML 数据。

开发人员使用 XSL 生成移动 Web 应用程序时,他们通常使用的少数几种方法之一是自定义 Web 页格式以适用于多种设备。

这些方法可以分成两大类:客户端和服务器端。客户端方法要求将样式表连同 XML 文件一起发送给客户。此方法对于移动设备不实用,因为只有极少的设备支持客户端转换。

另一种方法是在将生成的专用于设备的标记发送给客户之前,对服务器上的 XML 文件应用设备特定的样式表。

但是,如果必须为每个支持的设置修改标记本身,会对 XSLT 解决方案有什么影响?最常见的问题是浏览器不兼容。用户必须检查每种设备上的浏览器类型和 XSLT 中的浏览器类型,以便为该设备显示正确的 HTML。要完成此任务,要检查对该页面的请求中的用户代理字符串。例如,Microsoft Pocket Internet Explorer 的 User-Agent 字符串以下面的字符开头:

Mozilla/2.0 (compatible; MSIE 3.02; ...

获得此字符串然后对 XML 数据进行 Pocket Internet Explorer 特定的转换的过程很简单。

必须对您的 Web 站点支持的所有设备执行此方法。因为大多数应用程序的输出都差别很大(因此 XML 架构也相差很远),用户必须为每个应用程序的 XML 输出定义一个唯一的 XSL 文件。因为大多数设备都具有唯一的属性排列,用户必须创建从各应用程序到各设备的不同映射,最后得到 M(应用程序)乘以 N(设备)个 XSLT 文件,如图 3 所示。

图 3:XSL 流程

与 Mobile Internet Toolkit 不同,用户在使用 XSLT 添加应用程序时,必须为所支持的每种设备创建一个新的 XSL 文件。在添加对其他设备的支持时,必须为该设备的每个现有应用程序创建一个新的转换。使用 XSLT 方法的结果是,需要完成大量工作才能继续支持其他设备,其他功能和其他应用程序。

使用 Mobile Internet Toolkit,自适应的显示功能内置在类和运行时中,这样,用户无需为新的应用程序编写任何附加转换代码即可获得对该设备的支持。

比较 Mobile Internet Toolkit 和 XSLT

了解了一些关于 XSLT 的知识并且知道 Mobile Internet Toolkit 如何解决移动 Web 开发的难题后,现在让我们来看看 Mobile Internet Toolkit 和 XSLT 有哪些区别。本文的以下部分将介绍下列主题:

  • 生成支持各种数据的应用程序
  • 管理状态
  • 自定义移动 Web 应用程序
  • 持续的设备支持
  • 复用代码
  • 评估性能

生成支持各种数据的应用程序

要使用 XSLT 转换 XML 数据以适用于特定设备,首先,数据必须为 XML 格式。如果您的应用程序不能生成 XML,您可以将应用程序更新为能够生成 XML 的版本,也可以编写一个输出筛选器,将应用程序的输出转换为 XML 格式。

Mobile Internet Toolkit 能够接受 XML 作为数据源,但它也可以接受来自其他数据源的输入。因为 Mobile Internet Toolkit 基于 ASP.NET 且与 Visual Studio .NET 集成,所以,使用 Mobile Internet Toolkit 控件意味着也可以使用 Visual Studio .NET 中的数据工具使您的移动应用程序成为支持移动数据的应用程序。基于 Mobile Internet Toolkit 的应用程序可以使用 ASP.NET 数据源支持的任何数据源(例如任意 Microsoft ADO.NET 数据源)中的数据。结合移动 Web 窗体控件的数据绑定功能,您可以创建一个包含 Microsoft SQL Server™ 数据或其他第三方数据源数据绑定列表的应用程序。除了 XML 以外,Mobile Internet Toolkit 还能支持多种数据。

管理状态

XSLT 没未提供任何内置的状态管理。如果您需要在 Web 页之间保持数据一致,则必须以隐藏变量形式或作为 URL 的一部分在 Web 页之间发送信息。

因为 Mobile Internet Toolkit 内置在 ASP.NET 对象模型的顶层,因此您可以获得 ASP.NET Web 表单的所有优点。就状态管理而言,使用 ASP.NET 可以自动保存 Web 页及其控件的值,而与控件到服务器之间的往返操作的状态无关。可以将此信息保存在页面的 ViewState 属性中,而将视图状态信息作为标记中的隐藏字段发送。

自定义移动 Web 应用程序

开发自己的应用程序后,应该如何对其进行自定义?Mobile Internet Toolkit 提供了一种功能,使您可以基于任意数量的设备特性,轻松地自定义 Web 页。例如,在设备支持 HTML 的情况下,假定您要将自定义的标头和脚注添加到 Web 页。QuickStart 示例的“设备相关内容”部分中的“模板化窗体”示例说明了如何将这些内容添加到 Web 页。此示例显示了如何将 DeviceSpecific 控件添加到窗体,以及如何将 HTML 代码添加到以 HTML 方式查看而生成的 ASPX 页面的标头和脚注。注意,虽然控件名为 DeviceSpecific,但它并仅不限于某种特定的设备。

对于 XSL,进行这样的自定义要困难得多。首先,必须确定哪些设备支持 HTML。然后,必须通过添加标头和脚注 HTML 代码来修改每个 Web 页。请将这些繁琐的步骤与 Mobile Internet Toolkit 所需要的简单操作进行对比。

持续的设备支持

可扩展性是指扩展 Web 站点以包含新设备或设备功能的能力。随着各种新设备的发布,用户面临着是否支持新设备的难题。在 XSLT 解决方案中,决定支持某一新设备后,还必须决定如何实现对现有站点的更改。对于 XSLT,通常要为每个设备修改每个 XSL。如果共有 M 个应用程序(或功能)和 N 个支持的设备,那么用户要进行 M 乘以 N + 1 次转换,才能完成创建和维护工作。对于 Mobile Internet Toolkit,您可以根据新设备和现有设备的区别,采取多种方法:

  • 修改现有设备的配置文件并修改现有功能
  • 创建一个新的浏览器功能项
  • 修改现有设备适配器

在大多数情况下,可以创建一个新的浏览器功能项。但在少数情况下,则必须创建一个新的设备适配器。不过,因为应用程序源代码使用了抽象的显示方式,所以不需要修改应用程序。只要该类型的设备访问用户的 Web 页,就会访问新的设备适配器。Mobile Internet Toolkit 联机文档中有一节内容,专门帮助用户修改现有设备功能和添加新的设备适配器。

Microsoft 还提供 Mobile Internet Toolkit 设备程序包,包含一些新设备的配置文件。有了这种新设备支持,您可以迅速地在应用程序中添加对这些新设备的支持。只需下载一个设备程序包,执行测试和更新服务器,用户的应用程序就会自动支持这些新设备。请将上述简单步骤与使用 XSLT 添加对同样数目的新设备的支持所需的复杂工作进行比较。

代码复用和可扩展性

代码复用一直是软件工程追求的目标之一。Mobile Internet Toolkit 在最大程度上利用 ASP.NET 编程模型,实现了代码复用。有一种方法可以使更多的代码得以复用,那就是创建用户控件。用户可以创建一个全新的控件,也可以通过添加新方法或属性来扩展一个基本控件的功能。然后,根据需要使用这些新控件。例如,假设您创建了一个新控件,只接受正的货币数量。创建一个包含 TextBox 控件(用户在此处键入货币数量)和 CompareValidator 控件(验证数量是否大于零)的复合控件很简单。然后即可在需要使用 TextBox 控件时使用新控件。以后,如果您需要一个只接受大于 100 的货币数量的控件,可以扩展正货币控件并将比较值更改为 100。

性能

Mobile Internet Toolkit 利用 Microsoft .NET 框架,获得了其性能优点。相比之下,XSL 转换通常较慢,而且 XSL 越复杂,转换越慢。

总结

通过比较 Mobile Internet Toolkit 和 XSL,开发人员选择了 Mobile Internet Toolkit,从而充分利用 ASP.NET 的快速应用程序开发、性能和代码复用等优势。另外,Mobile Internet Toolkit 无缝集成了 Visual Studio .NET,充分发挥其优点,并且在两个层次上抽象出移动设备功能。

本文档中包含的信息代表在发布时,Microsoft Corporation 对所讨论问题的观点。由于 Microsoft 必须响应不断变化的市场条件,因此,本文档不作为 Microsoft 的承诺,而且 Microsoft 也不保证在发布之后给出的任何信息的准确性。

本白皮书仅供参考。Microsoft 对本文档中的信息不作任何明确的或隐含的担保。

用户有义务遵守所有适用的版权法。除了版权法所赋予的权利以外,未经 Microsoft Corporation 书面许可,不得以任何形式、通过任何方式(电子的、机械的、影印、录制或其他)或出于任何目的复制、存储、引入检索系统或传播本文档的任何部分。

对于本文档中的内容,Microsoft 可能拥有专利、专利应用、商标、版权或其他知识产权权利。除了在 Microsoft 书面许可协议中明确提供的内容以外,在提供本文档的同时,不提供对这些专利、商标、版权或其他知识产权的任何许可。

文中涉及的公司、组织、产品、人物和事件均属虚构。与任何真实的公司、组织、产品、人物和事件没有任何关系。

© 2002 Microsoft Corporation 版权所有。保留所有权利。

Microsoft 和 Visual Studio 是 Microsoft Corporation 在美国和/或其他国家和地区的注册商标或商标。

其中提到的实际的公司和产品名称可能是其各自所有者的商标。

posted on 2004-12-26 11:31  痛苦并快乐着  阅读(616)  评论(0)    收藏  举报

导航