繁体   English   中英

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

[英]How are distributed services better than distributed objects?

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

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

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

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

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

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

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

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

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

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

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

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

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

“我们为什么要在更高层次上拥有如此程序化的东西”

你没有更高层次的程序。

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

它通常是一个单身人士 ,它让生活变得非常简单。

为什么反对? 分布式服务和分布式对象的概念即使不是完全重叠也很重要(毕竟SOAP是对象访问协议)。 WCF是通过单行配置在“Web服务”和“远程对象”之间切换的一个示例。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM