- 浏览: 4799485 次
- 性别:
- 来自: 上海
博客专栏
-
robbin谈管理
浏览量:135756
文章分类
最新评论
-
xly1981:
领导者是团队的灵魂。深入一线的过程,包括代码review,能帮 ...
robbin谈管理:改造团队的经验(2) -
jiehuangwei:
像这种总结比较性的ppt文档可以多发啊
Web并发模型粗浅探讨 -
linux1308:
看完学习到了很多东西,感谢推荐!
推荐一篇很好的RoR部署方案性能评测 -
zweite:
直接对搜索的结果进行缓存是不是会更快一点呢
漫谈应用缓存的命中率问题 -
kaogua:
现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是 ...
Ruby作为服务器端应用已经成熟了
上周末在杭州网侠大会做了关于REST的演讲。会后经过一些交流,特别是今天在msn上面和dlee的交流,感觉自己对于REST的理解更深入了一层。
我们说REST架构风格,从REST具备的内在特征来说,它包括了这些特征:
1、基于HTTP的资源
2、以HTTP协议去操作
3、数据和表象分离
但是如果我们换一个角度,即分布式应用系统的角度来看,我们会有一些更有意思的结论:
分布式应用系统的架构,经历了好几代的变迁,我们来简单回顾一下:
1、基于CORBA协议的C++中间件时代
CORBA时代我还在上学,基本上没有怎么接触过Corba编程。曾经有一次我提供EJB培训的客户,正在进行传统Corba架构向EJB2架构迁移,通过和他们的交流,对Corba多了一些了解。当时就感叹,和EJB2相比,Corba实在太难用了。Corba时代在1998年EJB1.0发布以后,就逐渐淡出历史舞台了。
2、基于RMI/IIOP协议的EJB时代
这个时代开始于1998年,到现在基本上已经划上了句号。其实在EJB出现以前,在1996年Microsoft发布WindowsNT4.0以后,Microsoft当时也提出了自己的分布式架构,即MTS,但是MTS的光辉被随后出现的伟大的EJB技术彻底击败,此后,就拉开了Java的应用服务器时代,BEA也是在这个时代的转折点成长起来的。
不管是Corba,还是EJB,都有一些共同点:
1) 通过专有的网络协议通讯
2) 不能跨平台调用
3) 通过分布式对象调用来实现分布式架构,换句话来说就是,分布式架构是绑定在面向对象的机制上的
分布式对象架构的缺陷在EJB2时代被充分暴露了出来,乃至于Martin Folwer在《企业应用架构模式》当中强调,分布式调用的第一原则就是不要分布式。更多关于EJB2分布式对象架构的缺陷在Rod Johnson的《J2EE without EJB》当中被剖析的更加清楚。
3、基于SOAP协议的Web Services时代
这个时代始于2001年Microsoft公司推出dotnet平台,整个行业开始鼓吹Web Services。中间经历了一次低潮之后,在IBM,BEA成功的联手炒作SOA之后,再次王者归来。
web services有一些明显不同于Corba和EJB分布式对象架构的特征:
1) 通过标准SOAP协议通讯,一般走HTTP通道
2) 能够跨平台调用
3) 通讯格式是xml文本,而不是二进制数据格式
4) 通过RPC机制来实现分布式调用,而不是通过面向对象机制实现分布式调用
web services的优点和缺点都非常突出,这个不是本文的要点,不做具体分析。这里唯一要强调的是SOAP协议并不依赖于HTTP。事实上SOAP协议可以走很多底层协议,例如SMTP协议,Jabber协议等等。
REST也是一种分布式系统的架构风格,那么REST和上面这些分布式架构有哪些明显的区别呢?
1) REST走的是HTTP协议,并且充分利用或者说极端依赖HTTP协议
Corba和EJB是采用专有的二进制协议,SOAP可以但不依赖HTTP,并且仅仅使用HTTP POST。
2) REST是基于HTTP抽象资源的分布式调用,换句话来说,就是分布式调用是绑定在资源的操作上面的。
通过上面的总结,我们可以做一个直观的对比表格:
REST最大的特点是什么呢?REST是为通过HTTP协议来进行分布式调用量身定造的架构
传统上,我们开发一个非分布式的软件系统,使用OO进行建模和架构,无往而不利。但是分布式对象却显得不那么有效。对于跨进程的调用,也许我们需要探索更好的面向对象的分布式调用架构。
REST是专门为分布式调用设计的架构,在REST里面,分布式是通过对资源的操作来实现的,不是像EJB那样通过对象的方法调用来实现的。资源是一种抽象的概念,资源被映射到相应的一套URL规则上面了。所以资源只和URL相关,而与具体实现无关,因此REST具有更好的解藕性。在RoR的实现当中,你可以把一些资源直接映射到model对象上面去,也可以不映射到model上面,而完全是由业务逻辑组合的抽象资源。
要比水平, 你有興趣當然是會接受的.
你的水平是多少呢?
本人对比谁高谁低完全没有兴趣。只是本人觉得你前两个发言实在是精彩异常,被删除了实在是可惜。而这些讨论,本人实在不敢复述。而如果只是我看见了,我实在是为广大javaeye众感到万分可惜。
有些人一言堂習慣了, 是無法改變的.
要比水平, 你有興趣當然是會接受的.
你的水平是多少呢?
本人对比谁高谁低完全没有兴趣。只是本人觉得你前两个发言实在是精彩异常,被删除了实在是可惜。而这些讨论,本人实在不敢复述。而如果只是我看见了,我实在是为广大javaeye众感到万分可惜。
要比水平, 你有興趣當然是會接受的.
你的水平是多少呢?
哦. 就事論事?
誰在就事論事, 誰在講笑話?
你有本事來判定?
看来你没有仔细看我举的两个例子,两个例子里REST是截然不同的地位。
dlee花那么多精力又是翻译又是发文,只是希望大家多了解一点REST的知识,这份推广的热心值得大家支持,现在中国的技术推广者还是太少了!!
但推广一个新技术的时候,不加定语修饰的将所有旧技术钉死也是危险的:)
BTW.http://searchwebservices.techtarget.com/sDefinition/0,,sid26_gci214272,00.html 里的RPC定义,和大家理解的没什么不同,没什么相悖的地方啊,client/server,synchronous ,stub,都是熟悉的字眼。
在你的案子裏就可以拿來當大多數, 你是以偏蓋全還是自大?
你到底搞清楚RPC 的定義了嗎?
http://www.pcmag.com/encyclopedia_term/0,2542,t=RPC&i=50652,00.asp
(Remote Procedure Call) A programming interface that allows one program to use the services of another program in a remote machine. The calling program sends a message and data to the remote program, which is executed, and results are passed back to the calling program.
PC Magazine 不能力的話
http://searchwebservices.techtarget.com/sDefinition/0,,sid26_gci214272,00.html
名詞的基礎要搞清楚再出來和別人討論, 這是基本的禮貌.
一個連名詞都搞不清楚的人, 連討論的價值都沒有.
特別是REST. 作者連基礎都錯, 別跟我講它的引申會對.
赶紧放出来吧。
然后想听听类似这种讨论
我们说REST架构风格,从REST具备的内在特征来说,它包括了这些特征:
1、基于HTTP的资源
2、以HTTP协议去操作
3、数据和表象分离
但是如果我们换一个角度,即分布式应用系统的角度来看,我们会有一些更有意思的结论:
分布式应用系统的架构,经历了好几代的变迁,我们来简单回顾一下:
1、基于CORBA协议的C++中间件时代
CORBA时代我还在上学,基本上没有怎么接触过Corba编程。曾经有一次我提供EJB培训的客户,正在进行传统Corba架构向EJB2架构迁移,通过和他们的交流,对Corba多了一些了解。当时就感叹,和EJB2相比,Corba实在太难用了。Corba时代在1998年EJB1.0发布以后,就逐渐淡出历史舞台了。
2、基于RMI/IIOP协议的EJB时代
这个时代开始于1998年,到现在基本上已经划上了句号。其实在EJB出现以前,在1996年Microsoft发布WindowsNT4.0以后,Microsoft当时也提出了自己的分布式架构,即MTS,但是MTS的光辉被随后出现的伟大的EJB技术彻底击败,此后,就拉开了Java的应用服务器时代,BEA也是在这个时代的转折点成长起来的。
不管是Corba,还是EJB,都有一些共同点:
1) 通过专有的网络协议通讯
2) 不能跨平台调用
3) 通过分布式对象调用来实现分布式架构,换句话来说就是,分布式架构是绑定在面向对象的机制上的
分布式对象架构的缺陷在EJB2时代被充分暴露了出来,乃至于Martin Folwer在《企业应用架构模式》当中强调,分布式调用的第一原则就是不要分布式。更多关于EJB2分布式对象架构的缺陷在Rod Johnson的《J2EE without EJB》当中被剖析的更加清楚。
3、基于SOAP协议的Web Services时代
这个时代始于2001年Microsoft公司推出dotnet平台,整个行业开始鼓吹Web Services。中间经历了一次低潮之后,在IBM,BEA成功的联手炒作SOA之后,再次王者归来。
web services有一些明显不同于Corba和EJB分布式对象架构的特征:
1) 通过标准SOAP协议通讯,一般走HTTP通道
2) 能够跨平台调用
3) 通讯格式是xml文本,而不是二进制数据格式
4) 通过RPC机制来实现分布式调用,而不是通过面向对象机制实现分布式调用
web services的优点和缺点都非常突出,这个不是本文的要点,不做具体分析。这里唯一要强调的是SOAP协议并不依赖于HTTP。事实上SOAP协议可以走很多底层协议,例如SMTP协议,Jabber协议等等。
REST也是一种分布式系统的架构风格,那么REST和上面这些分布式架构有哪些明显的区别呢?
1) REST走的是HTTP协议,并且充分利用或者说极端依赖HTTP协议
Corba和EJB是采用专有的二进制协议,SOAP可以但不依赖HTTP,并且仅仅使用HTTP POST。
2) REST是基于HTTP抽象资源的分布式调用,换句话来说,就是分布式调用是绑定在资源的操作上面的。
通过上面的总结,我们可以做一个直观的对比表格:
分布式架构 协议 调用方式 ------------------------------------------------------- Corba架构 专有二进制协议 对象的CRUD操作 EJB架构 专有二进制协议 对象的CRUD操作 Web Services SOAP协议 RPC方式 REST HTTP协议 对资源的CRUD操作 --------------------------------------------------------
REST最大的特点是什么呢?REST是为通过HTTP协议来进行分布式调用量身定造的架构
传统上,我们开发一个非分布式的软件系统,使用OO进行建模和架构,无往而不利。但是分布式对象却显得不那么有效。对于跨进程的调用,也许我们需要探索更好的面向对象的分布式调用架构。
REST是专门为分布式调用设计的架构,在REST里面,分布式是通过对资源的操作来实现的,不是像EJB那样通过对象的方法调用来实现的。资源是一种抽象的概念,资源被映射到相应的一套URL规则上面了。所以资源只和URL相关,而与具体实现无关,因此REST具有更好的解藕性。在RoR的实现当中,你可以把一些资源直接映射到model对象上面去,也可以不映射到model上面,而完全是由业务逻辑组合的抽象资源。
评论
88 楼
jacking124
2013-01-02
嗯,robbin大哥,我有一个问题咨询一下的,我公司目前有一个维护系统的,用的蓝宝石的bes服务器,现在这个公司被收购了,其产品也不更新了,我想有什么可以产品可以代替它,我的系统是ejb开发的!!
87 楼
Lordaeron
2007-06-20
ozzzzzz 写道
Lordaeron 写道
ozzzzzz 写道
前面Lordaeron很能代表水平的两个发言那里去了?
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
要比水平, 你有興趣當然是會接受的.
你的水平是多少呢?
本人对比谁高谁低完全没有兴趣。只是本人觉得你前两个发言实在是精彩异常,被删除了实在是可惜。而这些讨论,本人实在不敢复述。而如果只是我看见了,我实在是为广大javaeye众感到万分可惜。
有些人一言堂習慣了, 是無法改變的.
86 楼
Lordaeron
2007-06-20
回顧一下, 某些人的銘言REST, 但從未講出REST 實作後的樣子, REST 是個什麼樣的東西呢?
由
http://en.wikipedia.org/wiki/Representational_State_Transfer
簡單的講, 它就是使用Http, 甚至會再extend http. 以使用http 的gramma 來作為distributed system 的protocol.
主要主張為http 提供了 proxy, cache, 和tunnel 等等方式, 可以讓REST 暢通無阻的在internet/intranet 裏運行.
而使用http 就可以用現有的介面, 而不用像現在的RPC 系統一樣, 有各自的semantic. 還可以重新定義URI, 令整個distributed system 看起來可以像DNS 的行為一樣.
可以進行message 的轉送.
題外話:
就像fielding 主張WebDAV 的drawback, 說因為它用了http 來packing 它自己的message, firewall 可以很容易的設計出filter 來將它擋掉.
[我說]但softether 就用http 來packing tcp/udp protocol 了, 有幾個firewall 擋得了?
回正題:
它們一直在bull RPC 的問題, 在於原作fielding 對RPC 根本的不了解, 更別說在這主張RPC 已死的人.
http 是protocol level 的東西, RPC 是concept level 的東西, 拿這兩個東西來相比, 有點風馬牛不相及.
RPC 定義:
--------------------------------------------------------
Remote Procedure Call (RPC) is a protocol that one program can use to request a service from a program located in another computer in a network without having to understand network details.
RPC uses the client/server model. The requesting program is a client and the service-providing program is the server. Like a regular or local procedure call, an RPC is a synchronous operation requiring the requesting program to be suspended until the results of the remote procedure are returned. However, the use of lightweight processes or threads that share the same address space allows multiple RPCs to be performed concurrently.
----------------------------------------------------
fielding 的更有趣的一個主張:
----------------------------------------------------
People often mistakenly refer to HTTP as a remote procedure call (RPC) [23] mechanism simply because it involves requests and responses.
----------------------------------------------------
RPC 在protocol level(IIOP,RMI,DCOM) 說穿了, 不過就是接收的server 收到一串字串(C 的), 然後分柝裏面的內容, 再按照內容辨事. 和它的REST 我實在是在protocol level 看不出有何不同?
http://tools.ietf.org/id/draft-ietf-atompub-protocol-15.txt
這裏有一份IBM 的restful protocol, 有興趣者, 自已去究. 看定義出來的東西在作什麼.
題外話:
已經有類似能力的Distributed system 當然首先要講的是
DNS, 另外就是IBM 的SNA 也有. 要講近期的, FIX protocol 也有類似的能力.
咦, 一言堂到要封掉我的post 囉.
哈...............
由
http://en.wikipedia.org/wiki/Representational_State_Transfer
簡單的講, 它就是使用Http, 甚至會再extend http. 以使用http 的gramma 來作為distributed system 的protocol.
主要主張為http 提供了 proxy, cache, 和tunnel 等等方式, 可以讓REST 暢通無阻的在internet/intranet 裏運行.
而使用http 就可以用現有的介面, 而不用像現在的RPC 系統一樣, 有各自的semantic. 還可以重新定義URI, 令整個distributed system 看起來可以像DNS 的行為一樣.
可以進行message 的轉送.
題外話:
就像fielding 主張WebDAV 的drawback, 說因為它用了http 來packing 它自己的message, firewall 可以很容易的設計出filter 來將它擋掉.
[我說]但softether 就用http 來packing tcp/udp protocol 了, 有幾個firewall 擋得了?
回正題:
它們一直在bull RPC 的問題, 在於原作fielding 對RPC 根本的不了解, 更別說在這主張RPC 已死的人.
http 是protocol level 的東西, RPC 是concept level 的東西, 拿這兩個東西來相比, 有點風馬牛不相及.
RPC 定義:
--------------------------------------------------------
Remote Procedure Call (RPC) is a protocol that one program can use to request a service from a program located in another computer in a network without having to understand network details.
RPC uses the client/server model. The requesting program is a client and the service-providing program is the server. Like a regular or local procedure call, an RPC is a synchronous operation requiring the requesting program to be suspended until the results of the remote procedure are returned. However, the use of lightweight processes or threads that share the same address space allows multiple RPCs to be performed concurrently.
----------------------------------------------------
fielding 的更有趣的一個主張:
----------------------------------------------------
People often mistakenly refer to HTTP as a remote procedure call (RPC) [23] mechanism simply because it involves requests and responses.
----------------------------------------------------
RPC 在protocol level(IIOP,RMI,DCOM) 說穿了, 不過就是接收的server 收到一串字串(C 的), 然後分柝裏面的內容, 再按照內容辨事. 和它的REST 我實在是在protocol level 看不出有何不同?
http://tools.ietf.org/id/draft-ietf-atompub-protocol-15.txt
這裏有一份IBM 的restful protocol, 有興趣者, 自已去究. 看定義出來的東西在作什麼.
題外話:
已經有類似能力的Distributed system 當然首先要講的是
DNS, 另外就是IBM 的SNA 也有. 要講近期的, FIX protocol 也有類似的能力.
咦, 一言堂到要封掉我的post 囉.
哈...............
85 楼
ozzzzzz
2007-06-20
Lordaeron 写道
ozzzzzz 写道
前面Lordaeron很能代表水平的两个发言那里去了?
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
要比水平, 你有興趣當然是會接受的.
你的水平是多少呢?
本人对比谁高谁低完全没有兴趣。只是本人觉得你前两个发言实在是精彩异常,被删除了实在是可惜。而这些讨论,本人实在不敢复述。而如果只是我看见了,我实在是为广大javaeye众感到万分可惜。
84 楼
Lordaeron
2007-06-20
ozzzzzz 写道
前面Lordaeron很能代表水平的两个发言那里去了?
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
要比水平, 你有興趣當然是會接受的.
你的水平是多少呢?
83 楼
zjlee
2007-06-20
支持Lordaeron
82 楼
fangzhouxing
2007-06-20
好好的技术讨论氛围,让Lordaeron给搅了,不管你的水平如何,很不欣赏你的。。。
81 楼
ozzzzzz
2007-06-20
前面Lordaeron很能代表水平的两个发言那里去了?
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
就是那个什么HTTP是载体的。多高的水平啊,删除了怎么反应这个人的能力呢?只有前后联系起来一起看,才能知道他究竟是有多强的水平。
强!
80 楼
Lordaeron
2007-06-19
http://en.wikipedia.org/wiki/Representational_State_Transfer
REST versus RPC 這一段, 如果有人對DNS 的行為有認識的
話, 應該會知它在打什麼主意
REST versus RPC 這一段, 如果有人對DNS 的行為有認識的
話, 應該會知它在打什麼主意
79 楼
Lordaeron
2007-06-19
差點忘了一件事.
我一開始只講出了.
一個人連Corba/J2ee 是什麼都搞不清楚, 他引申下來的
也沒什麼好講. that's all.
以後REST 被檢驗時, 會不會被歸類到RPC 和
要說什麼REST 會被大規模應用.
我們還有半年的時間, 大家慢慢看. 事實勝於雄辯.
我一開始只講出了.
一個人連Corba/J2ee 是什麼都搞不清楚, 他引申下來的
也沒什麼好講. that's all.
以後REST 被檢驗時, 會不會被歸類到RPC 和
要說什麼REST 會被大規模應用.
我們還有半年的時間, 大家慢慢看. 事實勝於雄辯.
78 楼
Lordaeron
2007-06-18
http://www.restlet.org/documentation/1.0/tutorial
一個將http 這個載台拿來作別的用法.
就正如該訪問一下, 否定rails 用POST的作法, 覺得
自己用PUT 會更好.
來, 哪位自認http protocol 比我還熟的, 講一下
POST 和PUT 的差異吧.
protocol 是一個載台, 要怎麼用, 是你家的事.
就像softether 就拿http 來載tcp/udp packet.
一個將http 這個載台拿來作別的用法.
就正如該訪問一下, 否定rails 用POST的作法, 覺得
自己用PUT 會更好.
來, 哪位自認http protocol 比我還熟的, 講一下
POST 和PUT 的差異吧.
protocol 是一個載台, 要怎麼用, 是你家的事.
就像softether 就拿http 來載tcp/udp packet.
77 楼
winterwolf
2007-06-18
能说明问题就可以 不要太复杂
76 楼
winterwolf
2007-06-18
楼上做分布开发经验丰富 能否拿出一个具体的例子比如某种分布应用
dlee用rest去设计一下如何实现
Lordaeron用corda或其他技术设计一下
然后我们再继续讨论
dlee用rest去设计一下如何实现
Lordaeron用corda或其他技术设计一下
然后我们再继续讨论
75 楼
Lordaeron
2007-06-18
xly_971223 写道
Lordaeron是不是来吵架的?
就是论事别撤没用的
就是论事别撤没用的
哦. 就事論事?
誰在就事論事, 誰在講笑話?
你有本事來判定?
74 楼
xly_971223
2007-06-18
Lordaeron是不是来吵架的?
就是论事别撤没用的
就是论事别撤没用的
73 楼
江南白衣
2007-06-18
Lordaeron 写道
在你的案子裏就可以拿來當大多數, 你是以偏蓋全還是自大?
你到底搞清楚RPC 的定義了嗎?
http://www.pcmag.com/encyclopedia_term/0,2542,t=RPC&i=50652,00.asp
(Remote Procedure Call) A programming interface that allows one program to use the services of another program in a remote machine. The calling program sends a message and data to the remote program, which is executed, and results are passed back to the calling program.
PC Magazine 不能力的話
http://searchwebservices.techtarget.com/sDefinition/0,,sid26_gci214272,00.html
名詞的基礎要搞清楚再出來和別人討論, 這是基本的禮貌.
一個連名詞都搞不清楚的人, 連討論的價值都沒有.
特別是REST. 作者連基礎都錯, 別跟我講它的引申會對.
你到底搞清楚RPC 的定義了嗎?
http://www.pcmag.com/encyclopedia_term/0,2542,t=RPC&i=50652,00.asp
(Remote Procedure Call) A programming interface that allows one program to use the services of another program in a remote machine. The calling program sends a message and data to the remote program, which is executed, and results are passed back to the calling program.
PC Magazine 不能力的話
http://searchwebservices.techtarget.com/sDefinition/0,,sid26_gci214272,00.html
名詞的基礎要搞清楚再出來和別人討論, 這是基本的禮貌.
一個連名詞都搞不清楚的人, 連討論的價值都沒有.
特別是REST. 作者連基礎都錯, 別跟我講它的引申會對.
看来你没有仔细看我举的两个例子,两个例子里REST是截然不同的地位。
dlee花那么多精力又是翻译又是发文,只是希望大家多了解一点REST的知识,这份推广的热心值得大家支持,现在中国的技术推广者还是太少了!!
但推广一个新技术的时候,不加定语修饰的将所有旧技术钉死也是危险的:)
BTW.http://searchwebservices.techtarget.com/sDefinition/0,,sid26_gci214272,00.html 里的RPC定义,和大家理解的没什么不同,没什么相悖的地方啊,client/server,synchronous ,stub,都是熟悉的字眼。
72 楼
dlee
2007-06-18
嘿嘿。
我说:“其实我跨栏很牛的”,刘翔笑了。
刘翔说:“如果我要是打篮球,估计也能去NBA”,姚明笑了。
姚明说:“HTTP那玩艺儿太简单了,我最熟了”,Fielding笑了。
我说:“其实我跨栏很牛的”,刘翔笑了。
刘翔说:“如果我要是打篮球,估计也能去NBA”,姚明笑了。
姚明说:“HTTP那玩艺儿太简单了,我最熟了”,Fielding笑了。
71 楼
Lordaeron
2007-06-17
江南白衣 写道
我之前参与的电信认证计费项目,critical的代码用C++,业务管理的代码用Java,还有一些shell脚本写的任务,算是比较典型的分布式调用情景:
主力的同步调用方案是BEA Tuxedo,异步用IBM MQ,Java内部则是EJB和JMS(一个Weblogic搞定),对外的接口主要是WebService和FTP,另有少量的Socket接口,而旧版系统用Corba连。
在这个生态圈里,REST如果要替换,只能是替换少量外围没有跑WS-*标准的WebService和某些简易Socket接口,大部分的用例里都没有它插手的份儿。而且,整个系统基本上是面向消息而不是面向RPC的,Function在这里主要充当的是Channel的角色。所以,这里dlee说的RPC风格逐渐过时没有错,但和REST将成为主流又没有直接联系。
而最近参与的一个系统,要做一个公共数据服务平台,REST就发市了,我打算利用某个ESB引擎发布WebService/REST双接口,适用不同AP的技术水平和效率要求。设计的过程中dlee给了我很多建议和指导。
所以,我觉得大家火冒三丈的争论没有任何意义,大家先把讨论的场景、前提搞好了再讨论才互有长进,否则口舌之争,吵赢了对方,自己身上又不会长块肉。
主力的同步调用方案是BEA Tuxedo,异步用IBM MQ,Java内部则是EJB和JMS(一个Weblogic搞定),对外的接口主要是WebService和FTP,另有少量的Socket接口,而旧版系统用Corba连。
在这个生态圈里,REST如果要替换,只能是替换少量外围没有跑WS-*标准的WebService和某些简易Socket接口,大部分的用例里都没有它插手的份儿。而且,整个系统基本上是面向消息而不是面向RPC的,Function在这里主要充当的是Channel的角色。所以,这里dlee说的RPC风格逐渐过时没有错,但和REST将成为主流又没有直接联系。
而最近参与的一个系统,要做一个公共数据服务平台,REST就发市了,我打算利用某个ESB引擎发布WebService/REST双接口,适用不同AP的技术水平和效率要求。设计的过程中dlee给了我很多建议和指导。
所以,我觉得大家火冒三丈的争论没有任何意义,大家先把讨论的场景、前提搞好了再讨论才互有长进,否则口舌之争,吵赢了对方,自己身上又不会长块肉。
在你的案子裏就可以拿來當大多數, 你是以偏蓋全還是自大?
你到底搞清楚RPC 的定義了嗎?
http://www.pcmag.com/encyclopedia_term/0,2542,t=RPC&i=50652,00.asp
(Remote Procedure Call) A programming interface that allows one program to use the services of another program in a remote machine. The calling program sends a message and data to the remote program, which is executed, and results are passed back to the calling program.
PC Magazine 不能力的話
http://searchwebservices.techtarget.com/sDefinition/0,,sid26_gci214272,00.html
名詞的基礎要搞清楚再出來和別人討論, 這是基本的禮貌.
一個連名詞都搞不清楚的人, 連討論的價值都沒有.
特別是REST. 作者連基礎都錯, 別跟我講它的引申會對.
70 楼
江南白衣
2007-06-17
我之前参与的电信认证计费项目,critical的代码用C++,业务管理的代码用Java,还有一些shell脚本写的任务,算是比较典型的分布式调用情景:
主力的同步调用方案是BEA Tuxedo,异步用IBM MQ,Java内部则是EJB和JMS(一个Weblogic搞定),对外的接口主要是WebService和FTP,另有少量的Socket接口,而旧版系统用Corba连。
在这个生态圈里,REST如果要替换,只能是替换少量外围没有跑WS-*标准的WebService和某些简易Socket接口,大部分的用例里都没有它插手的份儿。而且,整个系统基本上是面向消息而不是面向RPC的,Function在这里主要充当的是Channel的角色。所以,这里dlee说的RPC风格逐渐过时没有错,但和REST将成为主流又没有直接联系。
而最近参与的一个系统,要做一个公共数据服务平台,REST就发市了,我打算利用某个ESB引擎发布WebService/REST双接口,适用不同AP的技术水平和效率要求。设计的过程中dlee给了我很多建议和指导。
所以,我觉得大家火冒三丈的争论没有任何意义,大家先把讨论的场景、前提搞好了再讨论才互有长进,否则口舌之争,吵赢了对方,自己身上又不会长块肉。
主力的同步调用方案是BEA Tuxedo,异步用IBM MQ,Java内部则是EJB和JMS(一个Weblogic搞定),对外的接口主要是WebService和FTP,另有少量的Socket接口,而旧版系统用Corba连。
在这个生态圈里,REST如果要替换,只能是替换少量外围没有跑WS-*标准的WebService和某些简易Socket接口,大部分的用例里都没有它插手的份儿。而且,整个系统基本上是面向消息而不是面向RPC的,Function在这里主要充当的是Channel的角色。所以,这里dlee说的RPC风格逐渐过时没有错,但和REST将成为主流又没有直接联系。
而最近参与的一个系统,要做一个公共数据服务平台,REST就发市了,我打算利用某个ESB引擎发布WebService/REST双接口,适用不同AP的技术水平和效率要求。设计的过程中dlee给了我很多建议和指导。
所以,我觉得大家火冒三丈的争论没有任何意义,大家先把讨论的场景、前提搞好了再讨论才互有长进,否则口舌之争,吵赢了对方,自己身上又不会长块肉。
69 楼
blueoxygen
2007-06-17
dlee 写道
关于REST,最近InfoQ China翻译了两篇文章,大家有兴趣的可以仔细看一看。
http://www.infoq.com/cn/articles/restlet-louvel-interview
http://www.infoq.com/cn/news/2007/06/rest-description-language
Fielding论文的中文版如果做review的各位专家没有什么大的修改意见,这周之内就会发布。希望在一两个月以后,我不需要在这里反复做关于REST的扫盲工作了,我们可以深入讨论一些更加有趣的话题。
http://www.infoq.com/cn/articles/restlet-louvel-interview
http://www.infoq.com/cn/news/2007/06/rest-description-language
Fielding论文的中文版如果做review的各位专家没有什么大的修改意见,这周之内就会发布。希望在一两个月以后,我不需要在这里反复做关于REST的扫盲工作了,我们可以深入讨论一些更加有趣的话题。
赶紧放出来吧。
然后想听听类似这种讨论
引用
Bobby Woolf(因企业集成模式而闻名)同样认为REST需要声明性接口并怀疑当REST最终获得这些能力时,结果是否还会与WSDL有什么显著不同。
发表评论
-
Web并发模型粗浅探讨
2012-12-10 01:22 16491我带的研发部门使用的编程语言有Java,.net,PHP和Ru ... -
让textmate可以直接修改远程服务器上的文件
2012-11-06 17:20 52661. 在textmate的 Preferences | Ter ... -
晒晒我们的开源项目
2012-09-23 22:17 38094我们的研发团队是一支mini型研发团队,目前共有研发人员13人 ... -
再谈非主流工业语言
2011-03-22 00:15 22992今天看到Fenng同学的发 ... -
我的PHP,Python和Ruby之路
2011-03-21 12:12 72295因为看到一篇讨论PHP,P ... -
互联网网站的反爬虫策略浅析
2009-08-17 01:07 37959因为搜索引擎的流行, ... -
记上海Python社区聚会,谈Python和Ruby
2009-08-10 18:49 247558月9日周日,上海Python ... -
LVM - 很好很强大
2008-11-29 22:19 35794LVM (Logic Volume Management, ... -
Linux平台gcc和动态共享库的基础知识
2008-11-02 15:25 12785对大多数不从事Linux平台C语言开发的人来说,GNU gcc ... -
贴一段遍历memcached缓存对象的小脚本
2008-10-13 18:07 13666memcached因为性能的缘故,没有提供遍历整个缓存当中对象 ... -
用Google的网站流量分析系统来看全球软件行业的分工趋势
2008-06-25 13:05 10384用Google的网站流量分析 ... -
memcache_engine + memcachedb = 高性能分布式内存数据库
2008-01-22 12:05 33799memcachedb是一个由新浪网 ... -
豆瓣的程序性能真的很惊人,但...
2008-01-17 22:42 34460http://www.dbanotes.net/arch/do ... -
关系模型和对象模型的究竟匹配还是不匹配?
2007-12-27 12:23 12677在过去的很多年,我以 ... -
AJAX与RIA技术之我见
2007-08-02 11:46 43257DHH于6月底曾经发表过一 ... -
软件行业2006年终回顾以及2007展望(二)展望
2006-12-11 22:02 13001http://www.iteye.com/topic/1778 ... -
Linux reiserfs文件系统即将陨落
2006-10-12 16:29 25114Linux著名的高性能文件系统reiserfs向来是Linux ... -
lighttpd的tunning tips
2006-09-21 00:20 6671http://trac.lighttpd.net/trac/w ... -
动态脚本语言的部署运行方式介绍
2006-09-18 12:42 7749现在这类脚本语言的运行方式基本上有三种: 1、Apache ...
相关推荐
基于REST的分布式系统中会话与角色管理的研究,程曦,邹华,首先对REST风格的分布式web系统进行了介绍,接着对REST风格和普通的分布式Web系统进行了对比,指出REST风格具有的优势以及在会话管理与
tcc 分布式事务 解决方案 基于rest的分布式事务解决方案
在介绍分布式事务之前,先来来回顾一下事务的ACID原则:原子性(A):原子性是指一个事务的所有操作,要么都做完,要么都不做。 一致性(C):一致性是指一个事务的执行,不管外部环境如何,不管怎么执行,结果应该...
三位soa专家对于rest进行了讲求实际的解释,并且通过将web的指导原理应用到普通的企业计算问题中,向你展示了如何开发简单的、优雅的分布式超媒体系统。你将会学习到很多技术,并且随着一家典型的公司从最初的小企业...
REST是设计分布式网络服务或API时遵循的架构原则以及设计风格, 前后端分离最佳实践的开发标准或规范。本文为资料收藏的.md笔记,选取比较重要的资料,收集了以下内容: 重要概念介绍,如前述的第2-第4个关键词。 ...
然而,二者却站在不同的层次看架构,SOA的角度偏向于战略;而REST的角度则偏向于战术。SOA给出了一组架构原则实现其战略目标,而REST则通过一系列约束实现其战术目标。 《SOA与REST:用REST构建企业级SOA解决方案...
用于构建容错分布式系统的React性Java框架 请参阅以获取完整文档。 Atomix 3.0是用于构建容错分布式系统的功能齐全的框架。 它提供了构建可伸缩且容错的分布式系统通常所需的一组高级原语。 这些原语包括: 集群...
这篇论文定义了一个框架,致力于通过架构风格来...最后,我描述了从在超文本转移协议(HTTP)和统一资源标识符(URI)的标准中应用REST,以及从这两个标准在Web客户端和服务器软件的后续部署等过程中学到的经验教训。
#资源达人分享计划#
-了解了分布式系统中常用的不同体系结构,例如Actor和面向事件的编程,REST API,0MQ中间件(PUB-SUB,PUSH-PULL,REQ-REP体系结构)以及与协议缓冲区的接触非常少的方法。 -在分布式体系结构中设置复杂应用程序的...
HTTPFS HTTPFS提供了一个REST接口,该接口公开了分布式文件系统,就好像它是一台服务器一样。 服务器在启动时必须没有冲突。 然后,系统将保证文件仅存在于单个服务器上。 启动服务器: ./httpfs [-p PORT] [[list ...
基于nodejs的websocket平台,该平台包括异步的数据库调用,异步的rest api访问,以及能够提供rest api的服务。该平台能实现基于ws的聊天室,可以将聊天的信息调用rest api存储到数据库,可以通过网页访问该平台提供...
它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。 目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务...
Chapter 1, Getting Started with REST API, gives you an overview of what the REST API is, how it functions, and all that it is capable of doing. You will also find information about other platforms if ...
它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务。 Restlet项目受到Servlet API、JSP(Java Server Pages)、HttpURLConnection及Struts等Web开发技术的影响。该项目的主要目标是:在提供同等功能的同时...
使用asp.net 实现了Rest服务接口,包括实现的文档。Rest接口返回的数据包括json、Stream等。代码结构清晰,可以直接用VS2013运行
2. 由于【1】的改动,使得只有以/rest开头的URL才能映射到某资源,使用rest服务时,必须要加上/rest。 3. 由于【1】的改动,RestComponent类注册application时将资源字符串加上了/rest。 4. 由于【1】的改动和本人...
多系统交互:Dubbo,ActiveMQ多系统交互。 前后端分离:前端使用ajax访问后端的rest服务,后端返回json格式数据。页面用nginx反向代理访问。 支付功能:实现微信和支付宝支付客户端。 日志:Logback打印日志,默认...