WURFL在移动Web应用程序中的应用

在移动Web应用程序的世界中,对象存在一些不足。WURFL是一个开源项目,成功填补了这些问题留下的空白。随着越来越多的ASP.NET实现WURFL,将讨论其中的三种:RedCircle、Wurfl.Marg和wurflAPI(也称为WURFL作为dotNetAPI)。

WURFL基于匹配请求对象(服务器上)识别的用户代理字符串,与包含地球上所有已知无线设备信息的“雄心勃勃的配置文件”相匹配。结果节点被解析成能力集合,枚举移动浏览器的已知属性。这些属性包括属性组(完整分解),例如:

  • product_info - 人类可读的品牌和型号名称以及其他通用信息
  • wml_ui - WML浏览器的用户界面
  • chtml_ui - 紧凑HTML的用户界面
  • xhtml_ui - HTML/XHTML-MP浏览器的用户界面
  • css - CSS问题
  • ajax - 支持的移动Ajax功能
  • markup - 支持的标记语言
  • cache
  • display
  • image_format
  • bugs
  • wta
  • security
  • bearer
  • storage
  • object_download
  • drm
  • streaming
  • wap_push
  • mms
  • sms - 二进制SMS和SCKL功能
  • j2me
  • sound_format - 支持的声音格式
  • flash_lite - Macromedia/Adobe Flash Lite
  • transcoding - 处理滥用的转码器
  • rss - 本机支持RSS源
  • pdf - 本机支持PDF文档

这些属性可以查询以条件渲染不同设备(手动实现),或者如果支持自适应控制行为并且使用了移动控件,页面将根据浏览器的能力自动以不同的方式呈现。Paulo Gomes,RedCircle的前成员,在这里提供了自适应控制行为的良好实用示例。

测试

由于需要一些指标,可以在Global.asx文件中初始化的对象在页面代码后端初始化,以便计时处理。代码没有以任何方式优化(不要以其当前形式使用);它被设计为仅通过时间日志进行审计。显示的时间结果不能绝对认真对待,但可以比较模式和相对值。文件部署到运行Windows XP Professional Version 2002 Service Pack 2和IIS 5.1的虚拟PC上。

在大多数情况下,预计该项目将由桌面计算机浏览(用于评估);包含的WURFL数据文件没有包含所有桌面用户代理,并将使用通用值。这本身就是代码在生产中运行时的一个差异,因为它增加了查找通用值的查找次数。

测试计划相当简单;对一般比较感兴趣,但评估缓存和数据处理变化的处理是重要的功能。测试包括:

  • 获取当前设备的属性
  • 获取同一设备的后续属性
  • 获取另一设备的属性
  • 获取另一设备的后续属性
  • 更改数据文件

测试步骤如下:

user agent: 当前设备 capability: mobile_browser data modified: false user agent: 当前设备 capability: xhtml_table_support data modified: false user agent: 当前设备 capability: ajax_support_javascript data modified: false user agent: 当前设备 capability: resolution_width data modified: false user agent: NokiaN92-2 capability: mobile_browser data modified: false user agent: NokiaN92-2 capability: xhtml_table_support data modified: false user agent: NokiaN92-2 capability: ajax_support_javascript data modified: false user agent: NokiaN92-2 capability: resolution_width data modified: false user agent: iPhone capability: mobile_browser data modified: true

结果如下(以毫秒为单位):

观察

RedCircle除了第一次加载(测试#1)之外,表现非常好;大多数时间都不到一毫秒。为了实现这一点,在Web.config文件中添加了一个capabilitiesWhiteList。

在RedCircle框架的先前测试中,断言有一个机制在数据更改时重新加载数据。在这些测试中,情况并非如此:在测试#9中,没有一个WURFL实现在WURFL.xml文件被修改时重新加载数据。

API易于使用,尽管需要在web.config文件中进行大量配置。虽然本文没有测试,但该框架具有纯香草自适应控制行为实现,如果输出WML,特别有用。

Marg在整体上表现良好;测试#5的结果似乎是一个异常。API使用起来有点复杂,但随着Request.Browser被分配,内置的自适应控制行为基于WURFL设备列表运行。

与其他实现相比,有更多的紧密耦合。必须从消费项目中引用Log4net,并且在web.config文件中需要进行更多修改。

这种实现表现最差;不确定它是否还在维护,尽管它是一个Sourceforge项目。它似乎不支持自适应控制行为。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485