ASP.NET高級(jí)應(yīng)用(3)_第1頁
ASP.NET高級(jí)應(yīng)用(3)_第2頁
ASP.NET高級(jí)應(yīng)用(3)_第3頁
ASP.NET高級(jí)應(yīng)用(3)_第4頁
ASP.NET高級(jí)應(yīng)用(3)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、    使用MSMQ         MSMQ(MicroSoft Message Queue,微軟消息隊(duì)列)是在多個(gè)不同的應(yīng)用之間實(shí)現(xiàn)相互通信的一種異步傳輸模式,相互通信的應(yīng)用可以分布于同一臺(tái)機(jī)器上,也可以分布于相連的網(wǎng)絡(luò)空間中的任一位置。它的實(shí)現(xiàn)原理是:消息的發(fā)送者把自己想要發(fā)送的信息放入一個(gè)容器中(我們稱之為Message),然后把它保存至一個(gè)系統(tǒng)公用空間的消息隊(duì)列(Message Queue)中;本地或者是異地的消息接收程序再從該隊(duì)列中取出發(fā)給它的消息進(jìn)行處理。 &#

2、160;       在消息傳遞機(jī)制中,有兩個(gè)比較重要的概念。一個(gè)是消息,一個(gè)是隊(duì)列。消息是由通信的雙方所需要傳遞的信息,它可以是各式各樣的媒體,如文本、聲音、圖象等等。消息最終的理解方式,為消息傳遞的雙方事先商定,這樣做的好處是,一是相當(dāng)于對(duì)數(shù)據(jù)進(jìn)行了簡單的加密,二則采用自己定義的格式可以節(jié)省通信的傳遞量。消息可以含有發(fā)送和接收者的標(biāo)識(shí),這樣只有指定的用戶才能看到只傳遞給他的信息和返回是否操作成功的回執(zhí)。消息也可以含有時(shí)間戳,以便于接收方對(duì)某些與時(shí)間相關(guān)的應(yīng)用進(jìn)行處理。消息還可以含有到期時(shí)間,它表明如果在指定時(shí)間內(nèi)消息還未

3、到達(dá)則作廢,這主要應(yīng)用與時(shí)間性關(guān)聯(lián)較為緊密的應(yīng)用。         消息隊(duì)列是發(fā)送和接收消息的公用存儲(chǔ)空間,它可以存在于內(nèi)存中或者是物理文件中。消息可以以兩種方式發(fā)送,即快遞方式(express)和可恢復(fù)模式(recoverable),它們的區(qū)別在于,快遞方式為了消息的快速傳遞,把消息放置于內(nèi)存中,而不放于物理磁盤上,以獲取較高的處理能力;可恢復(fù)模式在傳送過程的每一步驟中,都把消息寫入物理磁盤中,以得到較好的故障恢復(fù)能力。消息隊(duì)列可以放置在發(fā)送方、接收方所在的機(jī)器上,也可以單獨(dú)放置在另外一臺(tái)機(jī)器上。正是由于消息隊(duì)列

4、在放置方式上的靈活性,形成了消息傳送機(jī)制的可靠性。當(dāng)保存消息隊(duì)列的機(jī)器發(fā)生故障而重新啟動(dòng)以后,以可恢復(fù)模式發(fā)送的消息可以恢復(fù)到故障發(fā)生之前的狀態(tài),而以快遞方式發(fā)送的消息則丟失了。另一方面,采用消息傳遞機(jī)制,發(fā)送方必要再擔(dān)心接收方是否啟動(dòng)、是否發(fā)生故障等等非必要因素,只要消息成功發(fā)送出去,就可以認(rèn)為處理完成,而實(shí)際上對(duì)方可能甚至未曾開機(jī),或者實(shí)際完成交易時(shí)可能已經(jīng)是第二天了。         采用MSMQ帶來的好處是:由于是異步通信,無論是發(fā)送方還是接收方都不用等待對(duì)方返回成功消息,就可以執(zhí)行余下的代碼,因而大大地提

5、高了事物處理的能力;當(dāng)信息傳送過程中,信息發(fā)送機(jī)制具有一定功能的故障恢復(fù)能力;MSMQ的消息傳遞機(jī)制使得消息通信的雙方具有不同的物理平臺(tái)成為可能。         在微軟的.net平臺(tái)上利用其提供的MSMQ功能,可以輕松創(chuàng)建或者刪除消息隊(duì)列、發(fā)送或者接收消息、甚至于對(duì)消息隊(duì)列進(jìn)行管理。         在.NET產(chǎn)品中,提供了一個(gè)MSMQ類庫"System.Messaging.dll"。它提供了兩個(gè)類分別對(duì)消息對(duì)象和

6、消息隊(duì)列對(duì)象進(jìn)行操作。在能夠使用MSMQ功能之前,你必須確定你的機(jī)器上安裝了MSMQ消息隊(duì)列組件,并確保服務(wù)正在運(yùn)行中。在使用ASP.NET編程時(shí),應(yīng)在頭部使用:         % Assembly Name="System.Messaging"%         % Import NameSpace="System.Messsaging"%     &#

7、160;   將MSMQ類庫引入ASP.NET文件         1 對(duì)消息隊(duì)列的創(chuàng)建         dim MsgQue as MessageQueue         MsgQue=New MessageQueue(MsgPath)        &#

8、160;其中:MsgPath可以為本地私有隊(duì)列,如".MyQueue",也可以為其他機(jī)器的公有隊(duì)列,如"Saidy777$MyQueue",Saidy為另一機(jī)器名。             2 消息的發(fā)送         dim MsgQue as MessageQueue        

9、 MsgQue.Send(Msg)         其中:Msg為任一對(duì)象。         3 消息的接收         消息的接收又分成同步和異步方式兩種,同步接收在規(guī)定時(shí)間內(nèi)從消息隊(duì)列中取出收到的第一條消息,當(dāng)消息隊(duì)列中沒有消息時(shí),程序處于等待狀態(tài);異步接收方式則是定義了一個(gè)事件處理函數(shù),當(dāng)消息隊(duì)列中第一個(gè)消息到達(dá)時(shí)立即觸發(fā)該函數(shù)。 

10、60;       1) 同步方式          dim Msg as Message         dim Fmt As XmlMessageFormatter         Fmt= CType(MsgQue.Formatter,XmlMessageFormatter) 

11、60;       Fmt.TargetTypeNames = new String()"System.String"         Msg=MsgQue.receive(New TimeSpan(0,0,3)         首先定義收到消息應(yīng)轉(zhuǎn)換成的格式,然后在指定時(shí)間內(nèi)去接收消息      

12、   2) 異步方式                 dim Fmt As XmlMessageFormatter     '定義接收消息類型     Fmt = CType(MsgQue.Formatter,XmlMessageFormatter)     Fmt.TargetT

13、ypeNames = new String()"System.String"         '定義消息處理函數(shù)入口     AddHandler MsgQue.ReceiveCompleted, New ReceiveCompletedEventHandler     (AddressOf OnReceiveCompleted)       

14、60; '定義消息處理函數(shù)     Public Shared Sub OnReceiveCompleted(s As Object, asyncResult As ReceiveAsyncEventArgs)     Dim MsgQue As MessageQueue = CType(s,MessageQueue)     Dim Msg As Message = MsgQue.EndReceive(asyncResult.AsyncResult)     '此時(shí)Msg.Body即為所取消息對(duì)象     MsgQue.BeginReceive()     '重新定義異步接收方式     End sub         '啟動(dòng)異步接收方式     MsgQue.B

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論