Remoting的基本概念

來源:互聯網
上載者:User

一 Remoting技術出現的背景

1)分布式應用需求的迅速增長(Peer-to-Peer, Grid等技術的出現)
2)原有的C/S, B/S模式和技術已經不能勝任(串口RS232,Socket,RPC,DCOM技術各有缺點)


二 什麼是Romoting?

採用分布式進行編程的一種技術,Remoting主要用於管理跨應用程式定義域的同步和非同步RPC 會話。在預設情況下,Remoting使用 HTTP 或 TCP 協議,並使用 XML 編碼的 SOAP 或本機二進位訊息格式進行通訊。.NET Remoting 提供了非常靈活和可擴充的編程架構,並且他可以管理對象的狀態。

Remoting優點:
1)  效能: 如果調優.Net Remoting 的效能,那麼他的效能非常好,速度接近DCOM.
2) 可擴充:.Net Remoting 可供你選擇傳輸通道類型(如Http,Tcp)和格式類型(如Binary,Soap)。
3) 可配置:可以通過設定檔配置應用程式。
4) CLR和CTS的好處:由於.NET Remoting是基於.NET架構的,所以他擁有Common Type System(CTS) 和 Common Language Runtime(CLR)所擁有的便於使用和功能強大的特點。
5)互用性(Interoperability): .NET Remoting 支援開發標準(Http,SOAP,WSDL,XML).
6) 安全性
7) 生命週期管理


三 Remoting架構:

 Remoting通過通道(channel)來傳輸訊息。.NET Remoting支援兩種預設的協議支援通道(Http和Tcp).


四 遠程對象的兩個含義

操作遠程對象:對象運行在遠程,用戶端向他發送訊息.
傳遞遠程對象:將遠端對象拿到本地,或者將本機物件發送過去,然後我們可以對副本進行操作.


五 啟用物件的兩種方式:
伺服器啟用和用戶端啟用

1 伺服器啟用:“伺服器啟用的對象”是由伺服器控制生存期的對象。它們只在用戶端調用對象的第一個方法時,根據需要由伺服器建立。伺服器啟用的對象只支援預設的建構函式。
代碼:

<service>
  <wellknown mode="SingleCall" type="Hello.HelloService, Hello" 
                   objectUri="HelloService.soap" />
</service>

上面描述了一個伺服器啟用的 (wellknown) 類型,其啟用方式設定為 SingleCall

伺服器啟用的對象有兩種啟用模式:SingletonSingleCall.
1) Singleton(單一實例):
這些對象遵循傳統的Singleton 設計模式,在這種模式中,任何時候記憶體中都只有一個執行個體,所有用戶端都接受該執行個體提供的服務。
特點:
a.在伺服器段只執行個體化一次,以後每次調用都訪問同一個執行個體。
b.可以維持狀態

2) SingleCall(單調用)
SingleCall 遠程伺服器類型總是為每個用戶端請求設定一個執行個體。下一個方法調用將改由其他執行個體進行服務。從設計角度看,SingleCall 類型提供的功能非常簡單。這種機制不提供狀態管理,如果您需要狀態管理,這將是一個不利之處;如果您不需要,這種機制將非常理想。也許您只關心Server Load Balancer和延展性而不關心狀態,那麼在這種情況下,這種模式將是您理想的選擇,因為對於每個請求都只有一個執行個體。如果願意,開發人員可以向 SingleCall 對象提供自己的狀態管理,但這種狀態資料不會駐留在對象中,因為每次調用新的方法時都將執行個體化一個新的對象標識。
特點:
a.每次調用都執行個體化新的執行個體
b.更好地支援無狀態編程模型

2 用戶端啟用
“用戶端啟用的對象”是當用戶端調用 newActivator.CreateInstance() 時在伺服器上建立的。
代碼:

<service>
  <activated type="Hello.HelloService, Hello" 
             objectUri="HelloService.soap" />
</service>

上面描述了一個用戶端啟用的類型。請注意,我們不再需要 URL,因為對於用戶端啟用的類型,類型本身就足以啟用了。另外,wellknown 標記已被 activated 標記替代。

六 Remoting VS Web Service

這兩者都是基於分布式的開發,而且.Net Remoting有時也可以配置為Web Service,兩者有很多的相同之處。

一般來講,我把他們的不同之處列為5個方面。

1) 開發部署
 WebService開發和部署比較簡單,Remoting相對WebService開發和部署要稍複雜。
2) 協議的開放性 
    兩者都可支援HTTP,TCP,SMTP等多種協議。
    [一直以為WebService只支援HTTP協議,經idior指點,原來在Web Services Enhancements已有介紹,WebService也支援TCP,SMTP等協議。微軟最新發行的wse應該是wse 3.0,以前還沒聽說過,真是汗顏!]
   更詳細的內容待續...
3) 支援的類型系統
 WebService只支援XSD類型系統,對象的類型的序列化受到限制,而Remoting可以通過序列化為Binary傳輸資料,支援更為廣泛的資料類型
4) 安全性
 
由於 ASP.NET Web 服務依賴於 HTTP,因此它們與標準的 Internet 安全性基礎結構相整合。ASP.NET 利用 IIS 的安全性功能,為標準 HTTP 驗證方案(包括基本、簡要、數位憑證,甚至 Microsoft .NET Passport)提供了強有力的支援。
 一般情況下,.NET Remoting 管線不能確保跨進程調用的安全。使用 ASP.NET 託管於 IIS 中的 .NET Remoting 端點可以利用 ASP.NET Web 服務可用的所有安全性功能,包括對使用 SSL 確保有線通訊的安全性的支援。
5) 效能
從原始效能方面來講,使用 TCP 通道和二進位格式化程式時,.NET Remoting 管線能夠提供最快的通訊。一般情況下,.NET Remoting的效能要比WebService高。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.