Remoting技术简介
一 Remoting技術(shù)出現(xiàn)的背景
1)分布式應(yīng)用需求的迅速增長(Peer-to-Peer, Grid等技術(shù)的出現(xiàn))
2)原有的C/S, B/S模式和技術(shù)已經(jīng)不能勝任(串口RS232,Socket,RPC,DCOM技術(shù)各有缺點(diǎn))
二 什么是Romoting?
采用分布式進(jìn)行編程的一種技術(shù),Remoting主要用于管理跨應(yīng)用程序域的同步和異步RPC 會話。在默認(rèn)情況下,Remoting使用 HTTP 或 TCP 協(xié)議,并使用 XML 編碼的 SOAP 或本機(jī)二進(jìn)制消息格式進(jìn)行通信。.NET Remoting 提供了非常靈活和可擴(kuò)展的編程框架,并且他可以管理對象的狀態(tài)。
Remoting優(yōu)點(diǎn):
1) 性能: 如果調(diào)優(yōu).Net Remoting 的性能,那么他的性能非常好,速度接近DCOM.
2) 可擴(kuò)展:.Net Remoting 可供你選擇傳輸通道類型(如Http,Tcp)和格式類型(如Binary,Soap)。
3) 可配置:可以通過配置文件配置應(yīng)用程序。
4) CLR和CTS的好處:由于.NET Remoting是基于.NET框架的,所以他擁有Common Type System(CTS) 和 Common Language Runtime(CLR)所擁有的易于使用和功能強(qiáng)大的特點(diǎn)。
5)互用性(Interoperability): .NET Remoting 支持開發(fā)標(biāo)準(zhǔn)(Http,SOAP,WSDL,XML).
6) 安全性
7) 生命周期管理
三 Remoting架構(gòu):
Remoting通過通道(channel)來傳輸消息。.NET Remoting支持兩種默認(rèn)的協(xié)議支持通道(Http和Tcp).
四 遠(yuǎn)程對象的兩個含義
操作遠(yuǎn)程對象:對象運(yùn)行在遠(yuǎn)程,客戶端向他發(fā)送消息.
傳遞遠(yuǎn)程對象:將遠(yuǎn)程的對象拿到本地,或者將本地對象發(fā)送過去,然后我們可以對副本進(jìn)行操作.
五 激活對象的兩種方式:服務(wù)器激活和客戶端激活
1 服務(wù)器激活:“服務(wù)器激活的對象”是由服務(wù)器控制生存期的對象。它們只在客戶端調(diào)用對象的第一個方法時,根據(jù)需要由服務(wù)器創(chuàng)建。服務(wù)器激活的對象只支持默認(rèn)的構(gòu)造函數(shù)。
代碼:
??<wellknown mode="SingleCall" type="Hello.HelloService, Hello"
??????????????????? objectUri="HelloService.soap" />
</service>
上面描述了一個服務(wù)器激活的 (wellknown) 類型,其激活方式設(shè)置為 SingleCall。
服務(wù)器激活的對象有兩種激活模式:Singleton 和 SingleCall.
1) Singleton(單實例):
這些對象遵循傳統(tǒng)的Singleton 設(shè)計模式,在這種模式中,任何時候內(nèi)存中都只有一個實例,所有客戶端都接受該實例提供的服務(wù)。
特點(diǎn):
a.在服務(wù)器段只實例化一次,以后每次調(diào)用都訪問同一個實例。
b.可以維持狀態(tài)
2) SingleCall(單調(diào)用)
SingleCall 遠(yuǎn)程服務(wù)器類型總是為每個客戶端請求設(shè)置一個實例。下一個方法調(diào)用將改由其他實例進(jìn)行服務(wù)。從設(shè)計角度看,SingleCall 類型提供的功能非常簡單。這種機(jī)制不提供狀態(tài)管理,如果您需要狀態(tài)管理,這將是一個不利之處;如果您不需要,這種機(jī)制將非常理想。也許您只關(guān)心負(fù)載平衡和 可伸縮性而不關(guān)心狀態(tài),那么在這種情況下,這種模式將是您理想的選擇,因為對于每個請求都只有一個實例。如果愿意,開發(fā)人員可以向 SingleCall 對象提供自己的狀態(tài)管理,但這種狀態(tài)數(shù)據(jù)不會駐留在對象中,因為每次調(diào)用新的方法時都將實例化一個新的對象標(biāo)識。
特點(diǎn):
a.每次調(diào)用都實例化新的實例
b.更好地支持無狀態(tài)編程模型
2 客戶端激活
“客戶端激活的對象”是當(dāng)客戶端調(diào)用 new 或 Activator.CreateInstance() 時在服務(wù)器上創(chuàng)建的。
代碼:
??<activated type="Hello.HelloService, Hello"
????????????? objectUri="HelloService.soap" />
</service>
上面描述了一個客戶端激活的類型。請注意,我們不再需要 URL,因為對于客戶端激活的類型,類型本身就足以激活了。另外,wellknown 標(biāo)記已被 activated 標(biāo)記替代。
六 Remoting VS Web Service
這兩者都是基于分布式的開發(fā),而且.Net Remoting有時也可以配置為Web Service,兩者有很多的相同之處。
1) 開發(fā)部署
WebService開發(fā)和部署比較簡單,Remoting相對WebService開發(fā)和部署要稍復(fù)雜。
2) 協(xié)議的開放性
???? 兩者都可支持HTTP,TCP,SMTP等多種協(xié)議。
????[一直以為WebService只支持HTTP協(xié)議,經(jīng)idior指點(diǎn),原來在Web Services Enhancements已有介紹,WebService也支持TCP,SMTP等協(xié)議。微軟最新發(fā)布的wse應(yīng)該是wse 3.0,以前還沒聽說過,真是汗顏!]
?? 更詳細(xì)的內(nèi)容待續(xù)...
3) 支持的類型系統(tǒng)
WebService只支持XSD類型系統(tǒng),對象的類型的序列化受到限制,而Remoting可以通過序列化為Binary傳輸數(shù)據(jù),支持更為廣泛的數(shù)據(jù)類型
4) 安全性
由 于 ASP.NET Web 服務(wù)依賴于 HTTP,因此它們與標(biāo)準(zhǔn)的 Internet 安全性基礎(chǔ)結(jié)構(gòu)相集成。ASP.NET 利用 IIS 的安全性功能,為標(biāo)準(zhǔn) HTTP 驗證方案(包括基本、簡要、數(shù)字證書,甚至 Microsoft .NET Passport)提供了強(qiáng)有力的支持。
一般情況下,.NET Remoting 管線不能確保跨進(jìn)程調(diào)用的安全。使用 ASP.NET 托管于 IIS 中的 .NET Remoting 端點(diǎn)可以利用 ASP.NET Web 服務(wù)可用的所有安全性功能,包括對使用 SSL 確保有線通信的安全性的支持。
5) 性能
從原始性能方面來講,使用 TCP 信道和二進(jìn)制格式化程序時,.NET Remoting 管線能夠提供最快的通信。一般情況下,.NET Remoting的性能要比WebService高。
轉(zhuǎn)載于:https://www.cnblogs.com/eart/archive/2011/05/30/2062473.html
總結(jié)
以上是生活随笔為你收集整理的Remoting技术简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET-------字符串和字节
- 下一篇: php学习之------[流程控制]