簡體   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