这两天一直在思考着一个问题,在MVC中如何实现在不改变M和C的情况下,仅修改V为web和移动客户端的方案。
今天,找了一天的相关资料,现在整理一下。这里说借Javaweb,Android,iOS平台来说明。下面详细的说明一下。
从理论上来说,对于MVC,完全可以在M和C不变的情况下,只修改V来做到服务数据共享的。不过,如果你的应用有这样的需求,那么你在设计MC的时候,你就不得不去考虑到如何在各个V之间数据的接入。
在Javaweb中,MC可以用servlet或者struts等完成,对于V就使用JSP来完成。来自MC数据在JSP展示的方式可以用EL表达式来完成,当然还有其他的方式,比如有人就在JSP里面写了Javacode——这可不是推荐的方式哦!!!
在Android或者iOS移动客户端中,就不太一样的了。如果你用的是WAP,那么你就做一个WAP站点,也可以了~用一个webview,在网页在里面show出来就哦了。不过,如果用native的方式来做的时候,做法就不一样了。
对于移动设备与服务器的数据交互这块一直是我特别想去了解的。早上看了一下oschina的android-app源码,在里面找到了我想知道的内容。回想不久前完成的银联支付宝对接平台,在与银联或者支付宝server交互的时候使用的就是和这个类似的方式——使用xml报文。而oschina的android-app里面也是使用的一样的方式,使用载有数据的xml在客户端与服务端进行交互。当然,这里也可以使用JSON。
其实,就我个人的理解,XML和JSOn都只是一种将数据组装的方式,便于我们去“肢解”数据。他们的作用都是一样的。如果你可以的话,也完全可以自己定义一种数据格式,只要按照你定义的格式处理数据效果一样。不过,谁会那么做呢。XML,JSON都用3dparty的东东可以用,何必呢!比如,XML Pull Parsing,SAX等,在这里有一个详细的介绍的文字可以参考。
按照上面的过程之后,问题就来了! 在移动设备中需要的是XML或者JSON数据,但是WEB该如何处理呢???
为了这个问题,我今天一直在找各种资料。现在发现有两种可选的方式(当然可能还有其他的方式,只是需要时间去了解):
I) 使用JQuery来处理JSON数据,然后在html中展示数据,对与XML也可以用同样的方式来处理。在JQuery中对JavaServer发起request,然后response数据(JSON或者XML)解析过后写到html
II) 对于WEB和移动设备在request处理完成之后,按照两种方式并存的形式将数据返回。一种是返回用户WEB的数据,就是可以用户EL的数据——比如将数据写到session中,再在JSP中使用EL将数据中session抽出来;而另一种方式,就是在request后,把数据一并写到XML或者JSON对象中,用于移动设备。
按照上面的做法,可以完成WEB与移动设备的MV共享。不过,他们的问题也比较严重。使用第一种方式来做的,使用JQuery来解析XML或者JSON无疑给开发调试等带来很大的不便。使用第二种方式,服务器对于WEB或者移动客户端的单一请求就不得不做一些“无用功”。
以上的方案只是一种可选方式,不知道现在成熟的app如何实现的——继续研究~
在这里有一个android与server端servlet交互的例子。当然在这里没有使用XML或者JSON,不过原理都是一样的了~作为参考mark一下。
来自这里