|
系列文章導(dǎo)航:
創(chuàng)建一個(gè)示例和WebMethod特性解析
利用YAHOO公開(kāi)API做天氣預(yù)報(bào)Web服務(wù)
其實(shí)現(xiàn)的原理并沒(méi)有本質(zhì)的區(qū)別,在應(yīng)用開(kāi)發(fā)層面上有以下區(qū)別:
1、Remoting可以靈活的定義其所基于的協(xié)議,如果定義為HTTP,則與Web Service就沒(méi)有什么區(qū)別了,一般都喜歡定義為T(mén)CP,這樣比Web Service稍為高效一些
2、Remoting不是標(biāo)準(zhǔn),而Web Service是標(biāo)準(zhǔn);
3、Remoting一般需要通過(guò)一個(gè)WinForm或是Windows服務(wù)進(jìn)行啟動(dòng),而Web Service則需要IIS進(jìn)行啟動(dòng)。
4、在VS.NET開(kāi)發(fā)環(huán)境中,專(zhuān)門(mén)對(duì)Web Service的調(diào)用進(jìn)行了封裝,用起來(lái)比Remoting方便
我建議還是采用Web Service好些,對(duì)于開(kāi)發(fā)來(lái)說(shuō)更容易控制
Remoting一般用在C/S的系統(tǒng)中,Web Service是用在B/S系統(tǒng)中
后者還是各語(yǔ)言的通用接口
相同之處就是都基于XML
Web Service大體上分為5個(gè)層次:
1. Http傳輸信道
2. XML的數(shù)據(jù)格式
3. SOAP封裝格式
4. WSDL的描述方式
5. UDDI
總體上來(lái)講,.NET 下的 Web Service結(jié)構(gòu)比較簡(jiǎn)單,也比較容易理解和應(yīng)用:
一般來(lái)講在.NET結(jié)構(gòu)下的WebService應(yīng)用都是基于.NET framework以及IIS的架構(gòu)之下,所以部署(Dispose)起來(lái)相對(duì)比較容易點(diǎn).
從實(shí)現(xiàn)的角度來(lái)講,
首先WebService必須把暴露給客戶(hù)端的方法所在的類(lèi)繼承于:System.Web.Services.WebService這個(gè)基類(lèi)
其次所暴露的方法前面必須有[WebMethod]或者[WebMethodAttribute]
WebService的運(yùn)行機(jī)理
首先客戶(hù)端從服務(wù)器的到WebService的WSDL,同時(shí)在客戶(hù)端聲稱(chēng)一個(gè)代理類(lèi)(Proxy Class)
這個(gè)代理類(lèi)負(fù)責(zé)與WebService服務(wù)器進(jìn)行Request 和Response
當(dāng)一個(gè)數(shù)據(jù)(XML格式的)被封裝成SOAP格式的數(shù)據(jù)流發(fā)送到服務(wù)器端的時(shí)候,就會(huì)生成一個(gè)進(jìn)程對(duì)象并且把接收到這個(gè)Request的SOAP包進(jìn)行解析,然后對(duì)事物進(jìn)行處理,處理結(jié)束以后再對(duì)這個(gè)計(jì)算結(jié)果進(jìn)行SOAP包裝,然后把這個(gè)包作為一個(gè)Response發(fā)送給客戶(hù)端的代理類(lèi)(Proxy Class),同樣地,這個(gè)代理類(lèi)也對(duì)這個(gè)SOAP包進(jìn)行解析處理,繼而進(jìn)行后續(xù)操作。
這就是WebService的一個(gè)運(yùn)行過(guò)程。
下面對(duì).NET Remoting進(jìn)行概括的闡述:
.NET Remoting 是在DCOM等基礎(chǔ)上發(fā)展起來(lái)的一種技術(shù),它的主要目的是實(shí)現(xiàn)跨平臺(tái)、跨語(yǔ)言、穿透企業(yè)防火墻,這也是他的基本特點(diǎn),與WebService有所不同的是,它支持HTTP以及TCP信道,而且它不僅能傳輸XML格式的SOAP包,也可以傳輸傳統(tǒng)意義上的二進(jìn)制流,這使得它變得效率更高也更加靈活。而且它不依賴(lài)于IIS,用戶(hù)可以自己開(kāi)發(fā)(Development)并部署(Dispose)自己喜歡的宿主服務(wù)器,所以從這些方面上來(lái)講WebService其實(shí)上是.NET Remoting的一種特例。
Remoting的兩種通道
Remoting的通道主要有兩種:Tcp和Http。在.NET中,System.Runtime.Remoting.Channel中定義了 IChannel接口。IChannel接口包括了TcpChannel通道類(lèi)型和Http通道類(lèi)型。它們分別對(duì)應(yīng)Remoting通道的這兩種類(lèi)型
1. remoting 是MarshByReference的,可以傳變量的引用,直接對(duì)服務(wù)器對(duì)象操作。速度快,適合intraNET(企業(yè)內(nèi)部互聯(lián)網(wǎng))。
webservice 是MarshByValue的,必須傳對(duì)象的值。速度慢,可以過(guò)FIREWALL,配置比較簡(jiǎn)單,適合interNET(因特網(wǎng))。
2. 一般來(lái)說(shuō),remoting是和平臺(tái)相關(guān)的,需要客戶(hù)和服務(wù)器都是.NET,但可配置特性比較好,可以自定義協(xié)議。web service可以做到跨平臺(tái)通信,但必須采用SOAP協(xié)議。
3. Soap消息有rpc和文檔兩種樣式。 文檔樣式的body元素中包含一個(gè)或多個(gè)元素,可以是任何內(nèi)容,只要接受者理解就行了。rpc樣式的的body元素中包含調(diào)用的方法或遠(yuǎn)程過(guò)程的名稱(chēng),以及代表方法參數(shù)的元素。
.NET對(duì)這兩種樣式的實(shí)現(xiàn)就是web service 和remoting .
NET技術(shù):Remoting和Webservice的區(qū)別,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。