999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ASP的Web程序中MSMQ消息傳遞技術的應用

2009-07-02 08:36:00辛士光
新媒體研究 2009年10期

[摘要]針對基于ASP開發的Web應用,比如網絡教學系統,學生作業等大量信息傳遞時存在的系統“擁堵”問題,提出應用MSMQ技術的解決方案,以及在ASP應用程序中隊列的建立、消息發送、消息讀取的實現方法。

[關鍵詞]Web應用 網絡教學系統 消息隊列 異步消息傳遞 ASP

中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0520043-01

ASP開發的應用系統,在大量并發用戶訪問時,如網絡教學系統中大量學生作業的上交,常常會遇到這些情況:某個ASP程序花費了過長的時間而過期或服務器上阻塞了大量的死隊列,導致訪問失敗。此類問題我們可以使用MSMQ技術進行解決。

一、什么是Microsoft Message Queue

MSMQ(MicroSoft Message Queue,微軟消息隊列)是運行在Windows NT的服務,可以使用“添加/刪除程序”中的“添加/刪除Windows組件”安裝。MSMQ是在多個不同的應用之間實現相互通信的一種異步傳輸模式。相互通信的應用可以分布于同一臺機器上,也可以分布于網絡中的任一位置,通信的雙方可以是不同的物理平臺。MSMQ的實現原理是:消息的發送者把自己想要發送的信息放入一個容器中(我們稱之為Message),然后把它保存至一個系統公用空間的消息隊列(Message Queue)中;本地或者異地的消息接收程序再從該隊列中取出發給它的消息進行處理。這些隊列能夠確保MSMQ的傳送,而不管當前網絡連接的狀況如何。在基于ASP的應用,消息的發送者通常是IIS。

采用MSMQ的好處是:由于是異步通信,無論是發送方還是接收方都不用等待對方返回成功消息,只要消息成功發送出去,就可以認為處理完成,就可以執行余下的代碼,同時信息發送機制還具有一定的故障恢復能力,因而大大地提高了事務處理的能力。

MSMQ有一個COM API(mqoa.dll)提供給開發者用于ASP應用程序的開發中。其中最常用的三個類為:MSMQQueueInfo、MSMQQueue、MSMQMessage。

(1)MSMQQueueInfo類用來新建、打開、刪除隊列中的消息。(2)MSMQQueue類用來描述一個在MSMQ服務中打開的隊列。(3)MSMQMessage類支持隊列中消息的所有屬性和方法。屬性:Body和LabeL設定獲取消息的方式有:同步方式或異步方式。常用方法:Send、Opening、Peeking。

二、如何在ASP開發教學輔助系統中應用MSMQ技術

首先通過MSMQQueueInfo類建立一本地消息隊列,保存在“.StuQueu

E”中,學生通過MSMQMessage類向隊列中發送消息(學生作業等),教師通過MSMQQueueInfo類讀取消息隊列中的作業內容進行相應的處理。如圖2-1所示。

1.隊列的建立:設置隊列的位置PathName,打開隊列時有兩個參數:Access 和 ShareMode。Access表示將要對隊列執行什么操作,其中MQ_PEEK_ACCESS用來在特定的隊列中查找消息,但對該消息不進行操作。MQ_RECEIVE_ACCESS用來在讀取隊列中的消息后刪除它。MQ_SEND_ACCESS 用來在隊列中發送消息,但不接收消息。

<%Dim objQueueInfo

Dim objQueue

Set objQueueInfo=Server.CreateObject("MSMQ.MSMQQueueInfo")

objQueue.PathName = ".StuQueue"'設置本地隊列的位置

Set objQueue = objQueueInfo.Open(MQ_SEND_ACCESS,MQ_DENY_NONE)

%>

2.向隊列中發送消息:

< % Dim objQInfo

Dim objQSend

Dim objMessage

Dim strMessage

Set objQInfo = Server.CreateObject("MSMQ.MSMQQueueInfo")

objQInfo.PathName = ".StuQueue" 設置本地隊列的位置

Set objQSend = objQInfo.Open(MQ_SEND_ACCESS,MQ_DENY_NONE)

Set objMessage = Server.CreateObject("MSMQ.MSMQMessage")

......[省略若干行]

