複製鏈接
請複製以下鏈接發送給好友

遠程處理

鎖定
遠程處理(remoting)是使分佈式的應用程序便依進行擴展的新技術,它可使對象以最小的開銷跨越AppDomain(進程內地的執行環境)進行通信。
遠程處理(remoting)結構與分佈式計算相關聯的基礎通信信息通道一樣抽象。它容易在多個分佈式的對象之間建立通信,並且就好像對象是在同一個處理空間進行通信一樣。
遠程處理可以按不同級別來實施。遠程處理和其他分佈式的技術之間的重要區別是它的結構的可擴展性。遠程處理結構很靈活,通過添加參與通信進程的自定義的組件啓用擴展應用程序的能力。 [1] 
中文名
遠程處理
外文名
remoting

遠程處理對象

分佈式體系中,可遠程處理的對象主要有兩種:一是按值封送對象,它們被複制並傳出應用程序域;二是按引用封送對象,將為其創建代理,而該代理由客户端用於遠程訪問對象。下面詳細介紹這兩種對象。

遠程處理按值封送對象

對於按值封送(MarShal By value,MBV)對象而言,遠程處理系統創建這些對象的完整副本並將副本傳遞到進行調用的應用程序域。一旦副本到達調用方的應用程序域內,對它的調用就是對該副本的直接調用。而且,當MBV對象作為參數傳遞時,也是通過值傳遞的。
只需要聲明它們的序列化規則,就可以將對象作為MBV對象。具體的方法有兩種:通過實現ISerializable接口來實現其自身的序列化;或者通過用serializableAtt舶ute修飾,該屬性通知系統自動序列化該對象),但是不擴展MarShalByRefobject。
遠程處理系統廣泛使用可序列化的對象。僅傳輸數據的對象通常是MBv對象。例如,實現了ISerializable接口的DataSet對象。
由於性能等方面的原因,將對象的完整狀態和任何可執行功能移動到目標應用程序域有意義時,應當使用MBV對象。這減少了跨網絡、進程和應用程序域邊界的代價。

遠程處理按引用封送的對象

按引用封送(MarShal By Reference,MBR)的對象是至少擴展System::MarshalByRefObiect的可遠程處理的對象。
當客户端創建MBR對象的實例時,.NET遠程處理基礎結構在調用方中創建一個代理對象,客户端將在該代理對象上進行調用;遠程處理封送這些調用,將它們發送回起始應用程序域,並在實際對象上執行該調用。(如果客户端位於與MBR對象相同的應用程序域中,基礎結構將向客户端返回對該MBR對象的直接引用,從而避免封送處理的系統開銷。) [2] 

遠程處理關鍵技術

1.偵聽
代理與佔位程序(在.NET中稱為調度程序)將客户或服務器端的函數調用轉換成消息,然後通過網絡發送。這叫作偵聽(Interc印tion),因為代理和調度程序截獲方法調用並將其發送到遠程目的地。與CoM不同,由於元數據提供了相關的信息,所以CLR可以生成代理與佔位程序,不需要自己編寫。
代理(proxy)將函數調用從棧結構上取出來,並將其轉換成一個消息。這個消息之後被髮送到它的目的地。調度程序接收這個消息,並將其轉換到棧結構,這樣來完成對象的調用。
代理從發出調用的客户的棧結構上取一個整數參數id,將其放入一個消息中,該消息編碼了這個調用及其參數。在服務器端,調度程序接收該消息,並在服務器的棧上為UnregistersCustomer(int id)創建一個函數調用,然後產生對象的調用。客户與服務器代碼不需要知道它們進行了遠程處理。
2.信道與格式化程序
格式化程序(Formatter)將消息轉換到一個字節流。.NET框架帶有兩個格式化程序,二進制與SOAP。轉換後的字節流通過通信信道發送出去。
雖然可以編寫自己的信道,但NET框架還是提供了兩個信道。HTTP信道使用HTIP協議,適用於在Internet 上或通過防火牆進行通信。TCP信道使用TCP(sockets)協議,設計用於高速通信。格式化程序與運輸方法有四種排列:在TCP上傳送二進制、在HTTP上傳送二進制、在HTTP上傳送SOAP和在TCP上傳送SOAP。

