论坛首页 Web前端技术论坛

REST+RIA方案

浏览 34887 次
锁定老帖子 主题:REST+RIA方案
该帖已经被评为良好帖
作者 正文
   发表时间:2007-07-25  
hax 写道
treenode 写道
hax 写道
我前公司那个商城,原来是基于xslt转换成html片段更新进去的,这个模式在实际中暴露出很多问题。



我个人的看法,xslt是“向正确的方向迈出的错误的一步”。服务器生成XML格式的数据,浏览器根据XSLT转换为界面,这个思路和REST已经很接近。但是界面上的问题并不适合完全用XML来解决,那个时候人们太迷信XML是万能药了。


不是那个时候人迷信的问题。

主要的问题是xlst并不能保证你分离内容和样式。反而会倾向于把html作为presentational语言。如果xslt中包含了操作内容的js,那更是混乱之源。


xslt用来分离内容和样式完全做到了。 用html是浏览器的问题 带有js是交互设计和ajax实践的问题。

再项目中你是如何用xslt的 ? 

在我的系统中xslt和webapp是分离的。 xslt资源本身是独立的可以自由编辑的 在设计交互界面的时候可以灵活编辑xslt, 也就是说xslt虽然是运行在server端 但它是和view 交互同步开发的。

再简单的说就是开发webapp的时候不用考虑xslt
0 请登录后投票
   发表时间:2007-07-25  
hax 写道




(1)不知道怎样才叫合理的规划。目前我看到的两种主流做法,a、由服务器组织成页面片段,再发到客户端;b、服务器只发送变化的数据,客户端根据数据生成对应的HTML DOM。前者比较容易处理,也是depot例子所使用的做法,但是此方法需要发送的数据量更大,而且从原理上来讲是比较低效的(因为页面结构并没有变化,变化的只是数据,不需要都重复发送)。协议上优化并没有根本解决此问题。后者和Flex在效率上就没有什么差别了,不过用JS代码生成HTML DOM开发效率很低,也不利于页面设计。有没有所谓的“客户端动态页面模板”技术?如果有,那么这个问题是可以解决的。

(2)不用考虑页面缓存,服务器就可以专心考虑如何缓存数据与资源,这正好是服务器的专长,不是么?

(3)对于数据请求,flash和ajax是没有区别的,完全取决于服务器的响应速度。flash的优点是只请求数据不需要请求页面。这个区别在切换页面的时候会体现出来。

(4)套用一句老话,“不是你的错误,却是你的问题”。应用99%的时候都很好,但突然之间给你一个大大的HTTP 500错误,或是进度条转了100多圈还没有任何反馈,这是用户体验最差的地方,如果界面不是一次性下载完成的,迟早会遇到这个问题。
0 请登录后投票
   发表时间:2007-07-25  
treenode 写道
hax 写道


(4)套用一句老话,“不是你的错误,却是你的问题”。应用99%的时候都很好,但突然之间给你一个大大的HTTP 500错误,或是进度条转了100多圈还没有任何反馈,这是用户体验最差的地方,如果界面不是一次性下载完成的,迟早会遇到这个问题。


用flash就可以只发一次请求吗 ? 不可能

如果需要一个动作中含有多次请求 flash一样需要等待server返回数据 估计用户体验好不到哪去。
0 请登录后投票
   发表时间:2007-07-25  
hax 写道

你批错人了。早期是浏览器为了互相争夺用户,而盲目推出未经良好设计的新功能。罪不能怪在w3c上,都是浏览器厂商的问题。尤其是IE在竞争中获胜后,MS背弃了web开发者,背弃了遵循标准的承诺。直到ff重新成了有力的竞争者,MS才对自己的产品做了一些改进。



这个事情需要一分为二的来看,没错,早期浏览器确实是在为了争夺用户而匆忙推出新功能,可是这时候w3c在哪呢?当IE和NN各自实现了不标准、但是确实能解决Web开发者问题的方案时,w3c为开发者做了什么呢?等IE事实上统治了互联网的时候才慢吞吞的来“统一标准”,俟河之清,人寿几何,为什么那么多网页only for IE,因为人家实在是没有耐心慢慢等待你的标准了。

后来Web标准逐渐得到大众认可,MS在这个时候仍然顽固的抵制标准,这就很成问题了。不过历史的说,我认为当初微软做的并没有错。
0 请登录后投票
   发表时间:2007-07-25  
winterwolf 写道

用flash就可以只发一次请求吗 ? 不可能

如果需要一个动作中含有多次请求 flash一样需要等待server返回数据 估计用户体验好不到哪去。



前面说了,flash总是要请求数据的,但不用请求页面,最多取不到数据,不会突然出现一个“页面找不到”或“服务器内部错误”之类的死给你看。

0 请登录后投票
   发表时间:2007-07-25  
treenode 写道
winterwolf 写道

用flash就可以只发一次请求吗 ? 不可能

如果需要一个动作中含有多次请求 flash一样需要等待server返回数据 估计用户体验好不到哪去。



前面说了,flash总是要请求数据的,但不用请求页面,最多取不到数据,不会突然出现一个“页面找不到”或“服务器内部错误”之类的死给你看。



那么你认为xmlhttp会显示“页面找不到”或“服务器内部错误”了 ? xmlhttp也不请求叶面的 资源 和 view不时叶面 view只是加工过的数据罢了


谈谈多次请求的处理吧

我认为除非必要 否则应该尽量让server处理将多次请求变成一次请求 一方面速度快用户体验好。 另外这样设计更合理 网络是分布样式缓存 没必要将本应中间缓存的数据也甩到客户端
0 请登录后投票
   发表时间:2007-07-25  
treenode 写道

(1)不知道怎样才叫合理的规划。目前我看到的两种主流做法,a、由服务器组织成页面片段,再发到客户端;b、服务器只发送变化的数据,客户端根据数据生成对应的HTML DOM。前者比较容易处理,也是depot例子所使用的做法,但是此方法需要发送的数据量更大,而且从原理上来讲是比较低效的(因为页面结构并没有变化,变化的只是数据,不需要都重复发送)。协议上优化并没有根本解决此问题。后者和Flex在效率上就没有什么差别了,不过用JS代码生成HTML DOM开发效率很低,也不利于页面设计。有没有所谓的“客户端动态页面模板”技术?如果有,那么这个问题是可以解决的。

(2)不用考虑页面缓存,服务器就可以专心考虑如何缓存数据与资源,这正好是服务器的专长,不是么?

(3)对于数据请求,flash和ajax是没有区别的,完全取决于服务器的响应速度。flash的优点是只请求数据不需要请求页面。这个区别在切换页面的时候会体现出来。

(4)套用一句老话,“不是你的错误,却是你的问题”。应用99%的时候都很好,但突然之间给你一个大大的HTTP 500错误,或是进度条转了100多圈还没有任何反馈,这是用户体验最差的地方,如果界面不是一次性下载完成的,迟早会遇到这个问题。


合理规划我主要是指js脚本,即按需脚本载入,应按照一个合理的颗粒度来切分实际的装载单元。推而广之,页面也是一样。哪些页面可以被合并到一个single page里,哪些需要时再载入,哪些需要切换到一个新的page,这些都是需要规划的,有些时候还需要实践检验。

你所谓不考虑页面缓存如果是指服务器端逻辑,那是不用考虑的。但是响应客户端的时候,你需要向客户端交代,每个资源是否可以缓存,多久过期,这样中间代理和客户端都可以采取一个很好的缓存策略。

你说flash只要请求数据。Ajax当然也可以只请求数据。问题是一个大flash或者完全的spa,其实实际效果都并不好。所以要合理规划。

