论坛首页 Web前端技术论坛

XMLHTTP和浏览器端表现技术的讨论

浏览 72246 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-11-03  
robbin,其实我们又走到一块了。我们也很看好 Flex 的开发方式,唯一的障碍就是 Flex 是要花钱的(似乎现在性能也还有些问题)。而且在很多年前我们决定走自己的路的时候还没有 Flex 这个东西。

其实 XMLHTTP 简单理解起来就是 XML on HTTP,比起 SOAP(Simple...)要简单 10 倍。XMLHTTP + JS 这种开发方式和 Flex + XML 的开发方式可以划为一类。差别是 Flex 是商业软件,有很多现成的控件可以用,而如果使用 XMLHTTP + JS 就需要比较费力地自己积累一套开发控件。

这两种开发方式都是比传统的基于 Form 的请求/响应模式更好的开发方式,因此我认为这类架构代表着 Web 开发将来的方向。

至于如何与现有服务器端的技术(Struts、Webwork、Tapestry、Spring)更好地结合的问题,这又是一个很好的咨询方向了。
0 请登录后投票
   发表时间:2004-11-03  
毕业2年,看着我们项目的失败,我已经对html+js做ERP失去信心。
一个月前看到可以用flash ria,就去试试.flash mx 2004 pro提供的UI组件不错,而且自己开发是Ui组件页不难,网上资源也很多。用flash可能要比用jfreechart好吧。flash跟java连接,可以用url,webservice,socket.
我想在局域网的话用socket会好点吧。
好像flex 的控件,flash也可以用的。
flash的编程工具还需要增强,虽然比调试js好多了。
我曾经想过用spring +webwork+flash做个demo,
但是想想好像没有什么理由去用webwork.
0 请登录后投票
   发表时间:2004-11-03  
to neuhawk:
其实如果已经决定了更多地采用客户端的技术的话,Webwork 这一层确实是可以省掉的。因为客户端所需要的其实也不过就是一个可以接收和发送  XML 的 Servlet 而已(至于这个 Servlet 的负载均衡,那是另外的一个问题我们以后再谈)。表示逻辑和业务逻辑分离的问题也不一定需要采用 MVC 的方式来解决了。因为现在表示层和业务层的分界线就是 B/S 间的界限,你只需要把 XML 格式的数据传给浏览器就可以了。这样的架构就和我们完全把表示层的开发放在浏览器端来做是一样的了。
0 请登录后投票
   发表时间:2004-11-03  
不是有个类似flex的东西开源了吗?
我是比较赞同midwinter的这样的框架。
如果前端用flash做,那更加实用了。
不过用flash做UI的还不多,相信会逐渐多起来了。
flex1.5性能提高了很多了。
据mm公司说,flash 8 ball的性能会更好。
如果用flash,我想jfreechart应该就可以丢弃吧。
0 请登录后投票
   发表时间:2004-11-03  
我中午稍微休息了一会,没想到这里还有这么多人在热烈地讨论。可以看出Robbin是个性情中人,眼里是揉不得沙子的。你提了很多问题我现在不能一下子回答你,但你显然没有完全了解我利用XMLHTTP进行开发的程序结构。你说XMLHTTP事实上只是代替了HTML FORM POST,事实上不仅仅是这么回事,在我看来XMLHTTP事实上是JS和JAVA SERVLET两种异构对象之间的消息机制的一种封装,如果不去看细节的话,我们可以想象一下JS object和JAVA object之间有一种办法可以象Java object和java object之间一样地进行消息传递了。就好象JS和JAVA运行在同一个运行时环境中一样,这样考虑的话是不是对你的理解有些帮助呢。

关于MVC的应用程序框架我感觉是一种MVC束的结构,是多个MVC并行地运用,象是中间通过CONTROLLER扎在一起的一捆稻草,而应用了XMLHTTP的开发框架我更愿意将之称为一个构件级的开发框架,它是一种MVC串联起来的链状结构。我的框架中的MVC是将一个软件构件分为五层结构,分别是VIEW(HTMLDOM)、VIEW-Controller(JS)、Controller(Servlet)、Model-Controller(DTO)、Model(PDO)。这些结构之间的通讯全是依次进行的,绝不会跳层通讯,在这个结构中隐含着三个(或是四个)小的MVC结构,也可将之看作是MVC的递归应用,不知这样的描述会不会让你感觉到与STRUTS、WEBWORK之间的不同之处。我应用这种结构和自己积累的代码感觉到开发速度提高是一个质的飞跃,而不是诸如WEBWORK优越于STRUTS这类的改良了。

我现在正在将这个框架描述出来,等完成后我会拿到这来供大家讨论,因为我在这里学到了很多,我很留恋这个地方。

另外:banq不是一个大拿吗,什么时候变成反面教材啦,怎么一说到banq所有的人都急了?这中间是不是有什么典故啊,恕我寡闻,哪位有兴趣说说看。
0 请登录后投票
   发表时间:2004-11-03  
用flash的数据帮定功能和UI组件,能非常快开发出界面的。
用flash+xml好处有:
1、程序员不用再涉及界面了,美工也不用看那些头疼的标签了,所见即所得,分工明显。
2、UI可以做的很漂亮,产品演示的时候,可以吸引用户的目光。
3、很多的交互性,做chart也十分方便。
4、客户端可以不用安装(可能要升级flash player)。

