Web Service學習筆記:remoting和webservice的區別

來源:互聯網
上載者:User

本文轉自:未知(希望原作者看到後,聯絡我,我將添加上原文的連結),我在學習的過程中用了這方面的內容,就把它放在這了。希望這個能給大家帶來收穫,和我一同進步。

其實現的原理並沒有本質的區別,在應用開發層面上有以下區別:
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與Web Services的區別是:
    (1)既支援TCP通道又支援HTTP通道,傳輸速度快
    (2)即可傳輸XML的SOAP包又可傳輸二進位流,效率高
    (3)Remoteing主要用於C/S結構項目
    (4)不一定要依賴IIS伺服器

    聯繫我們

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