h-t-t-p500(javaeye识别url存在问题)或者进度条假死,这些是设计和实现是否周到的问题,不是架构的问题。Ajax当然也可以有很好的错误处理。还有,初次下载的时候,你的服务器死了,就算flash,不一样404嘛。
0 请登录后投票
   发表时间:2007-07-25  
treenode 写道
这个事情需要一分为二的来看,没错,早期浏览器确实是在为了争夺用户而匆忙推出新功能,可是这时候w3c在哪呢?当IE和NN各自实现了不标准、但是确实能解决Web开发者问题的方案时,w3c为开发者做了什么呢?等IE事实上统治了互联网的时候才慢吞吞的来“统一标准”,俟河之清,人寿几何,为什么那么多网页only for IE,因为人家实在是没有耐心慢慢等待你的标准了。

后来Web标准逐渐得到大众认可,MS在这个时候仍然顽固的抵制标准,这就很成问题了。不过历史的说,我认为当初微软做的并没有错。


你这种观点不公平。W3C又不是上帝,他不过是个行业组织而已,对厂商又没有强制力。况且我们都知道,在商业机遇和竞争前,你会把遵循标准放在首位吗?当然是不断推出新功能,先笼络住开发者再说,管它将来如何呢?这是一个现实的世界,所以,虽然样式表的思想早有了,但是浏览器厂商没有先想着怎么设计一种样式表语言来满足需求,而是不断的添加新标签,因为这样最简单!至于你说“确实能解决开发者问题”,那不过是解决了缺乏经验,目光短浅的开发者的问题。所以今日之不幸,实是为当时开发者还债也。

不幸的是,时至今日,大多数开发者仍然是这样的。有时候人们还大言不惭的说worse is better。

所以说,我认为w3c虽然也有要改进处,但在连续推出html/css等非常棒的规范已经是尽责了。


至于你说w3c等ie占到统治地位后才来统一,完全是你的臆测,并非事实。

事实上,在ie还不如netscape的时候,ms还是对规范很有兴致的,他是最早部分实现css1的浏览器。到98年webstandard运动兴起,netscape终于决定转向符合规范的Gecko开发计划,这也与当时ns丧失大量市场份额有关。讽刺的是,这是ms却逐渐放弃了改善浏览器的符合规范程度的步伐。

至于说only for ie,这只能证明两点,第一,微软的市场策略是成功的,不管他是用什么手段。第二,许多开发者是愚昧而可怜的。他们不是没有耐心,而是基于一些其他原因。

待续。
0 请登录后投票
   发表时间:2007-07-25  
FLEX何必用REST呢? 后台用J2EE直接做, FLEX直接CALL SERVICE LAYER METHODS, 返回的都是BINARY DATA.  FLEX直接使用ACTIONSCRIPT的CLASS (AS CLASS MAP 到 JAVA CLASS).

BINARY数据比XML SIZE要小很多, 而且不需要在XML和数据之间转换, 没有OVERHEAD.

何必扯着REST呢?  用更简单更高效的实现方法就行了啊!
0 请登录后投票
   发表时间:2007-07-26  
winterwolf 写道


那么你认为xmlhttp会显示“页面找不到”或“服务器内部错误”了 ? xmlhttp也不请求叶面的 资源 和 view不时叶面 view只是加工过的数据罢了


谈谈多次请求的处理吧

我认为除非必要 否则应该尽量让server处理将多次请求变成一次请求 一方面速度快用户体验好。 另外这样设计更合理 网络是分布样式缓存 没必要将本应中间缓存的数据也甩到客户端




不请求页面当然不会出问题。我说的本来就不是xmlhttp,不要对号入座啊。

多次请求情况下,请求次数肯定是越少越好。从前包括现在许多Web应用中,一个表单就要POST一次,这并不是很合理的作法。有些时候BatchUpdate会更好,不过我还不知道有没有什么框架直接支持这样的功能。

0 请登录后投票
论坛首页 Web前端技术版

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