objMessage.Body = strMessage '設定要發送的消息(學生作業)

objMessage.Send objQSend'講學生作業發送到隊列objQSend

......[省略若干行]

objQSend.Close

Set objQInfo = Nothing

Set objQSend = Nothing

Set objMessage = Nothing

%>

3.從隊列讀取消息:

<% Dim objQInfo

Dim objMessage

Dim objQReceive

Set objQInfo = Server.CreateObject("MSMQ.MSMQQueueInfo")

objQInfo.PathName = ".StuQueue" '設置本地隊列的位置

Set objQReceive = objQInfo.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)

Do while Not objMessage Is Nothing

Set objMessage = objQReceive.Receive(, , , 1000)'設置超時時長為1000ms

Response.Write objMessage.Body'分別讀取并顯示隊列中消息的內容

Loop

objQReceive.Close

Set objQInfo = Nothing

Set objQReceive = Nothing

Set objMessage = Nothing

%>

三、結論

本文所給出的在ASP應用開發中采用MSMQ技術的異步Web服務模型,很好地解決了異步消息傳遞,為通信雙方提供了松散的異步交互環境,該模型為網絡教學系統中大量非實時的數據傳輸和處理帶來了很好的可靠性和靈活性。很好地解決了由于ASP程序運行超時和服務器等待而導致的訪問失敗。

作者簡介:

辛士光,工學碩士,主研方向:網絡和數據庫、計算機基礎教學。

主站蜘蛛池模板: 国产在线自乱拍播放| 日韩精品欧美国产在线| 国产无吗一区二区三区在线欢| 色综合中文综合网| 国产精品永久免费嫩草研究院| 国产久草视频| 无码专区在线观看| 亚洲无码精品在线播放| 欧美第一页在线| 四虎亚洲国产成人久久精品| 国产精品免费露脸视频| 91成人在线观看视频| 国产亚洲欧美在线视频| 亚洲中文字幕久久精品无码一区| 日本高清免费不卡视频| 91区国产福利在线观看午夜| 五月婷婷导航| 国产综合精品一区二区| 国产三级视频网站| h网址在线观看| 在线观看国产网址你懂的| 精品国产一区二区三区在线观看 | 中文天堂在线视频| 久久成人18免费| 亚洲大学生视频在线播放| 国产精品一区二区不卡的视频| 91在线精品麻豆欧美在线| 国产剧情无码视频在线观看| 亚洲美女一区| 久久精品免费看一| 国产成人AV大片大片在线播放 | 无码'专区第一页| 国产毛片片精品天天看视频| 国产精品99久久久| 狠狠色香婷婷久久亚洲精品| 日韩无码视频播放| 狠狠色香婷婷久久亚洲精品| 久久中文字幕av不卡一区二区| 久久久久无码国产精品不卡| 国产成人无码Av在线播放无广告| 亚洲浓毛av| 久久国产精品77777| 伊人久久福利中文字幕| 久久久噜噜噜| 日日碰狠狠添天天爽| 91在线一9|永久视频在线| 亚洲伊人天堂| 欧美成人免费一区在线播放| 国产成人一区免费观看| 91在线无码精品秘九色APP| 中文字幕乱码二三区免费| 免费又爽又刺激高潮网址| 国产一区二区福利| 97综合久久| 国产成人一区| 日韩AV无码一区| 高清无码一本到东京热| 国产精品成人一区二区不卡| 欧美色图久久| 在线播放真实国产乱子伦| 日韩在线视频网| 国产亚洲欧美在线中文bt天堂| 亚洲av无码片一区二区三区| 一本久道久综合久久鬼色| 日韩 欧美 小说 综合网 另类| 欧美一级片在线| 狠狠色婷婷丁香综合久久韩国| 久久久精品无码一二三区| 国产成人综合日韩精品无码不卡| 国产精品久久国产精麻豆99网站| 97视频在线观看免费视频| 欧美成人免费午夜全| 狼友视频一区二区三区| 亚洲精品福利网站| 国产精品自在在线午夜区app| 91精品国产自产在线观看| 色婷婷色丁香| 香蕉色综合| 欧美精品导航| 日韩欧美国产中文| 久99久热只有精品国产15| 91色在线视频|