一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

WCF、Net remoting、Web service概念及區(qū)別

  Windows通信基礎(chǔ)(Windows Communication Foundation,WCF)是基于Windows平臺(tái)下開發(fā)和部署服務(wù)的軟件開發(fā)包(Software Development Kit,SDK)。

  WCF就是微軟對(duì)于分布式處理的 編程技術(shù)的集大成者,它將DCOM、Remoting、Web Service、WSE、MSMQ集成在一起,從而降低了分布式系統(tǒng)開發(fā)者的學(xué)習(xí)曲線,并統(tǒng)一了開發(fā)標(biāo)準(zhǔn)。

  WCF是建立在.NET Framework 2.0基礎(chǔ)之上的,包含在.NET 3.0/3.5當(dāng)中。2005中并沒有包含WCF,但是當(dāng)安裝好了WinFX Runtime Components后,我們就可以在Visual Studio 2005環(huán)境下開發(fā)和創(chuàng)建WCF的程序了。

  尊重資料來源。以下來自網(wǎng)頁http://www.cppblog.com/mzty/archive/2007/10/24/35068.html
  一 WCF
  概括地說,WCF具有如下的優(yōu)勢:

  1、統(tǒng)一性

  前面已經(jīng)敘述,WCF是對(duì)于ASMX,.NET Remoting,Enterprise Service,WSE,MSMQ等技術(shù)的整合。由于WCF完全是由托管代碼編寫,因此開發(fā)WCF的應(yīng)用程序與開發(fā)其它的.NET應(yīng)用程序沒有太大的區(qū)別,我們?nèi)匀豢梢韵駝?chuàng)建面向?qū)ο蟮?a href=/pingce/yingyong/ target=_blank class=infotextkey>應(yīng)用程序那樣,利用WCF來創(chuàng)建面向服務(wù)的應(yīng)用程序。

  2、互操作性

  由于WCF最基本的通信機(jī)制是SOAP,這就保證了系統(tǒng)之間的互操作性,即使是運(yùn)行不同的上下文中。這種通信可以是基于.NET到.NET間的通信。

  可以跨進(jìn)程、跨機(jī)器甚至于跨平臺(tái)的通信,只要支持標(biāo)準(zhǔn)的Web Service,例如J2EE應(yīng)用服務(wù)器(如WebSphere,WebLogic)。應(yīng)用程序可以運(yùn)行在Windows操作系統(tǒng)下,也可以運(yùn)行在其他的操作系統(tǒng),如Sun Solaris,HP Unix,Linux等等。

  3、安全與可信賴

  WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用戶認(rèn)證,數(shù)據(jù)完整性驗(yàn)證,數(shù)據(jù)隱私等多種安全因素。

  在SOAP的header中增加了WS-ReliableMessaging允許可信賴的端對(duì)端通信。而建立在WS-Coordination和WS-AtomicTransaction之上的基于SOAP格式交換的信息,則支持兩階段的事務(wù)提交(two-phase commit transactions)。

  上述的多種WS-Policy在WCF中都給與了支持。對(duì)于Messaging而言,SOAP是Web Service的基本協(xié)議,它包含了消息頭(header)和消息體(body)。在消息頭中,定義了WS-Addressing用于定位SOAP消息的地址信息,同時(shí)還包含了MTOM(消息傳輸優(yōu)化機(jī)制,Message Transmission Optimization Mechanism)。

  4、兼容性

  WCF充分的考慮到了與舊有系統(tǒng)的兼容性。安裝WCF并不會(huì)影響原有的技術(shù)如ASMX和.NET Remoting。即使對(duì)于WCF和ASMX而言,雖然兩者都使用了SOAP,但基于WCF開發(fā)的應(yīng)用程序,仍然可以直接與ASMX進(jìn)行交互。 

  二 WebService的運(yùn)行機(jī)理

  首先客戶端從服務(wù)器的到WebService的WSDL,同時(shí)在客戶端聲稱一個(gè)代理類(Proxy Class), 這個(gè)代理類負(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ā)送給客戶端的代理類(Proxy Class),同樣地,這個(gè)代理類也對(duì)這個(gè)SOAP包進(jìn)行解析處理,繼而進(jìn)行后續(xù)操作。

  三 .NET Remoting

  是在DCOM等基礎(chǔ)上發(fā)展起來的一種技術(shù),它的主要目的是實(shí)現(xiàn)跨平臺(tái)、跨語言、穿透企業(yè)防火墻,這也是他的基本特點(diǎn),與WebService有所不同的是,它支持HTTP以及TCP信道,而且它不僅能傳輸XML格式的SOAP包,也可以傳輸傳統(tǒng)意義上的二進(jìn)制流,這使得它變得效率更高也更加靈活。而且它不依賴于IIS,用戶可以自己開發(fā)(Development)并部署(Dispose)自己喜歡的宿主服務(wù)器,所以從這些方面上來講WebService其實(shí)上是.NETemoting的一種特例。

  區(qū)別:

  1、Remoting可以靈活的定義其所基于的協(xié)議,比如http,tcp等,如果定義為HTTP,則與Web Service相同,但是webservice是無狀態(tài)的,使用remoting一般都喜歡定義為TCP,這樣比Web Service稍為高效一些,而且是有狀態(tài)的。

  2、Remoting不是標(biāo)準(zhǔn),而Web Service是標(biāo)準(zhǔn)。

  3、Remoting一般需要通過一個(gè)WinForm或是Windows服務(wù)進(jìn)行啟動(dòng),也可以使用iis部署,而Web Service則必須在IIS進(jìn)行啟動(dòng)。

  4、在VS.NET開發(fā)環(huán)境中,專門對(duì)Web Service的調(diào)用進(jìn)行了封裝,用起來比Remoting方便。

  5 NET remoting只能應(yīng)用于MS 的.NET framework之下,需要客戶端必須安裝framework,但是WebService是平臺(tái)獨(dú)立的,跨語言(只要能支持XML的語言都可以) 以及穿透企業(yè)防火墻。

  分布式應(yīng)用程序設(shè)計(jì):ASP.NET Web 服務(wù)和 .NET Remoting

  ASP.NET Web 服務(wù)偏向于 XML Schema 類型系統(tǒng),提供具有廣泛使用范圍的跨平臺(tái)支持的簡單編程模型。.NET Remoting 偏向于運(yùn)行時(shí)類型系統(tǒng),提供較為復(fù)雜而且使用范圍小得多的編程模型。這種本質(zhì)上的差別是決定使用哪種技術(shù)的主要因素。但是,還要考慮很多其他設(shè)計(jì)因素,包括傳輸協(xié)議、主機(jī)進(jìn)程、安全性、性能、狀態(tài)管理以及對(duì)事務(wù)的支持等。

  傳輸協(xié)議和主機(jī)進(jìn)程

  盡管 SOAP 規(guī)范并不要求用 HTTP 作為傳輸協(xié)議,但是客戶端只能通過 HTTP 訪問使用 ASP.NET Web 服務(wù)實(shí)現(xiàn)的 Web 服務(wù),因?yàn)樗?ASP.NET 支持的唯一一種傳輸協(xié)議。服務(wù)是通過 IIS 調(diào)用的,并在 ASP.NET 的輔助進(jìn)程 ASPNET_wp.exe 中執(zhí)行。

  .NET Remoting 使您能夠在任何類型的應(yīng)用程序(包括 Windows 窗體、托管的 Windows 服務(wù)、控制臺(tái)應(yīng)用程序或 ASP.NET 輔助進(jìn)程)中靈活地托管遠(yuǎn)程對(duì)象。正如前面所述,.NET Remoting 提供兩個(gè)傳輸信道——TCP 和 HTTP。這兩個(gè)信道都能使用套接字提供任意發(fā)送和接收進(jìn)程之間的通信。

  它還能將 HTTP 信道與 IIS 和 ASP.NET 輔助進(jìn)程集成。這一點(diǎn)很重要,原因有以下幾點(diǎn)。首先,它是當(dāng)客戶端請(qǐng)求到達(dá)時(shí)自動(dòng)啟動(dòng) .NET Remoting 端點(diǎn)的唯一方法。.NET Remoting 管線不包括啟動(dòng)遠(yuǎn)程服務(wù)器所需的 DCOM 類型的服務(wù)控制管理器 (SCM)。如果從任意進(jìn)程中提供遠(yuǎn)程對(duì)象,則需要確保那些進(jìn)程正在運(yùn)行。還必須確保它們是線程安全的,例如,線程 A 不能在線程 B 開始關(guān)閉進(jìn)程之后激活對(duì)象。如果從 ASP.NET 提供遠(yuǎn)程對(duì)象,則可以利用 ASPNET_wp.exe 輔助進(jìn)程,這樣既可自動(dòng)啟動(dòng)又具有線程安全的優(yōu)勢。第二,與 IIS 集成是確??邕M(jìn)程 .NET Remoting 調(diào)用的唯一途徑,如下一節(jié)所述。

  ASP.NET Web 服務(wù)和 .NET Remoting 基礎(chǔ)結(jié)構(gòu)都是可擴(kuò)展的。您可以過濾入站和出站消息,從多方面控制類型封送和元數(shù)據(jù)的生成。使用 .NET Remoting,還能實(shí)現(xiàn)您自己的格式化程序和信道。

  安全性

  由于 ASP.NET Web 服務(wù)依賴于 HTTP,因此它們與標(biāo)準(zhǔn)的 InterNET 安全性基礎(chǔ)結(jié)構(gòu)相集成。ASP.NET 利用 IIS 的安全性功能,為標(biāo)準(zhǔn) HTTP 驗(yàn)證方案(包括基本、簡要、數(shù)字證書,甚至 Microsoft? .NET Passport)提供了強(qiáng)有力的支持。(還可以使用 Windows 集成驗(yàn)證,但只能用于信任域中的客戶端。)使用可用的 HTTP 驗(yàn)證方案的一個(gè)優(yōu)勢在于,無需在 Web 服務(wù)中更改代碼,IIS 是在 ASP.NET Web 服務(wù)被調(diào)用之前執(zhí)行驗(yàn)證的。ASP.NET 還支持基于 .NET Passport 的驗(yàn)證和其他自定義的驗(yàn)證方案。ASP.NET 支持基于目標(biāo) URL 的訪問控制,并通過與 .NET 代碼訪問安全性 (CAS) 基礎(chǔ)結(jié)構(gòu)的集成支持訪問控制。SSL 可用于確保通信的安全。

  盡管這些標(biāo)準(zhǔn)傳輸技術(shù)對(duì)于確保 Web 服務(wù)相當(dāng)有效,但它們只能做到這種程度。在涉及到不同信任域中多個(gè) Web 服務(wù)的復(fù)雜情況下,還得建立自定義的特殊解決方案。Microsoft 和其他公司正致力于創(chuàng)建一套安全性規(guī)范,該規(guī)范將基于 SOAP 消息的可擴(kuò)展性提供消息級(jí)別的安全性功能。這些規(guī)范之一是 XML Web 服務(wù)安全性語言(WS-Security),它為消息級(jí)別的憑據(jù)傳輸、消息完整性和消息保密定義了框架。

  正如上一節(jié)所述,一般情況下,.NET Remoting 管線不能確保跨進(jìn)程調(diào)用的安全。使用 ASP.NET 托管于 IIS 中的 .NET Remoting 端點(diǎn)可以利用 ASP.NET Web 服務(wù)可用的所有安全性功能,包括對(duì)使用 SSL 確保有線通信的安全性的支持。如果您正在使用托管在進(jìn)程中的 TCP 信道或 HTTP 信道(而不是 ASPNET_wp.exe),則必須自己執(zhí)行身份驗(yàn)證、授權(quán)和保密機(jī)制。

  另一個(gè)要關(guān)注的安全性問題是,在不必更改默認(rèn)安全性策略的情況下,從不完全信任的環(huán)境中執(zhí)行代碼的能力。ASP.NET Web 服務(wù)客戶端代理可以在這些環(huán)境中工作,但 .NET Remoting 代理則不能。要從不完全信任的環(huán)境中使用 .NET Remoting 代理,需要特殊的序列化權(quán)限。默認(rèn)情況下,該權(quán)限不會(huì)授予從 IntraNET 或 InterNET 上下載的代碼。如果要在不完全信任的環(huán)境中使用 .NET Remoting 客戶端,則需要更改從那些區(qū)域中加載的代碼的默認(rèn)安全性策略。當(dāng)您從運(yùn)行于沙箱(如下載的 Windows 窗體應(yīng)用程序)中的客戶端連接到系統(tǒng)時(shí),ASP.NET Web 服務(wù)是較簡單的選擇,因?yàn)椴恍枰陌踩圆呗浴?/p>

  狀態(tài)管理

  默認(rèn)情況下,ASP.NET Web 服務(wù)模型采用無狀態(tài)的服務(wù)結(jié)構(gòu);它并不是本能地與來自同一個(gè)用戶的多個(gè)調(diào)用相關(guān)。另外,客戶端每次調(diào)用 ASP.NET Web 服務(wù)時(shí),都創(chuàng)建一個(gè)新的對(duì)象以服務(wù)于該請(qǐng)求。方法調(diào)用完成后,該對(duì)象即被破壞。要維護(hù)請(qǐng)求之間的狀態(tài),可以使用 ASP.NET 頁面使用的相同技術(shù)(例如,Session 和 Application 屬性包),也可以自己實(shí)現(xiàn)自定義的解決方案。

  .NET Remoting 支持許多狀態(tài)管理選項(xiàng),并且可能與來自同一個(gè)用戶的多個(gè)調(diào)用相關(guān)或不相關(guān),這取決于您選擇的對(duì)象生命周期架構(gòu)。SingleCall 對(duì)象是無狀態(tài)的(如用于調(diào)用 ASP.NET Web 服務(wù)的對(duì)象),Singleton 對(duì)象共享所有客戶端的狀態(tài),客戶端激活的對(duì)象在每個(gè)客戶端的基礎(chǔ)上保持狀態(tài)(帶有其產(chǎn)生的所有相關(guān)的可升級(jí)性和可靠性問題)。

  性能

  從原始性能方面來講,使用 TCP 信道和二進(jìn)制格式化程序時(shí),.NET Remoting 管線能夠提供最快的通信。在我們進(jìn)行的比較 ASP.NET Web 服務(wù)和 .NET Remoting 的相對(duì)性能的幾乎所有的測試中,ASP.NET Web 服務(wù)在性能上都超出了使用 HTTP 或 TCP 信道的 SOAP 格式化程序的 .NET Remoting 端點(diǎn)。更有意思的是,使用二進(jìn)制格式化程序和 HTTP 信道的 ASP.NET 和 .NET Remoting 端點(diǎn)在性能上非常相近。(更多信息,請(qǐng)參見 Performance Comparison:NET Remoting vs. ASP.NET Web Services。)

  企業(yè)服務(wù)

  ASP.NET Web 服務(wù)或通過 .NET Remoting 提供的對(duì)象可以使用本地事務(wù)根據(jù)單個(gè)數(shù)據(jù)庫協(xié)調(diào)工作。如果需要根據(jù)多個(gè)資源協(xié)調(diào)工作,可以使用 .NET 企業(yè)服務(wù)(又稱 COM+)公布的事務(wù)(由 COM+ 管線管理的 DTC 分布式事務(wù))。但要注意的是,ASP.NET Web 服務(wù)和 .NET Remoting 管線都不能傳播公布的事務(wù),因此兩種端點(diǎn)都不可能通過跨進(jìn)程的調(diào)用繼承公布的事務(wù)。

  這不一定是件壞事。一般來講,公布的事務(wù)比本地事務(wù)代價(jià)要高,而要跨進(jìn)程傳播公布的事務(wù),則代價(jià)會(huì)更高。如果確實(shí)需要這一功能,簡單的解決方案是在 .NET 企業(yè)服務(wù)的服務(wù)器應(yīng)用程序中部署一個(gè)從 System.EnterpriseServices.ServicedComponent 派生的類(更多信息,請(qǐng)參見 COM+ Integration:How .NET Enterprise Services Can Help You Build Distributed Applications)。對(duì)該類對(duì)象的跨進(jìn)程調(diào)用將使用 DCOM 進(jìn)行處理,以確保正確傳播事務(wù)環(huán)境。較難的解決方案是使用底層的 API,手動(dòng)傳播分布的事務(wù)。

  值得注意的是,傳統(tǒng)的分布式事務(wù)模型一般不適用于松散耦合的 Web 服務(wù)?;谘a(bǔ)償事務(wù)的模型(即,撤消其他事務(wù)所提交工作的事務(wù))更有意義,因?yàn)槠涓綦x約束條件并不是很嚴(yán)格。在包括 Microsoft 的 Web 服務(wù)供應(yīng)商中有一種普遍的說法,即 Web 服務(wù)空間需要的事務(wù)模型越靈活,該空間中進(jìn)行的工作越多。等到定義出 Web 服務(wù)事務(wù)的標(biāo)準(zhǔn)方法時(shí),您就可以根據(jù)情況使用本地或公布的事務(wù)實(shí)現(xiàn)自己的補(bǔ)償架構(gòu)了。

  小結(jié)

  雖然 .NET Remoting 基礎(chǔ)結(jié)構(gòu)和 ASP.NET Web 服務(wù)都可以進(jìn)行跨進(jìn)程通信,但每種設(shè)計(jì)適用于不同的用戶。ASP.NET Web 服務(wù)提供了簡單的編程模型,并具有廣泛的使用范圍。.NET Remoting 提供了較為復(fù)雜的編程模型,而且使用范圍窄得多。請(qǐng)務(wù)必了解這兩種技術(shù)的工作原理,并選擇適合您應(yīng)用程序的技術(shù)。在任意一種情況下,都要使用 IIS 和 ASP.NET 管理進(jìn)程生命周期,并提供一般的安全性。

  我采用Remoting技術(shù)也是項(xiàng)目的需要:

  1、Remoteing主要用于C/S結(jié)構(gòu)項(xiàng)目。

  2、將Remoting采用TCP通訊,比Web Service不是稍微高效一些,而是高幾倍,甚至幾十倍,不愧為是在DCOM等基礎(chǔ)上發(fā)展起來的技術(shù)。對(duì)于跨地區(qū),乃至跨?。◤V域網(wǎng))的分布式應(yīng)用,效率的高低意味著軟件系統(tǒng)的生死存亡。

  我在博客上說的這個(gè)三層結(jié)構(gòu),本意也只是在.NET環(huán)境下,利用反射技術(shù)、對(duì)象關(guān)系映射等技術(shù),寫一個(gè)底層點(diǎn)的程序集,方便編寫數(shù)據(jù)庫訪問程序。該程序集要能封裝常用的數(shù)據(jù)庫操作。這個(gè)程序集不管是在Remoting、Web Service還是WCF,應(yīng)該都能用的。就象我們?cè)诖髮W(xué)課本里學(xué)數(shù)據(jù)結(jié)構(gòu),學(xué)的是一種思想。如果只是單純局限一種技術(shù),在日新月異的發(fā)展中,終將淘汰。我們都是凡人,不可能掌握所有技術(shù)。適合自己項(xiàng)目需要的,就是最好的!

