“一统江湖,千秋万载”,金庸武侠小说《笑傲江湖》中的一幕,在现实生活中得到了重演。明眼人不难看出,中移动就是修炼武林秘笈《葵花宝典》的“东方不败”。 近日,关于中移动正准备实行新政策,对免费WAP进行治理的消息纷至沓来。一时间,WAP人心惶惶—— 跟中移动合作,不但要遭致严格管制,利润可能也会受到影响;而不与中移动合作,将被执行按流量计费,价格相当于包月(每月15~20元)的10倍,如此一 来估计用户流失率在80%以上。在盈利模式尚不明朗的情况下,这一招对免费WAP是致命的,特别是对一些小公司而言。受此影响,不少公司纷纷开始谋求转 型。
WAP内容网站+公共网关、WAP内容网站+WAP网关。
WAP网站是寄存于Web服务器上的,是因特网业务向移动终端的延伸,所以WAP网站需要Web服务器,WAP网站可以和Web网站共用同一服务器,也可以独立使用。
WAP内容网站+租用网关
这一种方案投入较少,而且维护费用少,但是要支付服务费,适合一些中小企业。WAP网关选用一些开放的公共网关如:
中国移动通讯或中国联通或其他公司的WAP网关。由于WAP网关在WAP应用系统中起到翻译作用,实现WAP协议和HTTP协议之间的转换,所有经过网关的信息在WAP网关上都可以看到。对于银行、证券等对安全性要求很高的企业,采取这种租用网关的方案则交易的安全性无法保证,所以对于安全性要求高的企业,必须在企业内部建立自己的WAP网关,从而免去由于将WAP网关托管到ISP或电信部门而受到的恶意攻击。
WAP内容网站+WAP网关
这一种方案投入较多,而且维护费用高,适合一些大型有实力的企业。对于银行、证券等企业,则必须采用这种方案,以保证交易的安全性。
支持WAP功能的移动电话越来越多了。因此,你也应该考虑一下建立自己的WML网站了,本文要介绍的是如何建立PHP/WML页面的站点,使用MySQL数据库,可动态更新站点的内容,具体例子是某个学院的教授授课时间和测验时间表。一点也不复杂哦 :-)
在开始之前,你应该准备好以下东东:
1.你已经正确安装好PHP和MySQL,并且有使用两者编程的经验。
2.你有SQL的相关知识
3.你运行的是Apache并且可写.haccess文件;或者你运行IIS并且你可以增加映射(或者你可以让系统管理员帮你的忙);
4.你有WML的相关知识;
好了,第一步首先让你的服务器知道使用PHP来处理WML文件,以下介绍如何做到这一点。
设置服务器
如果你使用的是Apache,你必须在你的目录中找到一个.htaccess文件。然后,加入以下行:
AddType application/x-httpd-php3 .wml
如果你找不到该文件,可以加入一个,并且加入以上行,放在你的目录中。
如果你使用的是IIS,你必须做一些改动,与安装PHP时差不多:看一下.php和.php3扩展名的映射,并且为.wml加入同样的映射处理。
通常你会发现PHP被映射到:
C:\php\php4isapi.dll
或者
C:\php\php.exe
准备工作
如果你使用的是微软的操作系统,你可以安装NOKIA的开发工具包。它可以检查你的语法,并且让你通过一个类似电话的界面来预览WML页面,该工具包还带有关于WML和WML脚本的参考文档。如果你的电话没有WAP支持,或者你不能使用一个WAP网关,这可以帮上大忙哦。
要下载这个工具,你首先必须以一个WAP开发者的身份在这个网站登记(http://www.forum.nokia.com/main/0,6668,1_1_4,00.html),要记住的是你需要Java2 Runtime Enviroment的支持(Java2运行环境的支持)。你可以使用任何的文本编辑器来写页面。
在写任何PHP/WML代码前,你需要建好MySQL的表格。
该数据库由4个表够成。
1.professors表包括教授的相关数据;
2.subjucts表包括主题的相关数据;
3.exams表包括测验的相关数据;
4.teach表包括教授和他们所授科目的关系信息
在连接MySQL时,可通过以下的代码建立表格
CREATE TABLE professors (
Id int(11) DEFAULT '0' NOT NULL auto_increment,
Surname varchar(24) NOT NULL,
Name varchar(24) NOT NULL,
Email varchar(48) DEFAULT 'Not avaliable',
Cod_course varchar(16) DEFAULT 'Not avaliable',
Consulting_hour varchar(128) DEFAULT 'Not avaliable',
Consulting_place varchar(128) DEFAULT 'Not avaliable',
PRIMARY KEY (Id)
);
这些语句建立了professors的表结构。ID为每个教授分配了一个唯一的识别号,而且是表的主键。其它字段,Surname, Name, Email用来表示每个教授的姓、名字和e-mail地址。Cod_course为唯一识别每个科目值。最后Consulting_hour和Consulting_place表示授课时间和授课的地点。
CREATE TABLE subjects (
Subject varchar(96) NOT NULL,
Cod_Subject varchar(24) NOT NULL,
Cod_number varchar(12) NOT NULL,
PRIMARY KEY (Cod_subject )
);
Subject是科目的名字,Cod_subject是学院采用的代表每个科目的名字,它的值是唯一的,并且是这个表的主键。Cod_number是一个数字的字段,相同科目的不同课程都属于一个组,这个数字就是组的识别号。
CREATE TABLE exams (
Cod_Subject varchar(24) NOT NULL,
Id int(11) NOT NULL,
Date date DEFAULT '0000-00-00',
Time time DEFAULT '00:00:00',
Room varchar(64),
Test varchar(16) DEFAULT 'Oral'
);
Cod_subject指学院采用的代表每个科目的名字,是唯一的,ID是教授的唯一识别号,Date, Time和Room用来记录测验举行的日期、时间和地点,Test用来表示测验的类型(包括书面、口头等)
CREATE TABLE teach (
Cod_Subject varchar(16) NOT NULL,
Id int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (Id, Cod_subject )
);
在teach表中,ID是教授的识别号,Cod_Subject的含义同上,两者构成了该表的主键。
下一步是在数据库中填入一些数据,这步可以自行完成。
写PHP/WML代码
现在我们写首个PHP/WML页面,名字为index.wml
<?php
Header("Content-type: text/vnd.wap.wml");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
echo ("<?xml version='1.0'?>");
?>
"http://www.wapforum.org/DTD/wml_1.1.xml" >
<WML>
<CARD id=card1 title=UNITO/Database><P>
You can search for professors' consulting hours or for examinations timetables.
<SELECT name=choice title=Research value="1"> <OPTION selected value=exams_data>Examinations timetables</OPTION> <OPTION value=consulting_data>Consulting hours</OPTION></SELECT>
<DO type="text" label="Go">
<GO href="index2.wml#card2" method="get">
<POSTFIELD value="$(choice)" name="choice">
</GO>
</DO>
</P>
</CARD>
</WML>
第一行告诉浏览器该文件的MIME类型,如果没有头文件的话,浏览器是不懂得接收的是属于什么类型的内容,而且有了这一行的话,文件的扩展名就不重要了。对于你想写一个多样式的页面,这个功能是十分有用的,你可以通过一个脚本来检测设备或者它的性能,然后根据浏览器的类型返回WML或者HTML。
检查PHP是否已经装有短标签支持。如果是的话,你可以做一个类似<?xml version='1.0'?>的声明,并且将它嵌套到PHP代码中以免混淆。
该页面的余下代码只是让你搜索测验的时间或者咨询的时间。选择的项目会记录在$choice变量中。
下一页称为index2.wml,让你选择是通过科目还是姓来查询数据库。
Header("Content-type: text/vnd.wap.wml");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
echo ("<?xml version='1.0'?>");
?>
"http://www.wapforum.org/DTD/wml_1.1.xml" >
<WML>
<CARD id=card2 title="Kind of research">
<P><BR><?php
echo ("You are checking ");
if ($choice == "exams_data") {
echo (" examinations timetables.<BR>\n");
} else if ($choice == "consulting_data") {
echo (" consulting hours.<BR>\n"); <BR>} else { <BR>echo ("I don't know what and there is some problem.<BR>\n");
}
?>
<P><BR>You can search by surname (either exact or partial) or by subject (either exact or partial).<BR><BR>Select the kind of research. <BR><P>
<SELECT name="<?php echo (" $choice?);<br> ?>" value="surname" title="research"> <OPTION sel
ected value=surname>professor's name</OPTION> <OPTION value=subject>subject</OPTION>
接着用户必须在下一个文件(index3.wml)中输入。我们要求用户输入科目的名字或者教授的姓。你要留意一下变量在页面之间是怎样传送的。语法看来有点复杂,不过可以让你了解整个过程是怎样通过几个文件来完成的。
<?php
Header("Content-type: text/vnd.wap.wml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo ("<?xml version='1.0'?>;");
>;
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml" >; <WML>
<CARD id=card3 title=Name>
<?php
echo ("<p>Insert ");
if (${$choice} == "surname") {
echo ("professor's surname (or part of it).\n");
} else if (${$choice} == "subject") {
echo ("the subject (or part of it).\n");
} else {
echo ("Maybe there is some problem.\n");
} echo ("<INPUT name='\"${$choice}\"' type='\"text\"'>");
?>
<DO type="text" label="Go">
<GO href="query.wml" method="get">
<?php
echo ("<POSTFIELD value='\"$"."$choice"."\"/' name='\"$choice\"'>");
echo ("<POSTFIELD value='\"$"."${$choice}"."\"/' name='\"${$choice}\"'>");
?>
</GO>
</DO>
<P></P>
</CARD>
</WML>
<DO type="text" label="Go">
<GO href="index3.wml#card3" method="get">
<?php
echo ("<POSTFIELD value='\"$"."$choice"."\"/' name='\"$choice\"'>");
echo ("<POSTFIELD value='\"$choice\"/' name='\"choice\"'>");
?>
</CARD>
</WML>
写查询代码
以下的文件负责处理查询。它的名字是query.wml,我们将更详细地分析它。
<?php
Header("Content-type: text/vnd.wap.wml");
printf("<?xml version=\"1.0\"?>\n");
printf("\n");
printf("\n");
// 以下各行是用来为查询授课时间构造SQL语句的
$consulting_tables =
"(professors left join teach on (professors.Id = teach.Id), subjects)";
$consulting_columns =
"professors.Surname, professors.Name, subjects.Subject , ";
$consulting_columns .=
"subjects.Cod_number, professors.Consulting_hour, professors.Consulting_place";
$consulting_query=
"subjects.Cod_Subject = teach.Cod_subject ";
// 以下各行是用来为查询测验时间构造SQL语句的
$exams_tables= "(exams left join professors ON (exams.Id = professors.Id), subjects)";
$exams_columns= "subjects.Subject , subjects.Cod_number, professors.Surname, ";
$exams_columns.= "professors.Name, exams.Date, exams.Time, exams.Room, exams.Test";
$exams_query= "exams.Cod_Subject = subjects.Cod_Subject ";
// 以下各行是用来为查询测验时间表的sql语句增加查询限制
if ($exams_data) {
switch($exams_data) {
case "subject":
$exams_query.= " and subjects.Subject like '%$subject%'";
break;
case "surname":
$exams_query.= " and professors.Surname like '%$surname%'";
break;
}
}
// 以下各行是用来为查询授课时间的sql语句增加查询限制
if ($consulting_data) {
switch($consulting_data) {
case "subject":
$consulting_query
.= " and subjects.Subject like '%$subject%'";
break;
case "surname":
$consulting_query.= " and professors.Surname like '%$surname%'";
break;
}
}
// 处理与数据库的连接
function connect($tables, $data, $condition_passed) {
//
// put your password and username in next line
//
$db = mysql_pconnect("localhost","***","***");
// put your database name in next line
mysql_select_db("lanfranchi_co_uk",$db);
$sql = "SELECT $data FROM $tables WHERE $condition_passed order by professors.Surname";
$result = mysql_query($sql,$db);
return $result;
}
// 这个函数产生授课时间的wml代码
function consulting_print($consulting_result) {
global $file;
printf("\n");
printf(" <P>Receiving hours
\n");
while ($myrow = mysql_fetch_row($consulting_result)) {
printf(" <P>$myrow[0], $myrow[1]</P>\n");
printf(" <P>$myrow[2]</P>\n");
printf(" <P>$myrow[3]</P>\n");
printf(" <P>$myrow[4]</P>\n");
printf(" <P>$myrow[5]</P>\n");
}
printf("</CARD>\n");
}
// 这个函数产生测验时间表的wml代码
function print_exams($exams_result) {
global $file;
printf("<CARD id='\"card1\"' title='\"hours\"'>\n");
printf(" <P>Examinations hours
\n");
while ($myrow = mysql_fetch_row($exams_result)) {
printf(" <P>$myrow[2], $myrow[3]</P>\n");
printf(" <P>$myrow[0]</P>\n");
printf(" <P>$myrow[1]]</P>\n");
printf(" <P>$myrow[4], $myrow[5]</P>\n");
printf(" <P>$myrow[7]</P>\n");
printf(" <P>$myrow[6]</P>\n");
}
printf("</CARD>\n");
}
// 检查你时候选择授课时间或者测验时间,连接数据库并且调用产生wml代码的函数
if ($consulting_data) {
$connection_result =
connect($consulting_tables, $consulting_columns, $consulting_query);
consulting_print($connection_result);
}
if ($exams_data) {
$connection_result =
connect($exams_tables, $ exams_columns, $ exams_query);
print_exams($connect
ion_result);
}
printf("</WML>\n");
?>
好,完成了。你已经建立了首个基于MySQL数据库的PHP/WML页面了,自己继续实践一下吧。
上海 陆大康
如果说移动通信是PSTN(公众电话网)的延续,那么WAP(无线应用协议)就是TCP/IP(传输控制协议和互联网协议)的延伸。然而在过去的一年里,WAP作为“移动互联网”的新标准似乎并没有像人们预期的那么火爆。究其原因,其中固然有WAP应用自身存在的无线接入速率低、数据传输量有限等技术上的问题,但是更普遍的是目前国内真正提供基于无线应用的内容服务商尚属凤毛麟角。据统计,除新浪、证券之星和腾讯等少数几家ICP提供WAP服务外,国人很难在这“移动的互联网”上找到更多的信息资源。没有了电视节目的电视机,充其量也只能算是一件奢侈的家用摆设,这也就难怪WAP为什么一经推出就“雷声大,雨点小”了。
其实所谓无线上网(通常为手机上网),是手机通过WAP协议向移动网关发出请求,而由网关通过HTTP(超文本传输协议)代理请求并获得事先存放在WEB服务器上的脚本和网页,并最终返回到用户的手机上显示出来。可见,通过WAP访问到的内容和我们平时直接从PC连接互联网所访问的内容一样,都是存放在特定的WEB服务器上的,但是由于要适合低速率的无线传输和用户有限的手机显示屏,WAP应用采用了与传统HTML不同的WML(无线标记语言)来编写其网页文件。它与HTML相比更适合用于硬件受限、输入/输出性能受限的窄带无线装置,相应地它的编写较之HTML来说更精简、更规范。
随着GPRS的出现,移动上网的概念再次走近我们,而移动互联网也得到了更大的发展。
许多人发现无线上网并没有想象中的那么神秘,制作一个无线互联网可用的网页其实也很简单,只要你编写过HTML网页,那么制作WML网页对你来说将不会是件难事。下面就介绍一下利用Windows环境下最新的WML集成开发工具,它们最显著的特点就是所见即所得(WYSIWYG),无须重复学习WML标记语言就能轻松自制“移动梦网”。
Intava Gravity
版本:Intava Gravity 1.0 beta 2
性质:免费软件
平台:Windows+IE 5.5(or above)
下载地址:http://www.intava.com/
Intava Gravity是Intava公司2001年最新出品的Windows环境下集开发、编辑和模拟于一体的WML网页编辑器(如图1)。
它为开发者开发WML网页提供了多种真实的无线装置平台进行模拟测试,使得开发者在测试WML网页时能获得较逼真的效果。它内置多个简单而常用的WML编辑工具协同源代码编辑器一起能使开发者(尤其是WAP入门者)非常轻松地完成WML网页编辑,并且支持脚本文件的插入和WBMP图形格式的自动转换。
Intava Gravity的开发环境可以分为三块区域:左侧的开发工具管理区、中间的网页编辑区和右侧的测试模拟区。下面将结合软件的各个工作区来简单介绍一下使用方法。
1.开发工具管理区
该工作区由3个窗口组成,分别是:Project Explorer(任务管理)、Properties Explorer(属性管理)和Tools Explorer(工具管理)。
Project Explorer
我们可以通过菜单中的File→New→Project Wizard(项目向导)来创建一个新的任务,项目向导分四步来创建一个新任务。首先它会问你为哪些无线装置来创作WML网页,可选的有“所有使用OpenWave微浏览器的WAP手机”、“所有的Nokia手机”和“所有的WAP手机”,建议选择“所有WAP手机”,它可以使我们制作的网页能被更多手机显示;接着向导会要求你选择一款模拟的WAP手机作为调试任务时用,它提供了包括Nokia 7110、三菱T250等11款常见的WAP手机模拟器;第三步会要你为这个任务取一个名字,比如“myfirst”;最后选择任务存放的路径,点击确定就完成了新任务的创建。
任务管理窗口显示的是一项任务(即WML网站)中所用到的各种文件,可以是WML格式的网页文件、WBMP格式的图形文件和Wscript、Asp或Jsp等脚本文件(如图2)。为任务添加和新建文件的办法很简单,只需要用鼠标右键点击“All WAP Devices”,在出现的右键菜单中点击“New Page”来增加新WML文件,点击“Add Files…”来增加WBMP和脚本文件。这里要说明一点,WBMP是WAP论坛定义的无线位图格式,它是一种可扩展、紧凑且可缩放的格式,是专门针对处理能力极小的用户代理优化的。Intava Gravity编辑器内建了WBMP图形格式的转换器,所以当我们要加入图片文件时,只要选中GIF、JPG、PNG或BMP格式的图片文件,Gravity就会自动帮我们把这些格式的文件全部转换成无线装置能够辨认的WBMP位图格式,并将它们加入到任务管理窗口中。
Properties Explorer
属性管理窗口是我们在编辑WML文件时经常要用到的标签属性编辑器。如果你曾编写过HTML网页一定知道,HTML语言为了扩展其语言的功能,允许在一些特定的元素标签(一般指的是那些包含可显示内容的元素)中添加属性控制。比如最常见的“<p></p>”换行标签就支持“align=left”(居左排列)这个属性,同样,WML语言也是由类似的支持属性控制的标签构成的。WML语言中“Card”(卡片)标签可用的属性(如图3)。“Card”可以说是WAP程序的内容核心所在,它包含了格式化信息、可视化内容和进程指令,这似乎同HTML中的“Body”标签有点相似。
Tools Explorer
位于开发工具管理区最下端的是工具管理窗口。Intava Gravity提供三大类WML网页的开发工具:常用工具(General)、表单工具(Forms)和WAP工具(WAP),(如图4)。常用工具窗口中“Link”被用来建立两个WML网页或两个卡片(Card)之间的链接,它会为我们自动生成类似“<a href="next.wml">link</a>”的源代码;“Image”工具则为WML页加入一张WBMP位图,并自动生成如“<img src="pic1.wbmp"/>”的代码;表单工具窗口中的两个工具分别是文本输入框和下拉列表菜单,这两个工具也很常用,可以用于编写和用户交互的WML内容;WAP工具窗口里的工具为我们提供了一些高级的编辑功能:比如“Card Separator”(卡片分隔工具)配合“Timer”(定时器工具)一起使用,能将一个WML文件中需要显示的内容以固定的时间间隔轮换显示于几张卡片当中,这样做的好处是省却了用户查看长信息时手动翻滚显示屏的麻烦。
2.网页编辑区
Intava Gravity的网页编辑区简洁明了,它由上方的可视化编辑区和下方的源代码编辑区构成,这同DreamWeaver和FrontPage等HTML文件的所见即所得编辑软件一样。我们可以不必强记那些繁琐的标记语言轻而易举地在可视化编辑区中添加图片、输入文本,并对它们进行排版和格式化;同时,我们又能监视下方源代码区域中发生的变化,如果对WML标记语言很熟悉的话,也不妨在代码编辑区里写上几笔。
3.测试模拟区
右侧的测试模拟区用来调试我们编写的WML网页。如果我们在创建新任务的第二步中选择了模拟的WAP手机型号,该测试区就会出现相应的手机模样。我们可以双击Project Explorer中已经编辑完毕的WML文件,这样就能十分逼真地在模拟器中观看到效果。为了能在多个手机里查看网页的显示效果,点击Tools→Simulators→WAP1.1,在菜单中的11个模拟器里选择一个观看就行。
这款免费的WML网页制作软件所提供的编辑工具简单而常用(主要是针对文本和图片的编辑),毕竟方寸大小的手机屏幕上表现得最多的还是文字和图片,所以很适合WAP开发的入门者。使用之后给人最大的印象就是软件很容易上手,而且软件内置多种逼真的WAP手机模拟器对于开发者制作出兼容性优良的WML网页来说也很有帮助。
WBuilder Professional
版本:Wbuilder Professional 1.0
性质:共享软件,15天试用
平台:Windows+IE 5.5(or above)
下载地址:http://www.3tl.com/
同Intava Gravity一样,Wbuilder Professional(以下简称WP)也是在Windows环境下集开发、编辑、模拟和发布于一体的专业级所见即所得WML网页编辑器。不过它比起Gravity,在编辑功能上更强大(支持更多所见即所得WML编辑工具),是3TL公司面向企业用户而推出的WML网页编辑器(如图5)。
WP不仅提供功能强大的WML可视化编辑工具(几乎所有的WML语言标签都有相应的可视化工具在WP中与之对应),而且内置功能全面的WBMP位图转换工具、FTP网页发布工具和WML语法检查器,使得开发者在所见即所得的开发环境下更加游刃有余地发挥自己的创造想象力。
WP的开发环境既有特色,又不失简洁性。中间最大的区域就是WP的可视化WML编辑区,轮换点击工具栏中的“Show Markup”和“Show Plain”按钮就能方便地在源代码窗口和可视化编辑窗口之间进行切换。WP的源代码编辑器比起Gravity更好用些,当你在编写WML源代码时会有即时提示框提示你WML语言标签的书写格式(如图6),这一功能对高级用户来说相当实用。
编辑区的右方有上下两个窗口,这分别是WP的任务管理窗口(Project Navigator)和模拟器查看窗口(Device View)。
1.Project Navigatorfwa
WP的新任务创建没有Gravity那么繁琐,点击菜单File→New Project,在Project Templates(任务模板)中选择一个就能创建完成。WP的任务管理窗口(如图7)同Gravity一样,用来显示一项任务中所用到的文件,所不同的是,WP并没有把WML网页编辑中要用到的WBMP图形文件和脚本文件加入到任务窗口中,在这里我们仅能看到的是WML文件。WP的任务管理窗口还有一个特色:双击窗口中的任何一个WML文件,我们可以清楚地看见该文件将自己的WML语言标签以一种树形结构展现出来,这可以使开发者在无须打开源代码窗口的前提下便能了解该页WML文件的结构。在WP中,要为一个任务添加新WML文件的方法同在Gravity中一样,鼠标右键点击任务窗口中的任务名称,在右键菜单中选择“Add New File”(添加新文件)或“Add Existing File”(添加已有文件)即可。
2.Device View
WP中的Device View窗口即Gravity中的测试模拟窗口。WP的模拟器查看窗口中供WML网页测试用的模拟器只是大致地给出了某个无线装置的轮廓,而模拟和测试的重点都集中在不同显示屏幕对WML网页显示的效果上(如图8)。在Device View窗口上方的下拉菜单里,我们看到除了有Nokia和Motorola等多款WAP手机的模拟器外,还有两个PDA模拟器。点击下拉菜单左边的“Device Settings”按钮,在弹出的无线装置设定对话框中,我们可以改变该装置的显示屏幕大小、内存大小和显示字体等多个参数,同时我们还可以通过“New”来为调试添加新的WAP无线装置,极大丰富了模拟器的品种,这些功能可是Gravity所望尘莫及的哦。
由于WML标记语言比HTML在语法上更为严谨,所以WML文件中只要有一个语法错误,该文件就无法正确地显示。WP作为功能强大的WML编辑器,在WML语法检错方面明显做得比Gravity出色。在其开发界面中,编辑区下方的狭长区域就是它的语法检错区(如图9)。出错信息以“Error Log”(出错日志)的形式通知给编辑者,它能告诉编辑者是源代码的第几行出现错误,出错原因以及出错源(即哪个WML标签书写有误)。有了语法检错功能,开发者就能在编辑WML时及时纠正编辑错误,为开发大大提高了效率。
3.WML编辑工具
编辑区的左边就是WP编辑器的核心所在——WML工具箱(如图10)。WP的WML编辑工具共分成四大类:Formatting(格式工具)、Interface(界面工具)、Tasks(任务工具)和Deck Level(卡面工具)。Formatting工具,顾名思义就是为开发者提供WML网页排版和格式化的工具,比如设置字体、网页中元素的位置排列。Interface工具提供了WML网页中界面元素的可视化制作,支持插入的元素包括Image(图片)、Table(表格)、Input(输入框)、Select(选项,连同Option一起使用)等。Tasks工具为我们编辑WML网页中的事件触发标签提供了方便,支持的事件标签有Timer、OnEvent、DoEvent、Noop、Prev、Refresh、Go等。这些工具在编辑高级和复杂的WML网页时非常有用(比如前面提到的Timer例子),而WP在这方面显然比Gravity支持更多高级WML标签的可视化编辑,这在很大程度上节省了开发者开发复杂WAP应用的时间,极大地提高了效率。最后的Deck Level主要是为构筑整个WML网页框架而提供的工具箱。我们知道卡面(Deck)是对一个WAP装置发送的最小WML单元。通常一个正式的WML文档(也就是卡面)是以序开始,然后是标头信息(Head)和一系列卡片(Card)。用WP提供的卡面工具就能很容易完成这些信息的编辑,使得整个WML文件阅读起来更加规范。Deck Level提供的卡面编辑工具有Head、Access、Meta、Template、Card、Comment和Paragraph等。
WP还为开发者们提供了3个非常实用的辅助工具帮助整个WAP应用的开发。它们是Image Conversion(图形转换)、FTP Client Utilities(FTP客户端工具)和HTML Import/Export Wizard(HTML文件导入和导出向导)。
4.Image Conversion
前面已经说过,WBMP无线位图格式是事实上的WAP图形格式。WP不仅能为我们将加入WML网页中其它格式的图形文件自动转换成WBMP格式,而且允许我们对这种转换加以控制,以达到更高要求编辑时的需要(如图11)。我们可以点击工具栏上的“Convert Image”(转换图形格式)按钮来打开该对话框。由图可知,我们可以在“Adjust Dither”(调整抖动)的下拉菜单中选择适当的效果来修改转换格式后的图形文件显示效果,比如可以选择“No Dither”(无抖动);还可以调整图形文件的像素大小,使获得的WBMP位图能很好地显示出来。
5.FTP Client Utility
说WP的功能强大,还因为它内置了FTP工具供制作完成的WML网页进行发布(如图12)。
6.HTML Import/Export Wizard
WP还有一个非常有用的功能——支持HTML文件的导入和导出,这个意思就是说我们可以事先把要发布的WAP内容制作成HTML文件,通过导入HTML来完成HTML向WML文件的转换,同时我们制作的WML文件也能输出成为HTML文件格式。由于WML语言比HTML要精简得多,所以当我们使用Import HTML功能时,应尽量导入那些书写结构简单的HTML文件,因为转换器会自动剔除那些只有HTML有而WML没有的标签。
这款由3TL公司出品的WBuilder Professional正如它的名字一样可以称得上是目前功能最全、最强大的所见即所得WAP应用集成环境开发工具。无论从它所支持的可视化WML语言标签编辑的数量,还是从它附带的支持WAP应用开发的工具来看,它都明显胜出Intava的Gravity一筹。不过它支持的很多高级可视化WML标签对于初学者来说还有一定难度,毕竟要熟练应用那些高级标签还得对WML语言有一定的了解。还有一点很可惜,那就是WP是共享软件,有使用期限的限制。
用WML网页的编写远没有HTML语言的编写来得复杂。WML语言的精简性注定了WML网页开发工具不可能像FrontPage或DreamWeaver那样庞大而复杂,只要我们稍加学习并掌握一些基本的WML语言知识就能轻松地开发出不错的WAP应用来。
目前中国移动为了回应中国联通将要推出的CDMA业务,正在积极地推广它的“移动梦网”计划,旨在将目前GSM无线通信过渡到2.5G的GPRS通信。插上了GPRS翅膀的WAP将会拥有更高的接入速率和更低廉的资费,并且能真正实现手机永远在线,这正是WAP重整旗鼓的大好时机。而且从WAP Forum传来消息,NTT DoCoMo(i-mode的创始者)有意加入WAP大家庭,双方共同规范了无线通信协议的新标准WAP2.0,可以预见WAP的前途一片光明,真正的“移动互联时代”即将来到。在互联网上已经有很多网友都给自己安了一个家,那么有没有想过在“移动的互联网”上也给自己搭建一所“移动的小屋”?
大家都自动,在jsp中,要写一个自动翻页的程序很是复杂,还要牵涉到线程,但是,在wap里面,我们添加一个标签就ok了。如下:
<onevent type="ontimer">
<go href="http://×××××.jsp?pageNum=<%=pageNum+1%>&cartoon_id=<%=cartoon_id%>"><!--里面可以用到递归算法-->
</go>
</onevent>
<timer value="翻页的时间(s)"/>
1.1 目标
中国联通为了统一WAP业务风格,保证WAP业务的可用性,特制定了本WAP业务页面
规范,以规范中国联通的WAP业务页面风格。
本规范首先简述了WAP业务可用性的相关概念与原则,并对WAP业务中的菜单使用、
页面连接方式、文本显示、选择列表等多方面给出了相应的基本原则与例子。对通过中国
联通WAP门户网站提供连接或者遵循中国联通提供的代计费功能的WAP业务均要求严格
遵循本规范中的相关原则与规定。
1.2 业务可用性
可用性是业务提供的价值与用户使用业务时所需付出代价的相对大小,所谓业务提供
的价值,主要体现在业务能提供给用户所需要的信息,业务能为用户解决实际问题以及业
务的易用性等方面,使用业务的代价包括学习使用业务时付出的代价、用户使用业务过程
中付出的代价(比如通信费用、信息费用、点击次数,输入等)。
可用性强的业务,其最根本的特点是业务给用户带来的价值大于用户在使用业务时所
付出的代价,因此,在设计WAP业务时,应该注意到:
可用性非常关键;
手机上网主要用于获取信息而不是浏览;
手机与PC在使用上有显著差别,不能将开发WEB应用的理念照搬到WAP业务开发
中来;
用户是要为使用WAP业务付出时间上或金钱上的代价,因此,所设计的WAP业务
要尽降低用户在使用过程中付出的代价。
大多数用户并不喜欢复杂的WAP业务。
由此可见,当开发高可用性业务的时候必须首先明确:
面向什么样的用户群;
业务给用户解决什么问题;
如何以最高的效率解决这些问题。
1.3 联通WAP业务页面风格原则
基于提高WAP业务可用性的指导思想, 联通WAP业务的页面风格应遵循几个关键性
原则:
让用户尽快地得到需要的信息, 业务界面的学习门槛低;
将业务限制在基本的功能之内;
使开发出来的WAP业务简单易用;
业务应该具有一致的使用风格;
对用户可能出错的地方要有预先的分析与防范;
联通的WAP业务应保证联通业务的一致性, 所有业务的页面上不能出现至其它移
动运营商WAP业务的链接.
1.4 WAP业务页面开发规范
1.4.1 菜单使用规范
菜单的用途一般有:
提供一个数据列表(如邮件地址)
连接到一个新的页面(如进行选择)
进行一项操作(如删除邮件)
进行一个选择(如选择一个具体的日期)
改变某个选项(如让用户更改设置)
菜单使用规范:
菜单项要一致左对齐排列;
菜单中的各项要按照一定的逻辑顺序来排列,如按照类型、时间、字母顺序等。
如果没有逻辑顺序,就按优先级排列,将最可能选择的排在最前面。
在一个导航类菜单前必须加彩色图标,文字以蓝色字体显示。在服务类菜单前要
加数字排序,数字以蓝色下划线字体显示,两类菜单的定义如下图:
图1:导航类菜单:后跟下一级菜单图2:服务类菜单:后跟实际内容
服务类菜单中不要多于9 个选项,当选项多于9 个时,建立“下一页”作为第
九个选项,如图2 所示。
具体要求如下:
1、导航菜单项前的图标要求如下:
尺寸:25×15 pixle
文件类型:PNG
大小:小于1K
支持色彩:真彩色
2、菜单标题字数尽量控制在一行显示,建议不要超过三行,对超过一行或一页的正
文信息,则必须分行或者分页显示。
3、缺省的情况下,菜单中的每一项占据一行,但是在特殊情况下,允许在同一行中
使用多个菜单项。
通过在各个菜单项之间添加一个标点符号(例如,链接1,链接2)或其他文字,不同
的链接就可被并排显示,但如果这些链接是被定义在一个<p mode=“nowrap”>块中,那
么它们就不能被并排显示了,例如:
<?xml version=”1.0” encoding=”GB2312” ?>
<wml>
<card id=”quote” title=”AA 股票”>
<onevent type=”onenterforward”>
<refresh>
<setvar name=”price” value=”+2.875”/>
<setvar name=”icon” value=”uparrow2”/>
</refresh>
</onevent>
<do type=”options”label=”Done”>
<exit>
<send value=”$stork”/>
<send value=”$(price:noesc)”/>
<send value=”$icon”/>
</exit>
</do>
<p>
<br/>
<a href=”nothing.wml” title=”News”>$stock
<img src=”” localsrc=”$icon” alt=””/>+2.875</a><br/>
现价:115.875<br/>
最高价:116.875<br/>
最低价:112.5<br/>
成交:20405400<br/>
10:14 3/1/2000<br/>
其他股票信息:<a href=”nothing.wml”>BB</a>,<a href=”nothing.wml”>CC</a>,
<a href=”nothing.wml”>DD</a>
<a href=”nothing.wml” title=” 图表”>图标显示</a>
<a href=”nothing.wml” title=” 加入”>加入到</a>
</p>
</card>
</wml>
在上面的例子中,逗号用来分割不同股票的查询连接,以便并排显示。
4、如果需要在一个菜单项(或软按键)上执行多个操作,可以通过弹出式菜单实现。
为了让多个操作在一个菜单项上执行,需要将select(选择)要素的type(类型)属性设置
为list(列表)。例如,为了让用户在没有阅读电子邮件的情况下对其进行删除、转发或回
复等处理,对每一个<option>指定value 性,通过<do type=”option”>来实现:
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 5/15 Ver 1.0
<?xml version=”1.0” encoding=”GB2312” ?>
<wml>
<card title=”收件箱” id=”inbox”>
<onevent type=”onenterforword”>
<refresh>
<setvar name=”imgA” value=”*”/>
<setvar name=”imgB” value=”*”/>
<setvar name=”imgC” value=”*”/>
<setvar name=”imgD” value=”*”/>
</refresh>
</onevent>
<do type=”accept” label=” 查询”>
<spawn href=”email/mail$(msg.noesc)”>
<catch/>
</spawn>
</do>
<do type=”options” label=” 删除”>
<go href=”file:c:/opwvdemo/notjing.wmlc ”/>
</do>
<do type=”options” label=” 回信”>
<spawn href=”#reply$(msg.noesc)”>
<catch/>
</spawn>
</do>
<do type=”options” label=” 转发”>
<spawn href=”emailfwd.wmlc#fwd$( msg.noesc)”>
<catch/>
</spawn>
</do>
<do type=”options” label=” 保存”>
<spawn href=”saved.wmlc#saved$( msg)”/>
</do>
<do type=”options” label=” 转移到”>
<spawn href=”file:c:/opwvdemo/nothing.wmlc ”/>
</do>
<do type=”options” label=” 邮件首页”>
<spawn href=”#home”/>
</do>
<do type=”options” label=” 新建信笺”>
<spawn href=”emailedit.wmlc ”>
<catch/>
</spawn>
</do>
<p mode=”nowrap”>
<select type=”list” name=”msg”>
<option value=”1”>
<onevent type=”onpick”>
<spawn href=”email.wmls”>
<catch/>
</spawn>
</onevent>
{张三}你想去看电影吗?
</option>
<option value=”2”>
<onevent type=”onpick”>
<spawn href=”email2.wmlc ”>
<catch/>
</spawn>
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 7/15 Ver 1.0
</onevent>
{李四}会议时间改到3:30pm
</option>
<option value=”3”>
<onevent type=”onpick”>
<spawn href=”email3.wmlc ”>
<catch/>
</spawn>
</onevent>
{王五}会议通知
</option>
<option value=”4”>
<onevent type=”onpick”>
<spawn href=”email4.wmlc ”>
<catch/>
</spawn>
</onevent>
{赵六}给我回电话
</option> </select>
参看:
<select name=”fldr” type=”popup” value=”Inbox”>
<option value=”file:c:/opwvdemo/nothing.wmlc ”>收件箱</option>
<option value=”#outbox”>发件箱</option>
<option value=”file:c:/opwvdemo/sent.wmlc ”>发送</option>
<option value=”/nothing.wmlc ”>模板</option>
</select>
</p>
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 8/15 Ver 1.0
<p align=”center”>
<do type=”button” label= ” 转移到”>
<go href=”$(fldr:noesc)”/>
</do>
</p>
</card>
</wml>
5、注意:同一个菜单项在不同的手机上显示并不一样,多数手机对菜单项会加入下
划线,也有的手机会使用正方形与括号将选项包起来,因此,不要在显示文本的时候使用
下划线等标志。
6.所有业务的首页菜单必须遵循以下结构:
“业务说明”中必须包含以下几项内容:
业务提供商的名称
所提供业务的具体内容
资费政策介绍
客服电话
“免费体验”中应提供给用户免费下载和浏览的内容,免费提供的内容不应少
于三项,免费信息原则上每月更新一次。
每项业务必须提供两种以上的计费策略。
提供下载业务的必须以书面形式提出开通申请,并提供下载的域名或IP地址。
1.4.2 返回连接规范
用户经常使用手机中的返回按键(通常就是删除按键)或者浏览器中的软按键来返回
或退出,因此,返回连接对一个业务的成功是十分关键的,要倍加关注,对返回连接设计
好的业务,将会显著地提高用户的使用次数。
1. 在业务的起始页面的底部必须有一个“返回江南秀”、“返回首页”的连接,地
址分别为:
http://211.90.224.195/hswap/index.aspx?NUMCUIGUID=22
http://http://wap.uni-info.com.cn
2. 在业务内部的页面底部必须有“返回上级”和“返回江南秀”的链接,可让用户
返回浙江本地栏目的连接。
3.除了在屏幕中显示“返回上级”及“返回首页”的标题外,同时也应利用软键
功能实现该功能,左右软键设置如下:
关于”返回上级”和”返回首页”的具体开发规范, 请查阅”联通WAP业务开发接口规范”.
4.当不能直接返回上一个页面时,将用户带到最方便使用业务的一层页面。返回连
接并不总是实用的,例如,当用户进行交易或者删除某些数据的时候,返回连接就不应该
将该用户再带到对交易或者删除操作进行确认的页面中,而应直接返回到业务的起始页
面,或将用户带到一个已经完成交易或删除操作的页面当中,可以使用一个<onevent
type=”onenterbackward”>来避免用户连接到不应返回的页面中。
3.当手机返回键的操作被替换时,如果在该页面上没有出现其他“确认“操作,务必
使用同样的操作替换“确认”软按键(左软按键)
如果对ACCEPT 软按键没有定义任何操作,那么该软按键就会被缺省定为一个带有“返
回”标签的返回操作,但如果手机上的返回按键的功能已经被修改,则左软按键上的返回
操作就会不同于手机上的返回键上的操作,这可能让用户感到很困惑,因此务必请将与手
(个人图片)
(图片下载)
(铃声下载)
(返回上级)
(返回首页)
确定 回首页
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 10/15 Ver 1.0
机上的返回键对应的操作重新定义到左软按键上,比如:
<do type=”prev”>
<exit/>
</do>
<do type=”accept” label=”Back”>
<exit/>
</do>
4.当需要返回业务的上一层功能或是直接返回业务首页时,必须使用右软按键来完成
连接,并且需要给右软按键一个“返回上级“后者“返回首页”的标题
5.如果返回连接过程中会丢失用户已经输入的数据,不许给用户提供一个确认退出输
入的页面。比如一个订购机票的业务中,存在如下返回连接:
其中有一个确认删除页面防止用户意外丢失已经输入的数据
1.4.3 文本显示规范
1.一个CARD中显示500-600个字符,即300汉字以内。
2.当需要显示的内容超过范围时,在底部提供一个“下一页“连接,但在每个栏目下,
传送给用户的内容最好不要超过3页。
3.将超出一行的内容分行显示,但主菜单及子栏目标题则应尽量将文字压缩为一行。
如:“古典系列三十一”此标题字符过长,可将其压缩为“古典系列31”。
4.所有文本左对齐。
5.左软按键连接到下一文本页(显示更多内容),右软按键显示相关的操作(如:邮
件回复,删除等)。
6.阅读新闻、邮件等内容时,应提供一个“下一项“的连接,用于用户直接转到下一
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 11/15 Ver 1.0
个新闻主题或邮件,而不要仅仅显示”下一页“,用户容易误解为同一个主题的下部分内
容。
7.在文本页面中不要使用连接来进行某项操作(如删除邮件等), 而要利用软按键来
实现,而且,底部连接不能多于3个,最后一个连接功能应与页面的缺省连接一致(一般
是继续显示信息或显示完成)。
8.当用户阅读文本时,应能主动预读取下一页文本到手机的CACHE中,加快用户阅读
的切换速度。
比如:
<head>
<link href=”page2.wml” rel=”next”/>
</head>
<card id=”page1”>
<do type=”accept” label=”Page2”>
<go href=”page2.wml”/>
</do>
<p>
Page 1 of 2 <br/>
… .
</p>
</card>
上面的代码展示了如何利用预取功能对一个卡片组中的下一个卡片进行访问。
9.当显示文本页面没有<do type=”options”>操作时,应在右软按键中显示“完成
“连接,将用户带到上一层功能页面或者业务首页。
10.内容文字的规范:应设定为统一的简体中文,避免出现英文与中文混合的内容,
如“Loading…. 请稍后”,应为“正在下载中。。。请稍后”。
11.新闻类栏目要在新闻标题的后面显示新闻发布的日期及出处。
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 12/15 Ver 1.0
12.菜单中的各项要按照一定的逻辑顺序来排列,如按照类型、时间、字母顺序等。
如果没有逻辑顺序,就按优先级排列,将最可能选择的排在最前面,将最新更新的部分放
在最前面,并加入“NEW”字样。
1.4.4 用户输入规范
1.尽量减少用户的文本输入
2.当已激活输入区域时,只需要有一个确认连接,不需要提供其他功能。
3.为每一个输入项尽可能直观的提示与描述,但不要多于15个字符(8个汉字)
4.对每一个输入项,将输入的内容限制在254个字符之内。
5.让输入框大小随用户输入的内容一起变化,开始提供一行,随用户输入内容增加,输
入框逐步增大,不要定义一个固定大小的输入框。
6.在一个页面的所有输入框之后不许有一确认输入数据的连接,可通过左软按键提交输
入的所有数据。
7.通过右软按键提供输入法切换功能。
8.对用户输入的密码,不要用*进行掩盖,在手机上明文显示即可。
9.使用MAXLENGTH 参数来限制用户输入密码的长度,避免用户出错。
1.4.5 格式化输入规范
格式化输入主要包括输入日期,信用卡号码等具有固定格式的内容。
1. 对所有格式化输入都必须表明输入格式,如输入如期时可以表示为:MM/YYYY 见
下例:
代码如下:
Exp Date:(mm/yyyy) <br/>
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 13/15 Ver 1.0
<input name=”expdate” format=”NN\/NNNN” emptyok=”false” size=”7”/><br/>
2.对输入的类型进行强制匹配,该输入数字的地方,不能输入字母
3.可以通过MAXLENGTH 参数限制输入的字符数
4.对确定的内容进行预制如输入日期时可以表示为20xx,只让用户输入后两位数字就
可以。
5.对可确定用户输入的文字功能实现自动切换,如需用户输入密码时,应自动切换为
“数字功能”,要求用户输入Email 地址时,应自动切换为“英文”等。
6.防止用户在格式化输入区域中不输入任何内容而进行下一个操作
可以通过empty=”false” 来防止用户不输入任何信息而直接跳过输入页面,例如:
<input name=”ccnum” emptyok=”false” format=”NNNNNNNNNNNNNNNN”/><br/>
Type
<select type=”popup” name=”cctype”>
<option value=”Visa”>Visa</option>
<option value=”American Express”>AMEX</option>
<option value=”Master Card”> Master Card </option>
</select><br/> Name:<br/>
<input name=”ccname” emptyok=”false”/><br/>
Exp Date:(mm/yyyy)<br/> <input name=””expdate” format=”NN\/\2\0NN”
emptyok=”false” size=”7”><br/>
在上面的例子中,用户在输入两个数字后插入一个斜线符号
1.4.6 图标与图形规范
1.所有的手机都支持WBMP 图象格式
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 14/15 Ver 1.0
2.所有的彩色手机都支持PNG 格式的彩色图象
3.在图象周围要有文字对图象进行说明,方便不能支持图象的手机使用
4.不要对图形对象定义任何操作
5.对时效性较强的页面要小心使用图象,有可能在图象下载过程中页面失效了
6.对大于显示屏幕的图象可以在手机中垂直地移动,但是不能水平移动,因此,图象
的宽度大小必须符合手机的要求。
1.4.7 铃声、动漫规范
1.部分手机支持pmd 格式的铃声、部分手机支持midi和sis的铃声。
2.动漫主要是两种格式pmd和sis支持部分手机,对于新的类型请密切关注页面规范的
更新和新手机的技术参数。
1.4.8 CACHE规范
CACHE能实现对访问过内容的快速回顾
1.不要将时效性很强的内容(如新闻、股票信息等)留在CACHE中。
2.对某些特定内容(如天气信息、交通信息等)要限制其在CACHE中的有效时间。
3.对动态信息要强制更新。
4.对一般手机而言,除非CACHE已经溢出,否则,缺省的CACHE时间是30天。
5.如果用户可能要用到下一页面的内容,应事先将下一页的内容下载到CACHE中。
1.4.9 COOKIES规范
通过COOKIES可减少用户的输入内容
1、使用WAP业务时,COOKIES保存在WAP网关上。
2、并不是所有的手机都支持COOKIES功能,目前联通的WAP网关与内置手机浏览器
的可以实现COOKIES功能。
3、在必要的时候使用COOKIES。
1.4.10 关键词语使用规范
在业务中,一致的关键词使用风格能显著提高业务的可用性,一般而言,关键词的首
字母应该大写,而其他字母应该小写,除非有些纯大写组合的词,如:OK 等
以下是一些关键词的应用场合:
中国联通WAP 页面规范
中国联通浙江分公司增值业务部 15/15 Ver 1.0
1、确定(OK)用于在一个选择页面中进行选择操作或者确认某项操作,如发送一个
邮件或信息等。
2、完成(Done)使用户完成或者停止某项一系列操作而返回业务的起始位置,当用户
有输入信息时,该操作一定要带出一个确认页面
3、跳过(Skip)用于跳转到下一个同类型的数据或内容,比如下一个新闻或邮件
4、读取(View)用于在一系列相关的数据列表中进行选择,如一组股票信息的列表或
一组邮件
5、更多(More)用于取得一些详细的内容或数据以及取得更多的数据,如通过标题排
列的新闻内容,超出一页的内容。
6、返回(Back )用于将用户带回上一个页面
慎用以下词语:
1、退出(Exit),用户会理解成退出浏览器
2、主页(Home),用户会理解成是浏览器的主页
3、书签(Bookmark),用户会容易混淆为手机的书签
4、菜单(Menu),这个词语通常由浏览器在软按键有多个动能选项时自动生成,不
需要人为指定。
编者按 WAP重新热起来了,WAP在经历了2000年的失败后又迎来了春天。如果你还有怀疑,看看这些耳熟能详的名词:移动梦网、手机上网MO一下、移动百宝箱、随e行,这些脍炙人口的业务背后正是WAP。不过,与一浪高过一浪的WAP娱乐应用相比,行业应用还处于起步阶段。这一方面与企业级应用在安全、稳定性方面有着特殊需求有关,同时,也与企业级应用的部署相对复杂有关。为了帮助读者进一步了解WAP应用,特别是WAP在企业级应用可能遇到的问题,我们特别组织了这个专题。
“秀才不出门,便知天下事”一直是人们的一个梦想,今天,在互联网的帮助下,这个梦想我们已经实现。然而,随着社会的发展,出于业务的需要人们离开公司越来越频繁,又出现了新的尴尬——“秀才出了门,便不知家里事”,一旦员工离开了公司,又不方便接入互联网时,他们就无法获悉公司内部的各种信息,如何彻底摆脱有线的束缚,在非办公环境下及时获取信息成为不少公司CIO们的困惑。手机和相应的各种无线应用技术的诞生,给他们带来了福音,特别是基于WAP技术的移动互联网技术很好地解决了这个难题。利用WAP的交互方式可以非常方便地查询各种数据,及时了解经营形势,洞悉市场动态,掌握发展先机,为第一时间了解竞争对手信息、快速制定营销策略提供了技术可能和保障。
WAP应用的再度兴起
WAP(Wireless Application Protocol,无线应用协议)是一种向移动终端提供互联网内容和先进增值服务的全球统一的开放式协议标准。 WAP技术为人们摆脱时空及网线束缚,为随时随地畅游互联网络的梦想插上了翅膀,移动通信与互联网的沟通也由此成为可能。
其实WAP并不是一个新事物,早在1999年中国移动就已经有了这项业务。然而其早期在国内的发展并不顺利,2000年底申请开通WAP业务的用户还不足10000户。在用户的不满声中,被寄予厚望的WAP悄然退出了人们视野。不过,中国移动、联通并没有放弃,WAP业务也一直在酝酿。2004年中国移动对其WAP网关进行第五期扩容,在第36个电信日到来之时,中国移动为手机上网推出了一个十分引人注目的品牌“MO”。一时间,“手机上网 MO一下”的广告宣传铺天盖地。与此同时,借助于CDMA 1X网络的技术优势,中国联通也在热火朝天地推介“互动视界”,这一切都向人们传递出同一个信息:WAP手机上网又热起来了。
据统计,2004年底国内WAP注册用户数已达到3650万,月平均活跃用户1200万,市场规模近12亿,在短信增幅开始放缓的背景下,移动数据增值服务中WAP可谓一支独秀。与2000年相比,WAP的使用环境发生了很大的变化(参见表1)。与PC相比,WAP并非是一种颠覆性的技术,屏幕小的特点决定了WAP手机不能完全取代PC,然而PC机身大不便随身携带,也不能代替手机,同时轻便和小屏幕仍然是未来手机的发展趋势,因此PC与WAP两者之间相互补充、相互共存。手机与PC另一个区别在于前者拥有更多的用户群,并且这一数量差距还在继续扩大,这使得手机作为信息终端具备更多的优势。

这里顺便提一下中国移动和中国联通在WAP方面的区别。中国移动与中国联通在2.5G数据业务上的竞争与2G时代语音业务略有不同,移动GPRS的优势是覆盖面广,信号强,用户数量众多,支持数据业务国际漫游,缺点速度慢。而联通CDMA 1X的优势是技术先进,速度快,但部分地区网络覆盖不足,开通国际漫游数据业务的国家少。此外,在收费上双方也有不同。表2是中国移动与中国联通WAP基本通信费比较(各省之间略有不同)。

从目前WAP手机上网的内容看,新闻、娱乐、游戏等大众媒体依然是主旋律,基于行业的应用还比较少。但目前2.5网络已经非常健全,并形成了一张全球化的无线网络,这就为将各种企业应用系统进行技术延伸,实现从有线到无线的飞跃创造了条件。相信不久,无论身处何方,只要有GSM(或CDMA)信号的地方,就可以使用GPRS(或CDMA 1X)网络,通过一个随身携带的WAP手机随时(Anytime)、随地(Anywhere)接入企业内部网,访问所需的各类信息,了解第一时刻的资讯,掌握市场竞争的最新态势,运筹帷幄而决胜千里。
WAP应用的网络架构
WAP网络架构由三部分组成,即WAP网关、WAP手机和WAP内容服务器,这三方面缺一不可。其中WAP网关起着协议的翻译作用,是联系GSM网与互联网的桥梁;WAP内容服务器存储着信息,以提供WAP手机用户访问、查询、浏览等。当用户从WAP手机键入他要访问的WAP内容服务器的URL后,信号经过无线网络以WAP协议方式发送请求至WAP网关,然后经过网关的“翻译”,再以HTTP协议方式与WAP 内容服务器交互,最后WAP网关将返回的内容压缩、处理成二进制流返回到客户的WAP手机屏幕上。编程人员所要做的是编写WAP内容服务器上的应用程序或WAP网页。当然,并不是所有的手机都支持WAP,WAP手机和一般的手机不同之处在于它内置有微型浏览器(MiniBrowser)、缓存(Cache)和内存,并支持客户端Cookis 和Session。正如电脑上网要用 IE 浏览器 或 Netscape 浏览器,WAP手机上网要用微型浏览器。
中国移动与中国联通虽然采取不同的技术标准建设2.5G网络,不过,两者WAP网络仍存在较大的共性。中国移动和中国联通都建设了各自的WAP网关,并且与Internet互联网之间建立了数据连接,用户只需拥有一部WAP手机,便可以通过移动运营商的数据网络快速访问互联网上各种丰富的WAP内容资源(具体网络结构如如图1所示,与实际相比,本网络结构进行适当了简化)。

WAP应用的接入方式
企业应用系统要支持WAP应用必须与中国移动和中国联通的移动网络建立连接。根据应用的安全性要求和数据流量,有以下两种接入方案可供选择。
1.基于互联网的接入方案
如图2所示,本方案适用于已经有基于互联网架构Web应用部署的中小型企业,企业只需在安装Web服务器的位置再设置一台WAP服务器即可(为了节约成本,WAP服务器甚至可以直接部署在Web服务器上),并不需要改变现有网络的拓扑结构,也不用关心用户的连接方式,企业并不参与中国移动(中国联通)内部数据网络与互联网的网络联接,具有投资省、部署快、易维护的特点。网络安全性依赖于与互联网相连的防火墙的可靠性,安全性能中等。

在这种方式中,企业员工无论使用GSM还是CDMA制式手机均可以访问WAP服务器,即使国际漫游状态也可以通过当地的2.5G(或2G)网络登录Internet访问企业的信息,WAP手机设置采用运营商提供的标准设置,具有较强的技术通用性。
GPRS与CDMA 1X配置相比,增加了APN (Access Point Name)接入点的设置。中国移动GPRS APN接入点有三种,分别为CMNET、CMWAP和企业专用APN。CMNET用于互联网接入(对应业务品牌是“随e行”),CMWAP用于手机上网(对应品牌有“MO手机上网”、百宝箱、彩信等),企业专用APN根据行业客户需求予以定制。而中国联通的CDMA 1X通过登录用户名来识别业务类型,WAP账号对应手机上网(业务品牌为互动视界,类似移动的“MO手机上网”),CARD对应互联网接入(业务品牌为掌中宽带,类似移动的“随e行”)、Mail对应MMS多媒体信息(业务品牌为彩e,类似移动的彩信)、Java对应游戏下载(业务品牌为神奇宝典,类似移动的百宝箱)等。由此可见,由于GPRS认证方式采用APN+用户名+密码,与CDMA 1X用户名+密码的认证方式相比具有更大的灵活性,能够有效地避免不同行业之间需要使用相同账号登录的问题,也使得业务流程更加清晰。
2.基于专线方式的接入方案
为便于描述,这里移动通信运营商以中国移动为例,如果采用中国联通专线接入方式需做适当调整。这里还可以分成两类:
(1)基于中国移动CMWAP方式的专线接入方案
如图3所示,本方案适用于对安全性能、访问质量要求较高的企业,企业通过数据专线与移动网络直接相连,WAP服务器的位置既可以安装在Web服务器一侧,也可以采取主机托管的方式部署在中国移动一侧。如果是后者,移动侧需要增加独立的WAP网关,企业现有网络需做相应调整。该技术方案具有安全性能高、访问速度快的优点,缺点是需要投资购买相关的网络连接设备以及承担专线电路租金,对于已经与移动网络相连的企业(如银行、邮政等)具有较强的可操作性。
由于WAP网关直接与企业内部网络连接,而非公共IP地址,因此WAP手机需要根据具体的应用调整相应设置。用户通过CMWAP APN接入点登录GPRS网络,便可以快速访问企业内部WAP资源,但由于在移动侧未设置WAP手机登录限制,非企业内部用户也可访问企业内部网络。
(2)基于中国移动专用APN接入点方式的专线接入方案
如图4所示,移动公司为企业分配专用的APN,在关口GPRS支持节点(GGSN)网元上为用户设置一个专用的APN接入点,从而在用户使用的移动设备和企业内部网络之间构成一条无线虚拟专网(VPN)通道,解决了企业内部网络安全性及数据私密性的要求。移动运营商RADIUS服务器对移动用户提供的公司名(APN)认证; 企业RADIUS服务器对移动用户身份进行认证、授权。移动GGSN至WAP网关、企业接入路由器之间全程采用 GRE Tunnel(通用选路封装隧道),大大提升了系统整体的安全性和稳定性。此外根据企业的需求还可以在移动HLR (归属位置寄存器)上给手机号码和APN做绑定,只允许用户企业的部分手机号码能访问该企业的APN。
本方案适用于对安全性能、访问质量要求非常高的大型企业,企业通过数据专线与移动网络相连,WAP服务器的位置一般部署在Web服务器一侧,企业现有网络与移动网络要做较大调整,需要有较高的技术维护和协同处理能力,系统具有安全性能高、访问速度快、业务扩充能力强等优点,缺点是需要投资购买相关网络连接设备、RADIUS认证服务器、承担专线电路租金、APN使用费(省域APN月租费1000~2000元/月,全国性APN根据企业网络规模和业务特点另行结算)和专业技术维护人员,对于有移动办公(OA、MIS等)、移动数据服务(移动ATM、无线POS、电力数据采集等)、集团专网接入需求的企事业单位(例如政府、工商、税务、公安、环保、银行、电力、烟草等)有较强的操作性。由于通过专用的APN,可以申请专用的GPRS套餐,享受较为低廉的资费标准,通过GPRS清单很容易区分员工上网类型(用于工作还是休闲娱乐),对于员工工作产生的GPRS费用采取集团付费的方式统一支付。手机用户登录GPRS网路,需要经过特定的系统设置之后方可访问WAP服务器。用户侧设置较以上两种方案繁琐复杂,但完全杜绝了普通用户对企业内部网络的访问,在网络接入层就实现了对手机用户的认证,而前两种方案只有在业务应用层才对用户予以认证。同时由于与互联网物理上完全隔离,企业内部网络杜绝了来自互联网的病毒入侵和黑客攻击,不受互联网的影响。

以上技术方案仅仅针对WAP应用的网络连接环节,对于需要收取用户信息费的行业应用服务,还需要与相关运营商计费网关连接。

我们认为,WAP在2004年的再度崛起是市场选择的结果,它展示了WAP技术顽强的生命力。尽管与宽带稳健的增长相比,WAP正处于一个关键的爬坡阶段,但如今3G已是呼之欲出,随着3G时代的到来,将为WAP的应用提供更好的条件。可以预计,在不远的将来,WAP技术在电子商务、地理位置电子地图服务、工业设备检测、远程系统控制、信息家电等社会各个领域将有更大的作为。(作者单位: 江苏移动通信有限责任公司盐城分公司)
链 接
WAP服务器的构建
WAP服务器在本质上与Web服务器软件系统配置完全一样,选择ASP、PHP或者JSP平台完全取决于用户,惟一的区别在于Web使用的是HTML语言而WAP使用WML语言,对于有Web开发经验的企业完全可以迅速部署WAP应用。与Web丰富的页面表现形式相比,WAP更显得简洁与实用。WAP技术发展至今已经拥有较多的开发工具,利用WAP模拟器和WAP WML开发工具有助于企业开发更高效、实用的WAP应用。由于WAP交互的信息量远小于Web,因此对WAP服务器的硬件性能要求远远低于Web服务器,一台普通的PC就可以满足数以千计用户的访问。
由于WAP应用的本身的特点,在应用开发中需要采用特殊的开发工具,包括:
WAP模拟器:WAP模拟器种类繁多,有WinWap、CheckCom WAP Browser、M3Gate、Nokia Mobile Browser Simulator、Ericsson WapIDE等。根据笔者的经验,建议优先使用M3Gate,M3Gate语法结构严谨,WAP展示效果更贴近手机模式,经M3Gate测试通过的WAP应用一般可以直接应用于手机。
WML开发工具:建议选择3TL WBuilder Professional,该Web应用程序支持可视化创建WML页面并传递到互联网络可以达到的任何设备,提供发布、有效性、差错检验和预览等功能。
以下是江苏移动盐城分公司企业经营分析系统WAP版的基本配置。
WAP服务器:操作系统为Windows 2000 Server,数据库为 Oracle 8.1.7客户端。WWW服务器:IIS+ASP,操作系统为HP-UNIX。
右图为江苏移动盐城分公司企业经营分析系统WAP手机应用界面。
(计算机世界报 2005年04月25日 第15期 C10、C11、C12)
4月12日下午,2006年中国(深圳)3G亚洲峰会的3G增值服务圆桌会议在深圳会展中心如期举行。由Frost & Sullivan(中国)公司总裁王煜全主持,摩网总裁赖奕龙、a8移动总裁刘小松、万蝶移动博客CEO项方伟和赛和伟业总裁马豫京等嘉宾参与的3G增值服务圆桌会议作为本次峰会的重头戏之一,更是引起了国内外投行的极大关注。 参与讨论人员对3G到来增值业务发展的前景进行了分析和展望,并展开激烈的讨论。
短信作为2G时代数据业务的“杀手级应用”为移动运营商带来了可观的收益,而3G时代的“杀手级应用”,不会同2G一样只有某一个业务。与会专家预言,随着3G商用的日益临近,增值业务将呈现多元化发展的态势。WAP、手机音乐、手机游戏、手机电视、无线搜索、手机银行和移动商务等业务将会获得更大的发展,内容类移动增值业务会成为最大的看点。
“在将要来到的3G时代,独立WAP门户将会成为3G应用发展的主要推动力。”摩网总裁赖奕龙在会上表示,“3G不但能够将目前基本的WAP通信手段进行升级,还能够为娱乐、信息和商务类应用提供更好的用户体验环境,从而满足用户多层次的需求。”
据了解,作为此次大会唯一的手机WAP支持媒体的摩网在近期推出了移动邮箱Momail,让更多的商务人士可以更方便的进行移动办公。笔者进一步了解到,摩网即将推出的手机支付平台等新业务,这些都是摩网全面发力3G增值业务内容应用的信号。
赖奕龙认为,3G产业的发展,除了关注底层的通信技术,更应该关注应用层的服务,用户更关心的是3G能为自己带来什么服务而不是底下的通信技术。2.5G的数据服务是否被广大用户接受,也是我国发展3G业务的成败关键。就像中国互联网的发展最初由拨号上网发展到ADSL宽带一样,要由用户的应用需求去推动底层通信技术的发展。中国的独立WAP产业已经渡过了萌芽阶段,步入快速发展的阶段,而用户的旺盛需求昭示着产业的广阔前景,相信中国的独立WAP服务,会成为手机用户接受3G服务的主要推动力。
4月12日下午,2006年中国(深圳)3G亚洲峰会的3G增值服务圆桌会议在深圳会展中心如期举行。由Frost & Sullivan(中国)公司总裁王煜全主持,摩网总裁赖奕龙、a8移动总裁刘小松、万蝶移动博客CEO项方伟和赛和伟业总裁马豫京等嘉宾参与的3G增值服务圆桌会议作为本次峰会的重头戏之一,更是引起了国内外投行的极大关注。 参与讨论人员对3G到来增值业务发展的前景进行了分析和展望,并展开激烈的讨论。
短信作为2G时代数据业务的“杀手级应用”为移动运营商带来了可观的收益,而3G时代的“杀手级应用”,不会同2G一样只有某一个业务。与会专家预言,随着3G商用的日益临近,增值业务将呈现多元化发展的态势。WAP、手机音乐、手机游戏、手机电视、无线搜索、手机银行和移动商务等业务将会获得更大的发展,内容类移动增值业务会成为最大的看点。
“在将要来到的3G时代,独立WAP门户将会成为3G应用发展的主要推动力。”摩网总裁赖奕龙在会上表示,“3G不但能够将目前基本的WAP通信手段进行升级,还能够为娱乐、信息和商务类应用提供更好的用户体验环境,从而满足用户多层次的需求。”
据了解,作为此次大会唯一的手机WAP支持媒体的摩网在近期推出了移动邮箱Momail,让更多的商务人士可以更方便的进行移动办公。笔者进一步了解到,摩网即将推出的手机支付平台等新业务,这些都是摩网全面发力3G增值业务内容应用的信号。
赖奕龙认为,3G产业的发展,除了关注底层的通信技术,更应该关注应用层的服务,用户更关心的是3G能为自己带来什么服务而不是底下的通信技术。2.5G的数据服务是否被广大用户接受,也是我国发展3G业务的成败关键。就像中国互联网的发展最初由拨号上网发展到ADSL宽带一样,要由用户的应用需求去推动底层通信技术的发展。中国的独立WAP产业已经渡过了萌芽阶段,步入快速发展的阶段,而用户的旺盛需求昭示着产业的广阔前景,相信中国的独立WAP服务,会成为手机用户接受3G服务的主要推动力。