遠程處理工作過程

當一個客户端調用另一個應用程序域內的某個對象的方法時,它首先由客户應用程序域內的一個代理(pmxy)對象處理。這個代理是遠程對象在客户應用程序域中的一個代理人,使客户表現得彷彿“對象就運行於本機”似的。CLR運用反射(reflection)來訪問正被訪問的遠程對象的元數據,自動創建一個代理。請注意,這意味“內含遠程對象之類和,或接口”的程序集,必須也可在客户機器上取得。
代理最終會將調用信息交給一個通道(channel)對象。這個通道對象負責使用某種適當機制,比如一個TCP連接(connection),將客户的請求傳給遠程應用程序域。一旦這個請求到達目的地,運行於該處的一個通道對象便找出這個調用所要送達的目標對象(target object),如果彼時該對象尚未運行起來,就創建它並將此調用傳遞給該對象,後者執行這個調用,並通過相同的路徑傳回結果。 [3] 

遠程處理應用

可以想像,遠程處理的應用種類是很有限的.多數公司將利用現有的通信網絡來實現幾種不同的應用.為了突出通信網的應用潛力,我們對一般的遠程處理應用作如下分類.
電子郵件。電子郵件通常與辦公自動化相聯繫。在電子郵件應用中,計算機是給公司內、外人員發送消息的一個工具。對整個單位的每個人員都分配一個電子郵政信箱,用以接收和存放消息。通過一個電子標誌。來通知區域級經理有關的消息。區域級經理可以要求將有關消息顯示在視頻終端的顯示屏上,如果需要,還可以打印一份硬拷貝。
查詢/回答。在查詢/回答這類應用中,操作員(也可能是用户經理)進行某種查詢,然後計算機(經由信息系統)作出回答。例如,人事經理可能要求查詢某個特定職工的培訓記錄。一個百貨公司銷售員可能要求查詢某個顧客的賒帳限度。
字處理。在字處理應用中,操作員利用軟件來進行正文處理。儘管當前多數的字處理是用一台單獨的設備來完成的,但是也有許多公司為了充分利用數據庫而使用功能更強的主處理機的軟件來進行字處理。
數據錄入。經由通信網絡可以從遠程地點直接將數據錄入到系統中。例如,銀行分行的出納員可以在每項銀行事務出現時,直接將它錄入系統。
數據收集。在有些情況下,將利用通信網絡來收集數據。一個典型的例子是在一家百貨公司銷售網上各銷售點(POS)終端。在整個工作日中,每個銷售事務被自動記入一個計算機文件。數據被收集和分批以供處理。過程控制。數據通信也被用在過程控制上。
遠程計算。通信網絡給最終用户提供了利用計算機進行計算的機會。在一個大公司的研究中心裏,通常有400個以上的工程師和科學家使用約15O台遠程終端進行科學或工程計算。
交互式程序設計。應用程序員或系統程序員以及用户利用遠程終端直接訪問訓‘算機來編寫他們的程序。利用聯機調試輔助軟件和直接診斷程序將更容易進行程序的開發。
診斷估計。用户工程師在遠程設備上定期使用診斷軟件來查出診斷軟件或機器錯誤的根源。 [4] 
參考資料
  • 1.    (美)梅歐(Mayo,J.)著 王啓丁等譯.C#技術內幕:機械工業出版社,2003年01月
  • 2.    唐大仕 劉光編著.高等學校計算機語言應用教程 VISUAL C++.NET 應用教程:清華大學出版社,2006年05月
  • 3.    (美)恰坡著.NET大局觀:電子工業出版社,2006年9月
  • 4.    (美)雷利·E·郎.計算機與信息系統指南:電子工業出版社,1986年10月