RMI遠程方法調用和rpc遠程過程調用

  之前獨到rmi原理時,我還以爲時使用了遠程對象傳輸,然後在本地調用。然後發現這樣存在很大的問題,對象的生存環境變化了,那麼比如訪問數據庫,依賴的對象怎麼辦,這些沒法序列化吧?這些考慮的問題都是程序員員經驗(嘿嘿)。後來看到一些博文,發現不是這樣的。看着確實在本地生成了一個代理對象,方法調用也是在本地。但是真的不是這樣,背後的原理還是將參數傳遞給了遠程服務,然後從遠程服務獲取返回值。這個過程是透明的,就像調用本地方法一樣。

  調用遠程的服務,我們更常用的是http協議,它也可以實現相同的功能。比較一下這兩種方式的差異:rmi調用需要本地和遠程都有相同的接口源碼,以及相應的參數類型。http則很簡單,本地直接調用遠程的url,傳入參數,然後返回結果,這個一般採用json。可以看到,http的代碼耦合性更低,如果你想讓別人調用你的方法,你只需要告訴他方法地址和參數,返回格式等就可以了。但是rmi卻要求有接口的代碼,並且是java代碼,但是性能很好。所以rmi迭代很慢,確實不適合做敏捷開發。而http則可以和語言無關。

  看到dubbo的開發文檔,和rmi的方式有些相似,本地需要有遠程服務的對象的接口。

  

 

rmi介紹博文:https://www.cnblogs.com/yuyu666/p/10087381.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章