Remoting與Web Services的區別

2021-06-20 21:20:14 字數 2288 閱讀 5118

概括的說remoting與web services的區別是:

(1)既支援tcp通道又支援http通道,傳輸速度快

(2)即可傳輸xml的soap包又可傳輸二進位製流,效率高

(3)remoteing主要用於c/s結構專案

(4)不一定要依賴iis伺服器

其實現的原理並沒有本質的區別,在應用開發層面上有以下區別:

1、remoting可以靈活的定義其所基於的協議,如果定義為http,則與web service就沒有什麼區別了,一般都喜歡定義為tcp,這樣比web service稍為高效一些

2、remoting不是標準,而web service是標準;

3、remoting一般需要通過乙個winform或是windows服務進行啟動,而web service則需要iis進行啟動。

4、在vs.net開發環境中,專門對web service的呼叫進行了封裝,用起來比remoting方便

我建議還是採用web service好些,對於開發來說更容易控制

remoting一般用在c/s的系統中,web service是用在b/s系統中

後者還是各語言的通用介面

相同之處就是都基於xml

為了能清楚地描述web service 和remoting之間得區別,我打算從他們的體系結構上來說起:

web service大體上分為5個層次:

1. http傳輸通道

2. xml的資料格式

3. soap封裝格式

4. wsdl的描述方式

5. uddi

總體上來講,.net 下的 web service結構比較簡單,也比較容易理解和應用:

一般來講在.net結構下的webservice應用都是基於.net framework以及iis的架構之下,所以部署(dispose)起來相對比較容易點.

從實現的角度來講,

首先webservice必須把暴露給客戶端的方法所在的類繼承於:system.web.services.webservice這個基類

其次所暴露的方法前面必須有[webmethod]或者[webmethodattribute]

webservice的執行機理

首先客戶端從伺服器的到webservice的wsdl,同時在客戶端聲稱乙個**類(proxy class)

這個**類負責與webservice伺服器進行request 和response

當乙個資料(xml格式的)被封裝成soap格式的資料流傳送到伺服器端的時候,就會生成乙個程序物件並且把接收到這個request的soap包進行解析,然後對事物進行處理,處理結束以後再對這個計算結果進行soap包裝,然後把這個包作為乙個response傳送給客戶端的**類(proxy class),同樣地,這個**類也對這個soap包進行解析處理,繼而進行後續操作。

這就是webservice的乙個執行過程。

下面對.net remoting進行概括的闡述:

.net remoting 是在dcom等基礎上發展起來的一種技術,它的主要目的是實現跨平台、跨語言、穿透企業防火牆,這也是他的基本特點,與webservice有所不同的是,它支援http以及tcp通道,而且它不僅能傳輸xml格式的soap包,也可以傳輸傳統意義上的二進位製流,這使得它變得效率更高也更加靈活。而且它不依賴於iis,使用者可以自己開發(development)並部署(dispose)自己喜歡的宿主伺服器,所以從這些方面上來講webservice其實上是.net remoting的一種特例。

remoting的兩種通道

remoting的通道主要有兩種:tcp和http。在.net中,system.runtime.remoting.channel中定義了 ichannel介面。ichannel介面包括了tcpchannel通道型別和http通道型別。它們分別對應remoting通道的這兩種型別

1. remoting 是marshbyreference的,可以傳變數的引用,直接對伺服器物件操作。速度快,適合intranet(企業內部網際網路)。

webservice 是marshbyvalue的,必須傳物件的值。速度慢,可以過firewall,配置比較簡單,適合internet(網際網路)。

2. 一般來說,remoting是和平台相關的,需要客戶和伺服器都是.net,但可配置特性比較好,可以自定義協議。web service可以做到跨平台通訊,但必須採用soap協議。

3. soap訊息有rpc和文件兩種樣式。文件樣式的body元素中包含乙個或多個元素,可以是任何內容,只要接受者理解就行了。rpc樣式的的body元素中包含呼叫的方法或遠端過程的名稱,以及代表方法引數的元素。

.net對這兩種樣式的實現就是web service 和remoting .

Remoting與Webservice效能測試報告

近來在網上經常看見大家對webservice和remoting效能的討論,可是沒有看見具體的測試資料,所以我簡單的做了乙個測試把資料公布給大家做個參考 測試環境 sqlserver2005資料庫,百萬資料。均採用外網 網際網路 環境,頻寬1m,伺服器配置 2u 2g記憶體 remoting採用tcp...

Remoting 與 Webservice 的區別

其實現的原理並沒有本質的區別,在應用開發層面上有以下區別 1 remoting可以靈活的定義其所基於的協議,如果定義為http,則與web service就沒有什麼區別了,一般都喜歡定義為tcp,這樣比web service稍為高效一些 2 remoting不是標準,而web service是標準 ...

通過httpclient呼叫webservice

在net平台,通過restcharp無法呼叫webservice,並報錯 說明 執行當前 web 請求期間,出現未處理的異常。請檢查堆疊跟蹤資訊,以了解有關該錯誤以及 中導致錯誤的出處的詳細資訊。異常詳細資訊 system.invalidoperationexception 因 url 意外地以 h...