在移动Web应用程序的世界中,对象存在一些不足。WURFL是一个开源项目,成功填补了这些问题留下的空白。随着越来越多的ASP.NET实现WURFL,将讨论其中的三种:RedCircle、Wurfl.Marg和wurflAPI(也称为WURFL作为dotNetAPI)。
WURFL基于匹配请求对象(服务器上)识别的用户代理字符串,与包含地球上所有已知无线设备信息的“雄心勃勃的配置文件”相匹配。结果节点被解析成能力集合,枚举移动浏览器的已知属性。这些属性包括属性组(完整分解),例如:
这些属性可以查询以条件渲染不同设备(手动实现),或者如果支持自适应控制行为并且使用了移动控件,页面将根据浏览器的能力自动以不同的方式呈现。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项目。它似乎不支持自适应控制行为。