移动端与服务端交互内容简介本文主要从架构上进行阐述,讲解移动端的开发的两种技术路线,以及移动端如何与服务端进行交互。移动端开发移动端的开发主要有两种方式,第一种是基于手机的API开发方式,第二种是基于手机端的浏览器开发方式。首先介绍这两种开发的方式以及优缺点。1、基于手机API开发原理:手机端使用手机API,如AndroidAPI,进行开发,服务端只是一个数据提供者,如JSON。手机端接到JSON后将JSON反序列化成对象,进行逻辑处理,再在界面层进行展示。当然你也可以不用JSON,用XML、甚至你自己能读懂的某种字符串如commaString(逗号分割的字符串),虽然这一切都没有JSON在JAVA中来的方便,本文就将使用JSON。这种方式,相当于传统开发中的C/S模式。优缺点:这种方式的优点在于,手机端开发更为灵活,可以应用手机API提供的所有API,可以对手机进行底层的控制,如:可以使用系统提供的更炫的UI、很方便的使用摄像头、播放视频、拨打电话、调用联系人、发送短信(虽然后三者在android平台用浏览器的方式也可以比较方便的实现,但这里讲的是针对全平台的思路)……这种方式的缺点也显而易见,手机端开发周期长、可移植性差、无法跨平台,即使你之前已经有了很强大的WEB应用,针对手机客户端这部分WEB端也可能要重新开发。服务器角色:在这种方式中,服务器所扮演的是数据提供者的角色,它处理手机客户端的请求,并将请求通过业务逻辑层的处理生成客户端要求的JSON回发到客户端,于是:视图层仅仅是显示JSON而已,没有Jquery、没有Ajax、甚至没有HTML。其实这种方式就是开发传统意义上的APK,相当于一个c/s开户端。2、基于手机浏览器的开发原理:遵循Webkit的标准为手机客户端开发跨平台的网站应用,这时手机端仅仅是一个包了浏览器外壳的简单程序,这个外壳通过访问Web服务器,获得HTML流,并将HTML用支持WebKit的浏览器控件解析(如Android的WebView),从而实现界面的展现。另外在Android中,还可以“重载”JavaScript方法,获得更接近Android原生程序的用户体验,如将JS中的alert”转换”成Android的AlertDailog,再比如解析链接中的tel:”调用拨号界面,等等。但互动效果依然有限。这种方法相当于传统开发中的B/S模式。优缺点:WebKit方式的优缺点与API方式更好相反,广义的讲,WebKit无法提供手机原生UI、对手机硬件的控制能力有限,导致程序交互性较差;由于视图层依赖于Web服务端,所以程序会更加依赖网络,可能更加耗费流量;但WebKit方式的优点同样令人着迷:跨平台、手机端开发周期很短、如果你已经有了很强大的WEB应用,开发WebKit或许就仅仅是做一个新的视图层那么简单。对于最后一点,也许我该多说几句。对于JSON方式,由于要使用JSON输出,你就要重新构造一个各种类转换成必要JSON的逻辑,比如我要在手机客户端中显示一个用户的若干信息,我需要让服务器传一个UserJson给客户端,那这个JSON就要在服务器重新构造,那怎么构造呢?BLL要改、DAL同样要改,这个不是个简单的事情!当然,你也可以增加一个序列化对象为JSON的通用静态方法,但这样的方式往往并不是万能。首先通用静态方法只能处理简单的对象,当一个对象中包含另一个需要被序列化的对象,那通用方法则未必成功;又比如,你需要一些转换,比方说username属性,输出时改名为uid(为了给客户端节约点流量嘛),那还是需要为每一个类增加对应的序列化方法,还是要在BLL、DAL动手脚,延长开发周期。服务器角色:WebKit方式的服务器角色,就不仅仅是数据提供者那么简单,还需要提供完整的HTML视图,似乎看来,相比第一种方式,是加了视图层,但是从某种角度说,添加视图却正好实现了对之前业务逻辑的复用,开发反而更为简单。总结:1、从界面效果用户体验角度来看,肯定是基于手机的API开发肯定要好。2、从项目开发速度角度来看,基于手机浏览器的开发要快,直接用asp.net开发即可,移动端只要开发一个版本即可。基于手机的API开发,安卓和苹果需开发两个不同的版本。3、从人力资源角度来看,基于手机的API开发需要多名精通安卓和苹果的开发人员。综合考虑,可以采用两种结合的方式。对于界面效果用户体验要求比较高的模块可以采用基于手机API的开发方式,对于用户的订单管理、基本信息管理模块可以采用基于手机浏览器的开发方式。我的上家公司就是采用这种开发方式。服务端与客户端交互1、服务端建议采用三层架构,再增加一个WebService层。2、客户端与服务器交互,分两种情况。第一种基于手机API开发,交互过程如下:⑴客户端通过http协议访问服务器的一个页面,=111⑵服务器经过处理后,把这个页面生成为仅有json数据的文本流⑶客户端得到JSON流后,反序列化为对象、业务处理、显示等等。交互图如下:服务器移动客户端访问接口页面WebService数据库通过http协议请求访问调用webService访问数据数据处理返回结果返回json结果返回json结果第二种基于手机浏览器开发,交互过程如下:⑴客户端网站调用服务器WebService接口。⑵客户端得到JSON流后,反序列化为对象、业务处理、显示等等。交互图如下:服务器移动端网站程序WebService数据库调用webService访问数据数据处理返回结果返回json结果