MarshalByRefObject浅析
首先了解一下不同應用程序域中的對象的通信方式有兩種:
一種是跨應用程序域邊界傳輸對象副本
一種是使用代理交換消息。
?
簡單來講,繼承此類的對象可以跨越應用程序域邊界被引用,甚至被遠程引用.
當一個對象需要長途跋涉到另一個環境中時,需要將其marshal成一個可以傳輸的形態(比如在.NET Remoting中對象將被打包成一個serializable的ObjRef實例——這個ByRef就是指ObjRef這種形態);同理,當打包以后傳輸到目標地點,還要執行unmarshal的操作將其還原為內存中的對象
你實際上只擁有對這個對象的一個遠程引用,雖然你可以調用它的方法,但實際上這些操作都是發生在遠程的(就是前面講過的過程)
?
別外解釋一下WebService,
Web services 使用 XML 來編解碼數據,并使用 SOAP(通信協議)來傳輸數據。大家可以發現WebService代理類的MarshalByRefObject對象的。
?
remoting 是MarshByReference的,可以傳變量的引用,直接對服務器對象操作。速度快,適合intranet(企業內部互聯網)。
?webservice 是MarshByValue的,必須傳對象的值。速度慢,可以過FIREWALL,配置比較簡單,適合internet(因特網)。
?
?
概括的說Remoting與Web Services的區別是:
(1)既支持TCP信道又支持HTTP信道,傳輸速度快
(2)即可傳輸XML的SOAP包又可傳輸二進制流,效率高
(3)Remoteing主要用于C/S結構項目
(4)不一定要依賴IIS服務器
一般來說,remoting是和平臺相關的,需要客戶和服務器都是.NET,但可配置特性比較好,可以自定義協議。web service可以做到跨平臺通信,但必須采用SOAP協議。?
總結
以上是生活随笔為你收集整理的MarshalByRefObject浅析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表达能力很重要
- 下一篇: matlab中tic和toc使用方法