應用Remoting技術的分散式處理程式

來源:互聯網
上載者:User

 基礎知識:        在Remoting中是通過通道(channel)來實現兩個應用程式定義域之間通訊的

       Remoting的通道有兩種:TCP和HTTP,TCP通道提供了基於Socket的傳輸工具,使用Tcp協議來跨越Remoting邊界傳輸序列化的訊息流程,TcpChannel使用二進位格式序列化訊息對象。HttpChannel使用Soap格式來序列化訊息對象,HttpChannel用Http協議使訊息能在Internet上穿越防火牆傳輸序列化的訊息流程。       遠程對象的啟用方式:伺服器端啟用和用戶端啟用

伺服器端啟用又叫WellKnow,知名對象啟用方式。      

Remoting把伺服器端啟用又分為SingleTon模式和SingleCall模式兩種      

SingleTon模式:有狀態模式,Remoting將為所有用戶端建立同一個對象執行個體。       

SingleCall模式:當用戶端調用遠程對象的方法使,Remoting為每一個用戶端建立一個遠程對象執行個體         

用戶端啟用       

Remoting在啟用每一個對象的執行個體時,會給每個用戶端啟用的類型指派一個URI,來擷取通道中的遠程對象        

 在Remoting分布式程式中,通常包括三部分,遠程對象、服務端、用戶端,由於Remoting傳輸對象是序列化的引用方式,所以遠程對象類必須要繼承MarshalByRefObject類。        

發起者和訂閱者:訊息由發起者發送,訂閱者收到該訊息後,激發事件。

 2.程式結構與說明

1).總體思路用戶端啟用遠程對象,然後用此遠程對象訂閱遠程類的事件,當伺服器調用遠程類的方法發送訊息後,用戶端啟用事件接收訊息。

2)Common程式集該程式集屬於公用的,定義了委託BroadCastEventHandler和介面IBroadCast。既要在伺服器端部署,也要在用戶端部署。用戶端用GetObject()方法來啟用遠程對象,用戶端獲得IBradCast介面類型的遠程對象代理

  3)類EventWrapper         此類的實現方式完全和遠程類的實現方式一樣。在用戶端註冊事件後,用此類的委託來訂閱遠程事件,並激發此事件來接收訊息

  4)遠程類BroadCastObj        為了序列化傳輸對象,此類繼承了類MarshalByRefObject和實現了介面IBroadCast       通過實現委託來定義事件,發送訊息。      考慮到伺服器在發送訊息時,對用戶端發生的意外情況渾然不知,所以在發送訊息的方法中使用了委託鏈,在委託鏈的遍曆中來捕獲異常。當某一用戶端的委託發生異常時,在伺服器端給出提示資訊,並取消該委託,然後繼續遍曆其他用戶端的委託。這樣即能處理用戶端的異常,又能保證其他正常的用戶端的訊息接收。  5)Server程式集         當伺服器啟動時,建立Tcp通道,指定通道所用的協議,連接埠號碼和傳輸方式,並註冊這個通道。建立遠程對象的執行個體,並把此執行個體Marshal到通道中,並指明此對象在通道中的名稱。然後調用註冊的遠程對象的方法來發送訊息。在遠程類的方法中,用公用類EventWrapper的事件來發送訊息,而此事件也在客訂閱了,所以伺服器端發送的訊息用戶端能接收到。 6)Client程式集         建立和伺服器端類型相同的通道,         用GetObject方法啟用遠程對象的代理對象,指定遠程物件類型,使用的傳輸協議,伺服器名稱或IP,伺服器的連接埠,及遠程對象在通道中的名稱。 watch = (IBroadCast)Activator.GetObject( typeof(IBroadCast), "tcp://chenhongming:6791/CallbackSample");         建立遠程類中事件的執行個體,並且用此執行個體訂閱本地方法         然後用遠程對象來訂閱遠程事件,此事件觸發已訂閱了本地方法的事件,程式碼範例:   本地方法:是把所接收到的訊息顯示在文字框中。由於調用本地方法不是主線程調用的,所以又要建立一個委託,通過這個委託註冊本地方法,然後在主線程中調用委託來接收訊息並顯示出來。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.