WAP的编程模型是以Web编程模型为基础的。因此在阅读本章之前,读者应该对Web编程模型有一定的了解。下面介绍WAP网络构架、如何搭建开发与测试环境和使用WAP的开发工具。在对WAP的概念有了初步了解之后,再来学习书写静态WML页面、使用服务器端脚本语言动态输出WML,在WML页面中显示中文和动态输出WBMP图像。
一、WAP整体简介
WAP
应用环境是一个通用的应用开发环境。它支持在不同无线承载网络上开发和运行
WAP
应用服务。这个应用环境的基础是现有的
Internet
技术。
WAP
应用环境
WAP体现为一种全面的和可扩展的协议,可应用于:
任何具有支持WAP协议的移动设备,如各种手持无线设备。 任何现有或正在设计中的无线服务,如SMS、CSD、USSD和GPRS。 任何移动网络标准,如CDMA、GSM或UMTS。 大部分现有的Internet应用服务。 WAP应用环境是一个通用的应用开发环境。它支持在不同无线承载网络上开发和运行WAP应用服务。这个应用环境的基础是现有的Internet技术。
WAP应用环境分为三个部分:WAP移动设备、WAP网关和信息服务器。
WAP移动设备:
WAP移动设备就是指支持WAP协议的移动用户终端。在它内部装有微型浏览器,用户可以采用简单的选择键来实现服务请求,并以无线方式发送和接收所需要的信息。WAP移动设备显示按照WML(Wireless Markup Language,无线标记语言)格式化后的各种文字图像数据。一个典型的WAP移动设备就是WAP手机。与普通手机相比,WAP手机除了内置的微型浏览器以外,还有内置的Modem。用户是通过拨号的方式连接到WAP网关的。这个过程与使用个人电脑和Modem连接到Internet没有什么大的区别。因此在使用WAP手机的过程中,设定拨号号码和网关的IP地址是不可缺少的。
WAP网关:
它主要完成两个功能:实现WAP协议与Internet协议之间的转换;WML内容编码和解码。通过将WAP用户的请求转换为HTTP请求完成请求代理过程,通过对返回的内容进行编码压缩来减少网络数据的流量。既然WAP手机使用的是拨号连接网关,那么也就意味着不一定要连接到移动提供商的网关上才可以连接到Internet。对于有条件的个人、公司或企业完全可以建立自己内部的WAP网络。
信息服务器:
信息服务器为客户提供基于WAP的各种服务。现在Internet上的很多应用已经成功地移植到WAP上。例如:股票交易、天气预报、车船时刻表等。一些专业应用也正在向WAP转移。例如:SMTP服务、POP3服务、Telnet服务、FTP服务等。
WAP应用环境在于为应用开发人员和营运商提供了在不同类型的网络、数据、终端上进行服务的新途径。WAP标准在设计时将应用要素与使用的传输数据类型独立开来,使一些应用的承载网络的转移(如从SMS、CSD转为GPRS)成为可能。
WAP
与Internet
的对比
层叠排列的WAP协议体系为无线装置的应用开发提供了可扩展、可延伸的环境。每一层协议或其他服务和应用程序可与它下一层协议直接对话。通过精心设置的一系列接口,外围服务和应用程序可以利用WAP体系提供的各种功能,包括直接使用会话层、交易层、安全层、传输层等。
Wireless Application Environment(WAE)无线应用环境。 WAE是建立在移动技术与WWW结合基础之上的应用环境,目的是为营运商、服务提供商的服务和应用程序建立一个交互操作环境,使他们可以灵活地接入不同平台。WAE包含一个微型浏览器,具有以下功能:
· 无线标记语言WML:一种轻型标记语言,类似HTML,专为手持终端做了优化。
· WMLScript:轻型的脚本语言,类似于JavaScript。
· 无线电话应用:电话服务及其编程接口。
· 内容格式:精心设计的数据格式,包括图像、电话号码簿和日历信息。
Wireless Session Layer(WSP)无线会话层。 WSP向WAP应用层提供两个会话服务的统一接口:一个是在传输层协议WTP之上的面向连接的服务,另一个是在安全或非安全数据报服务(WDP)之上的非连接服务。WSP系列协议针对低功率、长等待时间的网络数据载体进行了优化,它现在由浏览应用的服务组成(WSP/Browsing),WSP/B允许使用WAP Proxy连接WSP/B的客户端和标准的HTTP服务器,具有以下功能:
· 无线编码中的HTTP/1.1功能和语法。
· 较长时间的会话状态。
· 会话随着会话者移动而暂停或继续。
· 建立一个传送可靠或不可靠的数据的通用设备。
· 协议的协商。
Wireless Transaction Protocol(WTP)无线传输协议。 WTP运行于数据服务之上,提供了一个适用于“轻体”客户(移动终端)的面向传输的轻型协议。WTP可有效地运行于安全或非安全的无线数据网络,具有以下功能:
· 三个等级的传输服务;
· 不可靠的单向请求。
· 可靠的单向请求。
· 可靠的双向请求-回答传输。
· 可选择的用户-用户连接,WTP用户自行确认每次收到的消息。
· 可选择的带外数据确认。
· PDU连接和延时确认,以减少传送的消息数量。
· 异步传输。
Wireless Transport Layer Security(WTLS)无线传输安全层。 WTLS是基于工业标准——TLS(以前称为SSL)上的安全协议,同样针对移动通信使用的窄频信道进行了优化,它应该与WAP传输协议同时使用。应用程序可视自己的安全要求和网络特点,选择启用或不启用WTLS功能。WTLS的功能如下:
· 数据的完整性:WTLS具有保证终端与服务器间传送的数据前后一致且不会损毁。
· 传输的保密性:WTLS保证端到端数据的保密性,并可为数据传输过程的中介方读取。
· 认证:终端至服务器的校验。
· “拒绝服务”保护:检验和拒绝重复和未正确识别的数据,以保护上层协议。
此外,WTLS也可用于终端和终端之间的安全通信,如为交换电子交易卡提供认证。
Wireless Datagram Protocol(WDP)无线数据报协议 WDP可运行于各种网络的数据载体。作为一种通用的传输协议,它将传输端口根据底层数据载体进行改造,从而为WAP体系中的上层协议提供统一的接口,使会话层、应用层独立于底层的无线网络。如能保持传输层接口和基本功能的一致性,就可通过中介网关使广泛的交互操作得以实现。
Bearer 数据载体 WAP协议在设计时的目的是使它可独立运作于各种不同的数据载体之上,如SMS(短消息、CSD、封包数据等)。由于数据载体因承载量、容错率和延迟的不同而有不同的质量,WAP协议就需要补偿或容忍这些特点。WDP集中处理体系中其他层次协议与数据载体的交流,除现在已经可以支持的数据类型外,随着新的数据服务在移动市场出现,它也会不断发展以支持更多的数据类型。
Other Services and Applications 其他服务与应用 通过一系列精心设置的接口,WAP协议还可以支持其他服务和应用程序使用WAP提供的功能。外围应用程序可直接切入会话层、交易层、安全层和传输层,虽然这类有价值的应用未在WAP标准中界定。WAP协议可用来开发诸如电子邮件、日历、电话号码本、手写板、电子商务和黄页、白页等各类服务等。
Wireless Telephony Application 无线电话应用。 WAP标准还定义了一个名为WTA的协议。它是一个面向通信的技术,使WAP能够融合电信网络中先进服务,比如智能网络(Intelligent Networks)。在融合基于浏览器的WAP用户界面,WTA能够不用修改终端就直接享受基于智能网络的服务。
虽然WAP的整个结构层次比较复杂,但是由于底层的大部分工作都是由电信部门和移动提供商来完成的,因此总的来说只需要关心应用层的开发工作。在进行WAP开发时,各个部分的协议与Internet上有着一定的对应关系(如图2-3所示)。这使得可以利用现有的Internet服务器也能实现WAP相关服务。
服务途径
有以下几个途径来实现WAP服务:
Web服务器传送原有的HTML网页,由HTML过滤器转换成WML格式,再由WAP 代理服务器处理后形成二进制的WML数据流送往客户端。当然,WAP代理服务器可以集成HTML过滤器的功能。 Web服务器直接将WML网页传送到WAP代理服务器,由服务器处理后形成二进制的WML数据流送往客户端。 对于前面的情况,WAP代理服务器是在移动提供商一方。其实WAP代理服务器也可以在内容提供商一方。内容提供方式还是和上面所讲的方式相同。 由WTA 服务器直接将二进制的WML数据流送往客户端。这种方式主要是用于提供电话呼叫服务。
对于内容服务商来说,主要是考虑内容的提供方式。第一种方式的优势是不需要对原有的网络及其网页进行过多的修改。HTML到WML的工作由HTML过滤器直接完成。但是缺点也是很明显的。例如:
现有的过滤器只能做有限的转换,复杂的HTML网页就很难满意地完成。 由于HTML网页比WML网页复杂,因此传输的效率不是很高。 增加中间环节,降低了反应速度和工作效率。 采取第二种方法就需要编写专门的WML页面。这并不意味因为需要编写专门的WAP服务程序,就必须将所有服务程序改写。完全可以利用以前的Web服务程序,做适当的修改就可以达到目的。
对于内容服务商来说,在选择WAP的时候经常会遇到的两个问题就是:
需要特殊的WAP服务器吗? 需要特殊的WAP代理服务器吗? 回答是:既不需要特殊的WAP服务器,也不需要特殊的WAP代理服务器。其实可以通过配置Web服务器来实现WAP服务,因此这个时候可以将Web服务器称为“WAP服务器”。如果没有特殊的要求,那么完全可以使用由移动商提供的WAP代理服务器。若想实现企业内部的 WAP网络或者考虑到安全问题的时候,就需要考虑采用独立的WAP代理服务器。采用独立的WAP代理服务器将会给用户带来麻烦。因为他们不得不频繁地更改手机上的设置,来进行服务切换。本质上来说,WAP设备只要接收到可以被解释的二进制WML数据流,那么无须考虑这个数据流的提供者到底是谁。
网络应用构架
WAP网络应用构架还是沿袭传统的服务器—客户端模式,只是中间增加了一个网关。
客户端一般都是WAP移动设备,很可能是一部WAP手机。它们由不同的公司生产,具有各自的特点,对WML和WMLScript的支持情况也千差万别。现在已经上市的WAP手机有Nokia 7110、Ericsson R380、Motorola L2000www。以后随着更多厂家的加入,将有更多的WAP手机出现。一般来说手机的屏幕希望足够的大,分辨率足够高,否则浏览网页也将是十分困难的。由于屏幕大小的不一样,对WML和WMLScript的支持情况大不一样(就如同Internet Explore和Netscape对HTML标记的支持也是不一样的),在某种意义上需要针对不同的手机制作不同的网页,使得客户能够舒适地浏览页面。另外,WAP手机上网存在的安全隐患也需要加以考虑:散射在空间中的电波也会将用户的口令、密码等等敏感信息散射在空间中。
WAP网关就是在前面所提到的WAP代理服务器。它负责HTTP协议与WAP协议之间的互相转换,其主要功能有两个:
将取得的WML页面编译压缩成二进制WML流并发送给客户端。 将从客户端过来的二进制请求翻译成HTTP请求并执行该请求。 网关在整个构架中有着十分关键的作用,是连接客户和服务的桥梁。它可以在移动提供商一方或者在WAP服务提供商一方与应用服务器集成在一起。这两种方式都要根据具体的情况加以采用和实施。
在服务端开发应用程序和以前的Web服务开发没有太大的区别。只要符合CGI(Common Gateway Interface)标准就可以,无论是用ASP、JSP、PHP、Perl、ISAPI、NSAPI、C、C++、Basic、Delphi或者Servlet都是一样的。因此这给开发人员以很大的自由。其中的具体细节将在后面的章节中讲解。
二、测试环境
WAP
开发中的一个重要环节就是搭建测试环境。对于
WAP
初学者来说,了解测试环境是十分必要的。
WAP
的测试环境可以分为三种:浏览环境、模拟环境和实际环境。以下就分别介绍这三种测试环境。
浏览环境
建立浏览环境十分简单,网上提供很多免费下载的WML浏览器。例如:WinWAP就是一个在Windows操作系统下运行的WML浏览器。只要输入提供WML内容服务的URL地址,就可以浏览WML页面。操作过程和Internet Explore十分像。
这种方式的优点是实施简单迅速,操作简单易学。但是由于是Windows下的浏览器,支持大部分的WML标记,窗口界面可以扩大和缩小,因此所看到的情况和手机上的模拟差别很大。另外也不提供编辑、编译和调试集成环境。
模拟环境
模拟环境是通过使用由移动电话公司所提供的WAP手机模拟器来实现WML浏览。在网上能免费下载的模拟器有Nokia WAP Toolkit、Ericsson R380 Emulator、Ericsson WapIDE、UpPhone UP Simulator、Motorola Mobile ADK等。其中Nokia、Motorola和Ericsson提供了比较完整的集成开发环境。
这种方式提供了集成环境和WAP手机基本一致的模拟器。但是很难说所使用的模拟器和其产品完全一致的,并且没有网关的参与(有的模拟器可以设置网关),因此这是一个不完备的检测,特别是与WTA(Wireless Telephony Application)相关的服务没有办法进行检测。对于开发阶段来说,这样的环境就已经足够。
实际环境
根据网关所在的位置不同,实际环境的建立分为三种:
使用移动营运商的拨号和网关。 使用公共网关(在国际互连网上,有一些这样的公共网关)。 使用自己设立的网关(通过拨号上网,使用简单的拨号接入软件和免费的网关来实现)。 但是相比之下,使用移动营运商提供的WAP网关,费用要比其他两种方式要少。例如:移动营运商规定WAP上网费用是0.2元/分钟。如果采用直接拨号到自己设立的网关,那么至少要交纳市话费用0.5元/分钟。除非有特殊的要求(例如:建立企业内部的WAP网络或者考虑到安全问题),否则还是捡便宜的用。
在国内根据所使用的SIM卡不同可以分为:“联通”和“移动”(原中国电信的一部分)。由于国内各个省市的电信部门各自布置有关的WAP设备,因此即使是属于一家,所采用的WAP设备也不尽相同。
实际环境的建立和以上的情况很相似。购买一些主流的WAP手机,开通WAP服务。在Internet上有一台Web服务器可供测试使用。将WAP手机连接到现有的网关,就可以真正地享受WAP服务了。当然,目前每一次测试可能要交纳一定的费用。
由于国内的WAP网络还处在实验阶段,并没有真正地推向市场。因此网络的稳定性比较难保证。在开发阶段,如果能有移动营运商的技术合作那是最好的。这样一旦有问题可以随时询问。
三、书写你的第一个WML页面
这里假设读者已经拥有了一台电脑,并且已经安装了Windows NT Server 4.0版本(对于个人来说一般选择独立域服务器安装),通过电话线能够接入到Internet。在这个基础上来讲述如何搭建WAP平台。
首先要给Windows NT Server打上Server Patch 4.0。一般在网络上可以找到Server Pack 4.0版本。然后安装Option Pack 4.0,里面有Internet Information Server 4.0(以下简称为IIS)。如果拥有Visual Studio 6.0企业版,这个的问题就很简单了:直接安装Back Office就可以解决问题。Back Office里面含有很多服务组件。其中就有Internet Information Server和FrontPage Server Extension。安装完成之后,现在的电脑就是一台为开发而使用的服务器。 翻到本书后面的WAP资源一章,找到下载WinWAP 2.2的网址。从网上下载一个WinWap 2.2,将它安装在电脑上。在完成WML浏览器安装后,试着启动它。如果一切正常,它将直接通过Internet连接到提供商的WML主页上。在菜单里可以找到 “View Source”(查看源文件)这个选项。通过阅读别人的WML页面进行学习,是一种很好的学习方式。
使用记事本(或者读者喜欢的文本编辑器)输入一个最小的WML页面,如图2-10所示。输入的时候注意,第一行要顶着开头写,不要留下空白或者空行。否则,在其他模拟器浏览下就会出现问题。WML对页面书写的要求比较严格,因此最好按照要求来做,否则后面很麻烦。
"http://www.
wapforum.org/DTD/wml_1.1.xml">
Hello World !
写好后将它保存为hello.wml。注意:如果使用记事本,那么它将会无视输入的文件扩展名,而直接以txt作为文件的扩展名。因此还必须手工修改文件的扩展名。
启动IIS服务器管理,展开服务器下的子目录(如果无法展开,可能是WWW服务没有启动。从“服务”中启动WWW服务,或者直接在IIS Console中启动服务)。
在 IIS服务器管理 找到“默认的Web站点”,用鼠标右键点击。在弹出菜单中找到“New”(可能由于中文或者英文版本而略有不同),再在子菜单里找到“虚拟目录”。 点击它,就会弹出一个对话框。第一页是输入别名,例如:
wap。第二页是确定hello.wml所在的子目录。第三页是确定访问的权限,可以先跳过这一页。现在可以点击“Finish”,虚拟目录就建设完成了。 在“默认的Web站点”下就会多出一个“wap”目录。用鼠标右键点击它,在弹出菜单中选择属性“Properties”,就会弹出一个对话框,里面有好多配置选项。选中“HTTP标题”,在下面有MIME映射类型“MIME Map”,点一下“文件类型”按钮,就会弹出一个配置菜单。点“新增加类型”,在对话框的第一行输入:“wml”,第二行输入:“text/vnd.wap.wml”,然后按“确认”按钮。在对话框中就多了一个:“.wml text/vnd.wap.wml”。好了,确定退出整个IIS Console。以后所有与WAP相关的文件映射都是从这里输入的。
在确保WWW服务已经启动的情况下,打开WinWAP,马上Stop它。在URL栏里输入:“
http://127.0.0.1/wap/hello.wml”,并按下回车。等着欣赏第一个WML页面。(注:127.0.0.1是本机缺省的IP地址,并不需要对计算机进行特殊配置) 如果顺利地看到了“Hello World !”说明已经成功地走出了第一步。下面就要对WML做一个初步的讲解。在讲解之前,先来认识一下模拟器。本书后面的程序都将以Nokia WAP Toolkit 1.2为主要的测试工具。
四、简单地介绍Nokia WAP Toolkit的安装与使用整体介绍
Nokia的WAP工具包有图形开发环境,浏览器和WML/WMLScript编译器。Nokia工具包目前只能在Windows NT 4.0上运行。要注意的是Nokia WAP Toolkit需要首先运行Java 2 runtime才能使用,所以需要先到Sun的Java站点(java.sun.com)去下载一个Java 2 SDK或者Java 2 Runtime Environment(JRE)才可以安装使用Nokia WAP Toolkit。
安装完之后,可以看到WAP工具包程序组中包括一个工具包IDE,一个很好的关于WAP、WML和WMLScript的详细文档以及工具包本身。该工具包可以在同一个应用环境下进行编辑、修改和测试WML/WMLScript文件等工作。
用户可以通过直接装载WAP应用的URLs或通过WAP网关进行浏览网页。Nokia还出售一个独立的基于WAP Server的Java Servlet。该产品将应用服务器功能和WAP网关功能集成到一个产品中。总体来说,Nokia WAP Toolkit相对显得较成熟、实用。
安装指南
在从Sun的Java站点下载了Java运行环境以后就可以开始安装Java运行环境:先安装jdk1_2_2-001-win.exe,然后安装jre1_2_2-001-win-i.exe,最后安装hostpot_1_0_1-win.exe。
安装Nokia WAP Toolkit:在安装了Java运行环境之后,直接运行Setupex12.exe。如果还没有安装Java运行环境或者安装了不合适的Java版本,安装程序都会给出提示并自动退出程序。
启动
从“开始”菜单栏中找到“Nokia WAP Toolkit”,选择“Toolkit”。Nokia WAP Toolkit就启动了。由于Nokia WAP Toolkit是使用Java编写的,因此启动的时候过程比较缓慢。
左边是集成开发环境,右边是6150界面的模拟器。在启动Nokia WAP Toolkit之后,它自动调用一个工具包自带的初始化页面,并将其文本内容显示在“WML Deck”一栏中。
功能介绍
总的来说Nokia WAP Toolkit的使用并不是很复杂。只要懂得WAP中的一些概念,学习起来还是很容易的。其他模拟器的基本功能都十分相似,在本书中不再做详细介绍。
File 主要是关于文件操作的功能。“New”用来生成一个新文件。注意到Nokia WAP Toolkit支持WML、WMLScript和WBMP文件的编辑。“Open”是用来打开文件,“Save”用来保存当前文件,“Save As”是将文件另外保存。
Edit 主要是和编辑相关的功能。这和一般的写字板的编辑功能没有太大的区别。需要注意的是:无法粘贴其他Windows窗口的文本或者拷贝当前的文本到其他Windows窗口。
Go “Back”返回到上一个页面。“Home”返回到初始页面。“Refresh Card”刷新装入卡片。“Reload Deck”重新装入页面。“Stop Loading Deck”停止装入页面。在装入的过程中,用户可以随时停止装入。“Load Location”给模拟器指定一个URL地址。如果联合Web服务器做测试,那么这将是一个经常使用的功能。“Load File”从文件装入页面。
Toolkit
“Toolkit”中主要是关于开发环境的一些设置选项。“Show”中的选择项控制着在界面上需要显示哪些栏目。其中“Message”是关于浏览器的记录;“Variables”是关于当前页面中的变量记录;“History”是关于浏览器的历史记录;“Book Mark”主要记录了书签地址;“WML Deck”是当前WML页面的文本内容;“Session”显示了浏览器与服务器之间的交互状况。
“Clear Bytecode Cache”是一个非常有用的功能。如果不清除Cache,那么模拟器会自动调用上次的页面。特别是做调试的时候,如果对页面的错误已经做了修改,但是忘记了清除Cache,那么在使用模拟器浏览的时候,它仍然将使用上次保存在Cache中的错误页面。所以每次修改之后,不要忘了选择这个功能。实际上,WAP手机中也有这个功能。如果使用手机测试的时候忘记了这一点,那么将永远找不到正确答案。有关Cache的问题,在后面将有详细的讨论。
“Add Bookmark”增加一个书签。如果在输入URL地址的时候觉得比较麻烦,就可以使用这个功能。在Nokia 7110中,也有同样的书签功能。
“Preference”是配置一些比较高级的选项。在“Communication”中,可以设置模拟器是通过HTTP直接访问WML内容服务器,还是通过网关访问。当通过网关的时候,需要对网关进行详细的配置。“Encoding”是选择编码方式。在使用快速编码的时候很容易出现编译错误,可以把这项取消。在“General”中是其他一些配置,一般不影响模拟过程。
Help
主要是和版本、帮助文档相关的功能。Nokia WAP Toolkit有比较完整的文档,可以从中得到很多帮助。如果不嫌PDF和英文麻烦的话,阅读这些帮助对读者来说应该不是一件很难的事情。