缺点:
验证方面功能还需要提高(可以自己做)。
速度需要提高。
flash mx编程方面也需要提高。
0 请登录后投票
   发表时间:2004-11-03  
to jasonhsu:
你们的这个架构其实比我们的要复杂的多。以前我想过,因为 XMLHTTP 请求必须首先在浏览器端发起,所以在浏览器端也必须用 JS 来实现 Controller,否则服务器端 Servlet 实现的 Controller 是没有办法进行控制的。现在看了你的发言,其实就是你说的 View-Controller。

不过我们现在感觉采用了 XMLHTTP 以后,MVC 最主要的作用(实现表示逻辑与业务逻辑的分离)似乎就不是那么明显了,因为现在表示逻辑与业务逻辑其实已经很自然地分开了。而以前我认为 MVC 的出现和普及很大程度上是为了弥补 JSP 本身设计上的缺陷。不过 MVC 其实还有其它的用途,例如很方便地通过配置切换 View(我们现在只有一种 View,就是浏览器,所以这方面的需求并不是很大)等等。

不过我相信你们的这个架构应该可以比我们的架构提供更多的灵活性,期待着你将来进一步阐述这个架构的设计思想。

Good luck!
0 请登录后投票
   发表时间:2004-11-03  
增强浏览器端交互能力的办法有很多,总结如下:

1、HTTP GET/POST

2、XMLHTTP/Flash

使用HTTP POST的方式发送格式化为XML的数据

3、Applet/ActiveX

4、XAML/XUL

前两种方式不管客户端技术如何设计,总归是使用HTTP协议的方式,因此对于服务器端的框架来说,和传统的基于HTML方式下的服务器端框架没有本质区别。这意味着,你用Flash也罢,用XMLHTTP也罢,用HTML也罢,你后端的Webwork照旧(也许需要一个Interceptor来把XML转化为POJO)。因此在我看来XMLHTTP的竞争对手是HTML POST FORM和Flash,而不是Struts/Webwork

Applet/ActiveX其实就是披着浏览器皮的Desktop Application而已。然而后两种方式下面,也已经和传统的C/S不同了。传统的C/S业务逻辑是放在客户端处理的,服务器就是一个数据库。而当前的C/S,实际上Client这一端只处理和用户的交互,数据的显示,以及简单的数据校验,大部分的业务逻辑最终还是要提交到服务器,在服务器端处理业务逻辑的。而考虑到在Internet上面部署的需要,以及跨越防火墙的需要,那么实际上Applet/ActiveX方式往往也是采用HTTP/HTTPS协议来和服务器通讯的。

因此不管客户端技术怎么变,只要客户端是通过HTTP协议来和服务器端通讯的,那么服务器端统统一视同仁。我不管你是XMLHTTP也好,Flash也罢,HTML Form也行,Applet/ActiveX也是,我Servlet照旧阿。

至于你是自己封装Servlet,来处理请求,还是用Webwork/Struts这封装Servlet,处理请求,抑或是一个基于HTTP协议的SOAP消息,这和客户端实际上并没有太紧密的关系。我个人认为将来的Longhorn的XAML和Mozilla的XUL如果仍然采用基于HTTP协议的通讯方式的话,那么我们服务器端编程还是外甥打灯笼 - 照旧。

在当前这么多客户端技术当中,还真的没有一个能够一统江山的,所以就看具体的应用场景了:

dlee他们XMLHTTP方面资源充足,就采用XMLHTTP;
如果某个公司在Flash编程方面积累比较多,就采用Flash方式,例如我们原先那样;
如果某个公司在Java GUI编程方面牛,就采用了Applet方式,我观察,一般跨国公司都比较喜欢这种方式,例如Oracle和BEA页面交互方式统统采用Applet;
如果某个公司业务逻辑太复杂,也有采用ActiveX的,例如招商银行网络银行,例如Chinaquest等等;
如果这些条件你都不具备,只好还是老老实实的用HTML GET/POST罢,就像我现在一样。

在未来我还是比较期待Longhorn的XAML和Mozilla的XUL的。只不过不管客户端风云如何变幻,只要还是HTTP协议通讯方式,服务器端的框架就不会变。
0 请登录后投票
   发表时间:2004-11-03  
其实在大方向上大家都是一致的。
开始接触flash的时候是2002做一个外包的项目,前台用flash,后台用jsp/servlet,当时中间就是采用的xml就行数据传输,自己定义格式。
不过后来就真的用flash在前端做项目了,不过不是自己定义xml了,而是改用web service了,后台改用.net了,当时他们还自己开发了一些flash控件。
0 请登录后投票
   发表时间:2004-11-03  
robbin,其实两种开发方式差别还是比较大的。XMLHTTP 实际上需要把 MVC 的 Controller 前移到浏览器端,而且强调一种技术就肯定会弱化另外一种技术。所以 XMLHTTP/Flex 和 Struts/Webwork/Tapestry 还是存在着很大的竞争关系。但是这些浏览器端的技术到是可以很好地与 Spring 等轻量级的容器结合起来。因为 Spring 的强项在于容器,本来在 Web 层就是比较弱的。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics