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