NET技術(shù)WCF、Net remoting、Web service概念及區(qū)別,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲天堂久久新 | 成人免费大片黄在线观看com | 一区二区三区中文 | 美女一丝不佳一级毛片大屁股 | 国产综合欧美日韩视频一区 | 色交视频 | 欧美日韩加勒比一区二区三区 | 国产这里有精品 | 精品国产成人a区在线观看 精品国产成人a在线观看 | 国产一区二区在线看 | 性欧美4k高清精品 | 黄色美女视频 | 精品免费久久久久久久 | 久久国产精品视频一区 | 久久国产香蕉一区精品 | 亚洲五月花丁香花社区 | 国产精品成人观看视频网站 | 亚洲一区二区三区高清网 | 美女胸又大又www又黄的网站 | 国产亚洲精品97在线观看 | 亚洲日本欧美产综合在线 | 亚洲国产精品综合久久一线 | 99国产精品| 亚洲欧美精品久久 | 一区二区视频在线观看高清视频在线 | 欧美日本高清视频在线观看 | 2021久久精品国产99国产精品 | 国产在线小视频 | 五月婷婷六月综合 | 久久黑丝| 91精品视频免费在线观看 | 免费看岛国视频在线观看 | 超级成人97碰碰碰免费 | 国产永久在线视频 | 国产1区2区3区在线观看 | 成年美女黄网站色大片视频 | 免费看一区二区三区 | 国产精品成人观看视频网站 | 日本韩国一区二区三区 | 激情网婷婷| 一本色道久久综合亚洲精品 |