|
精华帖 (0) :: 良好帖 (16) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-05-08
如果这样想的话,对“REST”这个缩写词的理解又更清晰了一点:
对于命名,这些大牛们应该是斟酌再斟酌的,应该会力求准确。既然用了“Transfer”,应该就是“Transfer”最被大众接受的意思,应该也会是跟FTP、SMTP里面的“T"一样的意思。 这样说来,作者想强调的应该是:在HTTP上传送的不是文件,更不是邮件,而是“表形性状态”。 (抱歉我又想换个新词,因为我觉得“Representational”翻译成“表形性”会更准确、贴切,这个词强调的应该是“形”上的东西,比如界面、文档,“表示”的话含义太宽泛,“表述”并没有牵扯到“形”。“表示层”我也是觉得叫“表形层”更能达意。) 也就是说,Web服务器输出的HTML、PDF、XLS等东西不应该被看作文件,而应该被看作资源的当前状态的“形”。(当然,如果有能力,也能提供资源的历史状态的“形”了。) 作者可能想修正HTTP命名中的“超文本”,觉得那还不够准确,没有抓住本质,因此才会提出“REST”这个新的缩写词。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
clia 写道
如果这样想的话,对“REST”这个缩写词的理解又更清晰了一点:
对于命名,这些大牛们应该是斟酌再斟酌的,应该会力求准确。既然用了“Transfer”,应该就是“Transfer”最被大众接受的意思,应该也会是跟FTP、SMTP里面的“T"一样的意思。 这样说来,作者想强调的应该是:在HTTP上传送的不是文件,更不是邮件,而是“表形性状态”。 (抱歉我又想换个新词,因为我觉得“Representational”翻译成“表形性”会更准确、贴切,这个词强调的应该是“形”上的东西,比如界面、文档,“表示”的话含义太宽泛,“表述”并没有牵扯到“形”。“表示层”我也是觉得叫“表形层”更能达意。) 也就是说,Web服务器输出的HTML、PDF、XLS等东西不应该被看作文件,而应该被看作资源的当前状态的“形”。(当然,如果有能力,也能提供资源的历史状态的“形”了。) 作者可能想修正HTTP命名中的“超文本”,觉得那还不够准确,没有抓住本质,因此才会提出“REST”这个新的缩写词。 真是。。。理越辩越明。
你的“表形性状态”我基本赞同,还有“最后一片乌云”是:
Representational 除了表示“形”,是不是还表示Header!、Method、URI、reponse code 等“型”的信息?
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
clia 写道 比如星际里面把一个人从一个星球传送到令一个星球,我们只看见两端的传送门,而看不见人是怎样被传送过去的,因此这个传输过程对我们是透明的,这正好适用于应用层的协议。
以这个观点来理解HTTP和REST是错误的。REST强调通过使用统一接口来实现操作语义对于中间组件的可见性,其目的并不是为了实现透明的传输。REST其实更强调中间组件的作用,而不是强调通信链两端组件的作用。与实现数据包的透明传输有关的工作TCP已经解决的非常好了,根本就不需要HTTP来解决。两位同学为何对“传输”一词如此执著?我很不解。不过只是一个动词,能否跳开“传输”这个词来思考问题。其实“传输”所直接对应的“transport”在技术论文中有很明确的含义,Fielding是不会随便乱用的。 leebai说应该将“传输协议”改为“传输层协议”,我觉得价值不是很大。至少我们以前在翻译这篇论文时,大家共同的理解“传输协议”就是“传输层协议”。现在按照你这样一改,既有“传输层协议”,还有很多应用层的“传输协议”,读者的脑袋不会爆掉才怪! “transfer”在中文中并没有完全精确的动词与之相对应,这一点我同意。“转移”仍然不是非常准确,但是翻译为“传输”就更不靠谱了。 思而不学则殆,同学! |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
dlee 写道 leebai说应该将“传输协议”改为“传输层协议”,我觉得价值不是很大。至少我们以前在翻译这篇论文时,大家共同的理解“传输协议”就是“传输层协议”。现在按照你这样一改,既有“传输层协议”,还有很多应用层的“传输协议”,读者的脑袋不会爆掉才怪! “transfer”在中文中并没有完全精确的动词与之相对应,这一点我同意。“转移”仍然不是非常准确,但是翻译为“传输”就更不靠谱了。 所以我才提议把应用层的叫做“传送”,传输层的继续叫“传输”啊。 按我现在的中文水平来理解,我觉得“传输”和“传送”还是有点不同的,可能差别就跟“Transport”和“Transfer”之间的点点差别一样? 这样一来:传送“文件”、传送“邮件”、传送“REpresentational State”,这样不是很好吗? |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
dlee 写道
clia 写道
比如星际里面把一个人从一个星球传送到令一个星球,我们只看见两端的传送门,而看不见人是怎样被传送过去的,因此这个传输过程对我们是透明的,这正好适用于应用层的协议。
以这个观点来理解HTTP和REST是错误的。REST强调通过使用统一接口来实现操作语义对于中间组件的可见性,其目的并不是为了实现透明的传输。REST其实更强调中间组件的作用,而不是强调通信链两端组件的作用。与实现数据包的透明传输有关的工作TCP已经解决的非常好了,根本就不需要HTTP来解决。两位同学为何对“传输”一词如此执著?我很不解。不过只是一个动词,能否跳开“传输”这个词来思考问题。其实“传输”所直接对应的“transport”在技术论文中有很明确的含义,Fielding是不会随便乱用的。 leebai说应该将“传输协议”改为“传输层协议”,我觉得价值不是很大。至少我们以前在翻译这篇论文时,大家共同的理解“传输协议”就是“传输层协议”。现在按照你这样一改,既有“传输层协议”,还有很多应用层的“传输协议”,读者的脑袋不会爆掉才怪! “transfer”在中文中并没有完全精确的动词与之相对应,这一点我同意。“转移”仍然不是非常准确,但是翻译为“传输”就更不靠谱了。 思而不学则殆,同学!
你说我思而不学,我说你学而不思,多没意思啊 dlee同学,你最大的问题是:谈论问题时容易脱离问题本身,而对讨论者的个人能力、特质、习性妄下定义。面对面的交流也未必能真正了解一个人,更何况网络社区的交互信息交互能力是很有限的,你以为自己有超感知能力?
回归本题。其实这个HTTP/REST意涵问题、transfer问题,我们现在基本搞清楚了,就你还在糊涂。 再给你举点例证,如果你还糊涂,我可要对你智商进行攻击了:-):
应用层协议中,有一个RTP(实时传输协议,用于音视频系统),其英文正式名称就是: Real-time Transport Protocol 。 RFC2616里也有这样的说法:。。。since HTTP transports all message-bodies as payload 。。。(19.4.7)
所以,transport 与 transfer用于表示“传输”概念时,只有及物与不及物的词法差别,没有你认为的词义差别:如果主体是something,就用transfer,主体非名词如how或有宾语,就用transport 。应用层连英文transport都可以用,中文忌讳用“传输”就更荒唐了,Fielding一句有岐义的“ HTTP is not a Transport Protocol”,何必当圣旨用呢。
你以后的翻译作品如果坚持应用层使用“转移”代替“传输”,小心书卖不出去,即使有人买了也不容易读懂。 赶紧把你的REST译文中的“转移”全换成“传输”,“HTTP不是一种传输协议”改成"HTTP不是一种传输层协议",让更多的人能够从中受益。
我已经把你的译文打印成小册子了(版权?),这个文章确实不错。以前还真没看过博士论文,认识软件系统的最高层次只到Specification级别,看来更高的纯理论层次才是技术的顶峰(或最低的基础)。你的评价“思而不学”,对,也不对,我不学的只是哪些末流东西,核心的东西还是稀饭的。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
leebai 写道 所以,transport 与 transfer用于表示“传输”概念时,只有及物与不及物的词法差别,没有你认为的词义差别:如果主体是something,就用transfer,主体非名词如how或有宾语,就用transport 。应用层连英文transport都可以用,中文忌讳用“传输”就更荒唐了,Fielding一句有岐义的“ HTTP is not a Transport Protocol”,何必当圣旨用呢。
“transfer”翻译为“转移”有很大问题吗?还是你自己的习惯问题吧。将数据从一个地方“转移”到另一个地方,说不通吗? 按照我对HTTP的理解,这个“转移”的过程对于应用软件来说并不是完全透明的传输,还涉及到中间组件的一些处理,包括缓存、安全审计等工作。中间组件要有效地做缓存和安全审计等工作,就必须要理解操作的语义,这就是Fielding所说的: Fielding 写道 应用软件代表的是一个系统的“理解业务”(business-aware)的那部分功能
HTTP是一个应用层的协议,REST也是一个应用软件级别的架构风格。 我给你举个例子说明为何这个“转移”的过程并不是完全透明的传输。 假设HTTP客户端希望确保此次请求获得的数据来自于来源服务器,而不是通信链中间的某个缓存,它需要自己在请求的HTTP包头中加入控制信息。 假设HTTP服务器希望HTTP通信链中的缓存不要对当前数据做缓存,它也需要自己在响应的HTTP包头中加入控制信息。 这两个例子都不是透明的,应用软件还需要意识到通信链中间的缓存的存在,而不能简单地将缓存看作是阳光空气一样透明的东西。那么,所谓“透明的传输”从何而来? 而“传输”的过程对于应用软件来说,是一个完全透明的比特搬运过程。路由器的智能仅限于确定路由和寻址,它完全不能理解数据包的操作语义,也就是完全不需要理解业务。我以前做过一点网络协议开发,一提到“传输协议”,我就想到那些差错控制、重传、滑动窗口之类的东西。 “transport”和“transfer”这两个词我不同意你说的唯一区别仅仅在于及物和非及物。它们的内涵丰富的程度不同,在语义上也存在差别。你的说法过于简单化了。 leebai 写道 再给你举点例证,如果你还糊涂,我可要对你智商进行攻击了:-):
瞧瞧,故态复萌了不是。我前面说什么来着。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
leebai 写道
你的“表形性状态”我基本赞同,还有“最后一片乌云”是:
Representational 除了表示“形”,是不是还表示Header!、Method、URI、reponse code 等“型”的信息?
Fielding 写道
5.2.1.2 Representations
REST components perform actions on a resource by using a representation to capture the current or intended state of that resource and transferring that representation between components.
dlee 写道
那么,所谓“透明的传输”从何而来?
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
dlee 写道
。。。
leebai 写道
再给你举点例证,如果你还糊涂,我可要对你智商进行攻击了:-):
瞧瞧,故态复萌了不是。我前面说什么来着。
其他正文不细看,找这个倒挺眼贼。。。。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
clia 写道
leebai 写道
你的“表形性状态”我基本赞同,还有“最后一片乌云”是:
Representational 除了表示“形”,是不是还表示Header!、Method、URI、reponse code 等“型”的信息?
Fielding 写道
5.2.1.2 Representations
REST components perform actions on a resource by using a representation to capture the current or intended state of that resource and transferring that representation between components.
模糊处理:把整个HTTP 消息看作Representational state 应该差不多。 还有个问题:普通GET request 消息算不算Representational state? (它其实没什么state)。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-08
leebai 写道 模糊处理:把整个HTTP 消息看作Representational state 应该差不多。
还有个问题:普通GET request 消息算不算Representational state? (它其实没什么state)。 我理解的Representational state 应该跟 representation是一个意思的,都是带资源状态的,都是用来在各components之间进行传送的。但直接叫“Representation Transfer”不太好,看不明白,而且没表示出状态。 GET应该是不带representation的吧,或者叫空的representation? |
|
| 返回顶楼 | |







