.Net 分布式技術比較


內容轉自於 http://www.mamicode.com/info-detail-585547.html

.NET 分布式技術比較

1. MSMQ(Microsoft Message Queue)

微軟消息隊列,是在多個不同的應用之間實現相互通信的一種異步傳輸模式,相互通信的應用可以分布於同一台機器上,也可以分布於相連的網絡空間中的任一位置。它的實現原理是:消息的發送者把自己想要發送的信息放入一個容器中(我們稱之為Message),然后把它保存至一個系統公用空間的消息隊列(Message Queue)中;本地或者是異地的消息接收程序再從該隊列中取出發給它的消息進行處理。

利用 MSMQ(Microsoft Message Queue),應用程序開發人員可以通過發送和接收消息方便地與應用程序進行快速可靠的通信。消息處理為您提供了有保障的消息傳遞和執行許多業務處理的可靠的防故障方法。

MSMQ與XML Web Services和.Net Remoting一樣,是一種分布式開發技術。但是在使用XML Web Services或.Net Remoting組件時,Client端需要和Server端實時交換信息,Server需要保持聯機。MSMQ則可以在Server離線的情況下工作,將Message臨時保存在Client端的消息隊列中,以后聯機時再發送到Server端處理。

顯然,MSMQ不適合於Client需要Server端及時響應的這種情況,MSMQ以異步的方式和Server端交互,不用擔心等待Server端的長時間處理過程。

雖然XML Web Services和.Net Remoting都提供了[OneWay]屬性來處理異步調用,用來解決Server端長方法調用長時間阻礙Client端。但是不能解決大量Client負載的問題,此時Server接受的請求快於處理請求。

擴展閱讀:  http://www.cnblogs.com/sk-net/archive/2011/11/25/2232341.html

       http://www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-Message-Queue-System-for-NET

擴展關鍵詞: Message queue 消息中間件

思考: Message queue OR Web service

 

.NET Remoting

.Net Remoting技術,我們可以將其看作是一種分布式處理方式。作為應用程序之間通信的一種機制,.Net Remoting與MSMQ消息隊列不同,它不支持離線脫機消息,另外只適合.Net平台間程序的通信.從微軟的產品角度來看,可以說Remoting就是分布式組件DCOM的一種升級,它改善了很多功能,並極好的融合到.Net平台下。.NET Remoting 提供了一種允許對象通過應用程序域與另一對象進行交互的框架。這也正是我們使用Remoting的原因。為什么呢?在Windows操作系統中,是將應用程序分離為單獨的進程。這個進程形成了應用程序代碼和數據周圍的一道邊界。如果不采用進程間通信IPC(Internet Process Connection)機制,則在一個進程中執行的代碼就不能訪問另一進程。這是一種操作系統對應用程序的保護機制。然而在某些情況下,我們需要跨過應用程序域,與另外的應用程序域進行通信,即穿越邊界(參考MSDN)。

 

.NET Remoting 與 Web Service 實現的原理並沒有本質的區別

服務器端向客戶端發送一個進程編號,一個程序域編號,以確定對象的位置。

     .net remoting與webservice都是用來通信的框架,它們最大的優點是可以像調用本地對象一樣調用遠程對象,比如:Uploader uploader = new Uploader();uploader.Save(file);可以用這樣簡潔而抽象的調用實現上傳,不用自已對socket進行一系列的處理,可以把更多精力放在業務邏輯上;區別:1、webservice是用的應用層協議http封裝的,所以它可以被很多其它語言調用,很多語言也都實現了webservice代理端封裝以及工具,只要知道webservice的地址(比如:http://www.baidu.com/SomeService.asmx),就可以用,所以webservice的點特是好用、通用、效率一般;.net remoting是用傳輸層協議tcp封裝的,所以可以以二進制傳輸數據,效率高;.net remoting基於.net的反射機制,只方便.net使用(其它語言反射機制實現不同,有的根本沒有反射); 2、webservice能穿越防火牆,是因為http協議是現在廣泛應用的協議,防火牆一般不會作屏蔽,並不說webservice有某功能穿越防火牆; 3、 只能在winform下用嗎?如果你是用.net開發,任何類型的應用程序都可以使用.net remoting與webservice,包括winform,asp.net, wpf, silverlight...,只要能using ...就可以按它們的方式用了1).net Remoting的工作原理是什么?

答案:服務器端向客戶端發送一個進程編號,一個程序域編號,以確定對象的位置。

2)  使用ASMX的XML Web服務與使用SOAP的.NET Remoting的區別?

答案:Web服務使用的消息機制,而Remoting采用的RPC. Web Service能用於不同平台,不同語言,Remoting只適用於.Net。效率上Remoting高於Xml Web Service

        Web服務是以消息來通信的,消息在調用方和服務端之間傳遞,而.NET Remoting是基於對象的,使得對象的方法可以跨網絡調用

3)簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。

答案:WS主要是可利用HTTP,穿透防火牆。而Remoting可以利用TCP/IP,二進制傳送提高效率。

4).概述.NET里對 remoting 和 webservice 兩項技術的理解和實際中的應用。

答案:遠程邏輯調用,remoing接口只能用在.net

remoting是.net 中用來跨越machine, process, appdomain 進行方法調用的技術,對於三成結構的程序,就可以使用remoting技術來構建.它是分布應用的基礎技術.相當於以前的DCOM

Web Service是一種構建應用程序的普通模型,並能在所有支持internet網通訊的操作系統上實施。Web Service令基於組件的開發和web的結合達到最佳,基於組件的對象模型。

相關推薦: http://www.cnblogs.com/DebugLZQ/archive/2012/07/30/2614815.html

               https://msdn.microsoft.com/en-us/library/ms978420.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM