内容:
. 介绍
. WAP!
. WML
. 配置 Apache
. 开发仿真
▲ 介绍
无线因特网理论上可以为任何人在任何地点服务。把信息通过无线世界发送到移动电话或PDA 和传统的因特网服务很相似但是却不是完全一样。因为两者在物理尺寸和通信速度以及其他各方面都有很多种差别。因此人们为无线世界开发了新的协议。WAP 和 WML 是其中的脊梁骨。
把Apache 放入其中是很自然而且很合身的。
▲ WAP!
为Apache 配置无线传送数据的能力相对比较简单。有线因特网世界传送数据是用TCP/IP协议的。这个协议帮助数据包通过网络上复杂的路径,为了维护系统上的通讯流量有时候需要经常改变路径。无线通信设备的供应商,像Nokia 和 Motorola,意识到采用和有线网络不同原理的数据路由系统系统十分必要。
这样就诞生了 WAP(无线应用协议Wireless Application Protocol)。因为无线空间比之有线空间与生俱来的脆弱性,WAP 被设计成能安全地把数据“推”到各种不同的无线网络拓扑。理论上任何操作系统都能支持WAP,但是,事实上需要WAP 功能的都只是一些体积小的,像移动电话和PDA 之类的东西。
尽管WAP 作为一个协议能够推送当前的各种数据格式,像HTML,但是随着WAP设备的小型化,对这些各种编码格式的文档的呈现也越有限制,因为开发这些格式时,人们的思维还处在桌面显示器时代。这样,就需要一个WAP 伴侣,试之在无线设备的狭小空间内能很好地展示这些文档。
▲ WML
在圣经时代,如果有人在写关于在无线网络上传输内容的文章,他或许曾经说过:“就像无线产生WAP,WAP 结果产生WML "。WML(无线标记语言Wireless Markup Language)对于那些曾经在无数的Web 页面背后用HTML 工作过的人来说,激起的是同一根琴弦。实际上,WML 是XML 的一个特别的实现,定义了一种适应小型设备的标记语法和结构。
HTML 和WML 在操作上稍有不同,HTML 的前提是目前无处不在的“页面”,而WML 的前提是“一手牌”。实际上,HTML 文档代表一个简单的Web 页面,而WML 文档代表一手牌,可能有一张或更多张牌。对这手牌的浏览主要是牌的交换,无论是按顺序还是按超链接。
请记住,在背后驱动WML 的是一种小型甚至是微型的屏幕,不能显示很多信息,有时候只能四五行字,这样除了偶尔的几个小徽标外,就没有留给图像的空间了,许多文本是一样大小的,而且屏幕经常是单色的。因此,在无线网络中真正的实力不是复制有线空间里的内容,而是面对小型的,热点的小片数据,像天气预报,体育比赛比分或者旅游预订。
象HTML 一样,WML 文档建立时是一种文本文件。虽然我们不是开WML 讲座,但是,还是先来看简单的WML 的一手牌,来感受Apache 能发送给无线设备的数据类型。我们建立的这手牌包括两张牌:第一张是欢迎,并且链接到第二张,第二张是一些虚假的WML 页面。
I can\t say much, since this screen is tiny.
Why don\t you visit my favorite WAP links.
These are some WAP sites I would love, if they existed.
Tiny cat pictures
The weather
One click jelly bean ordering
尽管和HTML 不一样,以上WML 的样式和HTML 还是十分相似的。如果我们曾经在实际的电话里看到过以上的WML 页面,假设是通过一个正确配置的Apache 服务器,结果就可能是这样:
(图形)
▲ 配置 Apache
大多数情况下,Web 服务器不需要为发送WML 页面做太多的调整。对Apache 来说,只需要让他根据文件名的后缀来认识文件的MIME 类型就可以了。Apache 会把MIME 类型发送给浏览器,假设浏览器认识WML,它就知道怎么去处理WML 类型的文件了。
最新版本的Apache 能通过文件httpd.conf 来完全配置。通过文本编辑器,找到定义MIME 类型的那节:
#
# AddType allows you to tweak mime.types without actually editing it, or to
# make certain files to be certain types.
#
# For example, the PHP3 module (not part of the Apache distribution)
# will typically use:
#
#AddType application/x-httpd-php3 .phtml
#AddType application/x-httpd-php3-source .phps
AddType application/x-tar .tgz
以下可以为Apache 增添WML 类型了,我们简单地粘贴如下:
#WML/WAP types
AddType text/vnd.wap.wml .wml
AddType application/vnd.wap.wmlc .wmlc
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlscriptc .wmlsc
AddType image/vnd.wap.wbmp .wbmp
基本的WML 文件使用MIME 类型 text/vnd.wap.wml。在以上的配置中,我们告诉Apache 当文件名以 .wml 结尾时,发送这种MIME 类型。同样地,另外的WML 变体也有对应的MIME 类型。.wmlc 表示压缩的WML 文件,.wmls 以及 .wmlsc 分别表示 WML 脚本语言和压缩的WML 脚本语言,更进一步,.wbmp 表示无线的 bitmap 文件,或者 WBMP,无线设备支持的一种图像格式。
配置好httpd.conf 后,Apache 需要重新启动才能让 MIME 设置生效,一旦重新启动,Apache 就可以把WML 以及相关文档发送到无线设备上了。
▲ 开发仿真
你或许会想,配置Apache 在理论上如此完美,那么我们在没有无线电话的情况下,怎么知道效果呢?我们不是在瞎搞吗?
幸运地是,我们没有。如果你在开发WML,并且想要测试你的Apache 配置,检查phone.com 的 UP.SDK包,它包含了十分强大而方便的UP 仿真器。UP 代表"Unwired Planet",它会在你的桌面上显示一个虚拟的蜂窝电话,你可以在因特网(用你普通的有线方式联结)上联结任何的WML 页面。
这个仿真器甚至包含了可以替换的“皮肤”,或者叫做不同型号的移动电话的模板,你可以看到WML 页面在不同的屏幕大小和不同的供应商的产品型号下的表现。这款仿真器对于原型开发WML 的页面来说真的是个好东西。