分布式服务如何优于分布式对象?

时间:2010-04-06 22:11:58

标签: web-services oop architecture modeling

我对这项技术不感兴趣,例如CORBA vs Web Services,我对原则很感兴趣。当我们在进行OOP时,我们为什么要在更高层次上拥有如此程序化的东西?是不是与OOP和关系数据库相同?通常代码生成支持服务,除了样板,我认为这是因为我们新的SOM - 服务对象映射器。那么,wervices而不是对象的原因是什么?

5 个答案:

答案 0 :(得分:4)

分发服务与分发对象之间的主要区别在于服务及其操作按照定义粗粒度,而对象默认细粒度。

进行远程呼叫时,网络延迟是一个事实,您的界面越粗糙越好。面向服务的模式和实践专注于构建此类接口。

因此,总而言之,问题不在于技术或协议(二进制与XML),而在于使用场景。您可以在CORBA中创建“服务”并在WCF中进行旧式分布式对象编程,但前者似乎更偏向于对象,后者则更倾向于服务......

答案 1 :(得分:1)

分布式对象和远程过程调用有点像进程之间的共享状态,而服务是自包含的。

它可以与共享状态语言中的普通OOP和使用Actor模型的语言之间的关系进行比较,并且没有共享状态(比如在Erlang中,你有很多轻量级进程没有共享任何东西,但是仅通过消息进行通信)。 Actor模型方法不那么复杂,并且可以为您提供与并发等相关的好处。

答案 2 :(得分:0)

恕我直言,高水平的差别不大。但是在实现层面,分布式对象,CORBA,Java RMI等等还有很多不足之处。我尝试在实际生产系统中使用CORBA和后来的RMI,并保持版本同步是一场噩梦。

这些天,我发送消息并得到答复。

答案 3 :(得分:0)

分布式对象意味着什么?必须同步的相同对象的两个副本?每次更改对象的两阶段提交?复杂。

将网络中的对象从一个位置移动到另一个位置?在这种情况下,您必须确保“所有权”被正确放弃。一个主机如何知道另一个主机已经改变了对象的状态?它必须 - 什么 - 再次复制?

“分布式对象”模型很快变得复杂。

服务 - 最简单 - 意味着只有一台主机提供服务并维护状态。几十年来,关系数据库已经证明了这种服务模型。和其他传统服务一样(即电子邮件,NIS等)

有一台主机提供服务,副本之间没有同步,没有重复,而且复杂性非常有限。

  

“为什么我们应该在更高层次上有程序性的东西”

你没有更高层次的程序。

您有一个具有多种方法的对象(提供服务的主机)。它完全是面向对象的。

通常 - Singleton ,这会让生活变得非常简单。

答案 4 :(得分:0)

为什么会出现这种情况?分布式服务和分布式对象的概念如果不是完全重叠(并且SOAP毕竟是对象访问协议)。 WCF是通过单行配置在“Web服务”和“远程对象”之间切换的一个示例。

差异主要是术语,由历史应用领域解释。

(Szymon基本上写了相同的预告片)