开发asp.net2.0手机用网站 点滴[xgluxv]
最近一段时间一直在做一个给手机浏览的网站基于asp.net2.0,现在第一期已经到尾声,说说开发的感想。客户要求只要支持wap2.0的手机都能浏览(我刚开始想他们应该说得是属于智能手机级别的都能浏览,后来发现有点不对,他们的测试机很多都够不上这个级别),开发指定工具vs2005+asp.net2.0,,看了看微软对于asp.net2.0 mobile开发的说明,ms说asp.net2.0的服务器端控件全部支持wap2.0的,.net会自适应的。这个东西好啊,所以老大决定放弃使用mobile web form建页面,全部使用普通的web form来建。
一开始做测试页面先试试,就碰到问题,openwave模拟器都浏览不了,头痛。老大查了查资料,决定把自动生成页面里的
由于要给手机浏览,页面就要做的简单一点,这个也好啊。对页面的布局,我属于白痴级别的。开始编码,后台数据库操作,web service的调用,session管理,log管理,工具类,页面功能基本上都开发完成。这时候问题出来了 随着测试机类型的增加,毛病越来越多,很多机型不能访问网站。左测右测,后来得出结论是javascript的问题,只要页面里生成javascript的语句总有机器不能浏览页面的。全体吐血......
脑袋撑破,最后想出一个 非常破的解决方案,把所有页面上需要postback的地方,比如button等控件全部换成link,而需要提交内容的地方 换成submit的html控件。换成link之后要自己手工控制很多参数的变换,看得眼很晕~,不过也是有好处的 由于没有自动的postback,viewstate也用不到了,把所有控件的viewstate禁用掉,页面变小了 嘿嘿。而使用submit带来了一个问题,submit不能在<form runat=server>中使用,只能放<form id="form2" action="xxx.aspx" method="post">中,这样一来 又有些asp.net2.0的服务端控件不能在这样的form中使用,奇怪的是 不是全部不能用,而是有些不能用。这样一来在一个页面里 就要规划一下放几个form,有些是runat=server,有些不要。改的头上都是汗....
终于还是做完了,手机测试挺顺利,这时候 老外公司说要对源代码进行检查,比较狠的是 据说请来了一个微软的专家,二话不说 发过来一个框架的例子 说一定要按照这个框架这样写代码 我一看 business+datalayer+web form+framwork ,幸亏 我们写代码的时候是按照petshop4.0的框框来的,交上代码 两天后发回重审,说他的框架里没有model这个项目,我看看,原来我的Model跟他的Business层里的BusinessObject项目是同一个功能,把代码全部移到BusinessObject里,再使用一个模式实现了BusinessFacade层,全部数据库操作,web service调用都交给它了。再看修改意见 数据层的数据库操作要使用Factory模式,不然只支持sql server,对以后的扩展不好,好 我改。接着是把全部中文注释删除光光,不然他们说在他们那里打开出现乱码,公司领导觉得很不好....., 最后 老外还没有向我们要文档,也许忘了 以后会补吧!
一开始做测试页面先试试,就碰到问题,openwave模拟器都浏览不了,头痛。老大查了查资料,决定把自动生成页面里的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
换成
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
这样一来好多了,openwave能正常浏览了,决定使用正式开发。<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
由于要给手机浏览,页面就要做的简单一点,这个也好啊。对页面的布局,我属于白痴级别的。开始编码,后台数据库操作,web service的调用,session管理,log管理,工具类,页面功能基本上都开发完成。这时候问题出来了 随着测试机类型的增加,毛病越来越多,很多机型不能访问网站。左测右测,后来得出结论是javascript的问题,只要页面里生成javascript的语句总有机器不能浏览页面的。全体吐血......
脑袋撑破,最后想出一个 非常破的解决方案,把所有页面上需要postback的地方,比如button等控件全部换成link,而需要提交内容的地方 换成submit的html控件。换成link之后要自己手工控制很多参数的变换,看得眼很晕~,不过也是有好处的 由于没有自动的postback,viewstate也用不到了,把所有控件的viewstate禁用掉,页面变小了 嘿嘿。而使用submit带来了一个问题,submit不能在<form runat=server>中使用,只能放<form id="form2" action="xxx.aspx" method="post">中,这样一来 又有些asp.net2.0的服务端控件不能在这样的form中使用,奇怪的是 不是全部不能用,而是有些不能用。这样一来在一个页面里 就要规划一下放几个form,有些是runat=server,有些不要。改的头上都是汗....
终于还是做完了,手机测试挺顺利,这时候 老外公司说要对源代码进行检查,比较狠的是 据说请来了一个微软的专家,二话不说 发过来一个框架的例子 说一定要按照这个框架这样写代码 我一看 business+datalayer+web form+framwork ,幸亏 我们写代码的时候是按照petshop4.0的框框来的,交上代码 两天后发回重审,说他的框架里没有model这个项目,我看看,原来我的Model跟他的Business层里的BusinessObject项目是同一个功能,把代码全部移到BusinessObject里,再使用一个模式实现了BusinessFacade层,全部数据库操作,web service调用都交给它了。再看修改意见 数据层的数据库操作要使用Factory模式,不然只支持sql server,对以后的扩展不好,好 我改。接着是把全部中文注释删除光光,不然他们说在他们那里打开出现乱码,公司领导觉得很不好....., 最后 老外还没有向我们要文档,也许忘了 以后会补吧!
路漫漫其修远兮 吾将上下而求索
my blog