亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ASP的Web程序中MSMQ消息傳遞技術(shù)的應(yīng)用

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

        [摘要]針對(duì)基于A(yíng)SP開(kāi)發(fā)的Web應(yīng)用,比如網(wǎng)絡(luò)教學(xué)系統(tǒng),學(xué)生作業(yè)等大量信息傳遞時(shí)存在的系統(tǒng)“擁堵”問(wèn)題,提出應(yīng)用MSMQ技術(shù)的解決方案,以及在A(yíng)SP應(yīng)用程序中隊(duì)列的建立、消息發(fā)送、消息讀取的實(shí)現(xiàn)方法。

        [關(guān)鍵詞]Web應(yīng)用 網(wǎng)絡(luò)教學(xué)系統(tǒng) 消息隊(duì)列 異步消息傳遞 ASP

        中圖分類(lèi)號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0520043-01

        ASP開(kāi)發(fā)的應(yīng)用系統(tǒng),在大量并發(fā)用戶(hù)訪(fǎng)問(wèn)時(shí),如網(wǎng)絡(luò)教學(xué)系統(tǒng)中大量學(xué)生作業(yè)的上交,常常會(huì)遇到這些情況:某個(gè)ASP程序花費(fèi)了過(guò)長(zhǎng)的時(shí)間而過(guò)期或服務(wù)器上阻塞了大量的死隊(duì)列,導(dǎo)致訪(fǎng)問(wèn)失敗。此類(lèi)問(wèn)題我們可以使用MSMQ技術(shù)進(jìn)行解決。

        一、什么是Microsoft Message Queue

        MSMQ(MicroSoft Message Queue,微軟消息隊(duì)列)是運(yùn)行在Windows NT的服務(wù),可以使用“添加/刪除程序”中的“添加/刪除Windows組件”安裝。MSMQ是在多個(gè)不同的應(yīng)用之間實(shí)現(xiàn)相互通信的一種異步傳輸模式。相互通信的應(yīng)用可以分布于同一臺(tái)機(jī)器上,也可以分布于網(wǎng)絡(luò)中的任一位置,通信的雙方可以是不同的物理平臺(tái)。MSMQ的實(shí)現(xiàn)原理是:消息的發(fā)送者把自己想要發(fā)送的信息放入一個(gè)容器中(我們稱(chēng)之為Message),然后把它保存至一個(gè)系統(tǒng)公用空間的消息隊(duì)列(Message Queue)中;本地或者異地的消息接收程序再?gòu)脑撽?duì)列中取出發(fā)給它的消息進(jìn)行處理。這些隊(duì)列能夠確保MSMQ的傳送,而不管當(dāng)前網(wǎng)絡(luò)連接的狀況如何。在基于A(yíng)SP的應(yīng)用,消息的發(fā)送者通常是IIS。

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

        MSMQ有一個(gè)COM API(mqoa.dll)提供給開(kāi)發(fā)者用于A(yíng)SP應(yīng)用程序的開(kāi)發(fā)中。其中最常用的三個(gè)類(lèi)為:MSMQQueueInfo、MSMQQueue、MSMQMessage。

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

        二、如何在A(yíng)SP開(kāi)發(fā)教學(xué)輔助系統(tǒng)中應(yīng)用MSMQ技術(shù)

        首先通過(guò)MSMQQueueInfo類(lèi)建立一本地消息隊(duì)列,保存在“.StuQueu

        E”中,學(xué)生通過(guò)MSMQMessage類(lèi)向隊(duì)列中發(fā)送消息(學(xué)生作業(yè)等),教師通過(guò)MSMQQueueInfo類(lèi)讀取消息隊(duì)列中的作業(yè)內(nèi)容進(jìn)行相應(yīng)的處理。如圖2-1所示。

        1.隊(duì)列的建立:設(shè)置隊(duì)列的位置PathName,打開(kāi)隊(duì)列時(shí)有兩個(gè)參數(shù):Access 和 ShareMode。Access表示將要對(duì)隊(duì)列執(zhí)行什么操作,其中MQ_PEEK_ACCESS用來(lái)在特定的隊(duì)列中查找消息,但對(duì)該消息不進(jìn)行操作。MQ_RECEIVE_ACCESS用來(lái)在讀取隊(duì)列中的消息后刪除它。MQ_SEND_ACCESS 用來(lái)在隊(duì)列中發(fā)送消息,但不接收消息。

        <%Dim objQueueInfo

        Dim objQueue

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

        objQueue.PathName = ".StuQueue"'設(shè)置本地隊(duì)列的位置

        Set objQueue = objQueueInfo.Open(MQ_SEND_ACCESS,MQ_DENY_NONE)

        %>

        2.向隊(duì)列中發(fā)送消息:

        < % Dim objQInfo

        Dim objQSend

        Dim objMessage

        Dim strMessage

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

        objQInfo.PathName = ".StuQueue" 設(shè)置本地隊(duì)列的位置

        Set objQSend = objQInfo.Open(MQ_SEND_ACCESS,MQ_DENY_NONE)

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

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

        objMessage.Body = strMessage '設(shè)定要發(fā)送的消息(學(xué)生作業(yè))

        objMessage.Send objQSend'講學(xué)生作業(yè)發(fā)送到隊(duì)列objQSend

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

        objQSend.Close

        Set objQInfo = Nothing

        Set objQSend = Nothing

        Set objMessage = Nothing

        %>

        3.從隊(duì)列讀取消息:

        <% Dim objQInfo

        Dim objMessage

        Dim objQReceive

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

        objQInfo.PathName = ".StuQueue" '設(shè)置本地隊(duì)列的位置

        Set objQReceive = objQInfo.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)

        Do while Not objMessage Is Nothing

        Set objMessage = objQReceive.Receive(, , , 1000)'設(shè)置超時(shí)時(shí)長(zhǎng)為1000ms

        Response.Write objMessage.Body'分別讀取并顯示隊(duì)列中消息的內(nèi)容

        Loop

        objQReceive.Close

        Set objQInfo = Nothing

        Set objQReceive = Nothing

        Set objMessage = Nothing

        %>

        三、結(jié)論

        本文所給出的在A(yíng)SP應(yīng)用開(kāi)發(fā)中采用MSMQ技術(shù)的異步Web服務(wù)模型,很好地解決了異步消息傳遞,為通信雙方提供了松散的異步交互環(huán)境,該模型為網(wǎng)絡(luò)教學(xué)系統(tǒng)中大量非實(shí)時(shí)的數(shù)據(jù)傳輸和處理帶來(lái)了很好的可靠性和靈活性。很好地解決了由于A(yíng)SP程序運(yùn)行超時(shí)和服務(wù)器等待而導(dǎo)致的訪(fǎng)問(wèn)失敗。

        作者簡(jiǎn)介:

        辛士光,工學(xué)碩士,主研方向:網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)、計(jì)算機(jī)基礎(chǔ)教學(xué)。

        精品蜜桃视频在线观看| 丰满人妻被中出中文字幕| 大地资源网最新在线播放| 亚洲加勒比无码一区二区在线播放 | 亚洲国产精品综合久久20 | 日本少妇高潮喷水xxxxxxx| 久久久精品欧美一区二区免费 | 国产性感丝袜美女av| 蜜桃av人妻精品一区二区三区| 波多野42部无码喷潮在线| 国产成人精品三级麻豆| 校花高潮一区日韩| 美女与黑人巨大进入免费观看| 国产又色又爽无遮挡免费软件| 亚洲国产成人va在线观看天堂| 激情中文丁香激情综合| 国产av天堂一区二区二区| 日日摸天天摸97狠狠婷婷| 久久久无码一区二区三区| 亚洲AV无码成人精品区日韩密殿| 久久亚洲网站中文字幕| 牛牛在线视频| 亚洲一二三区在线观看| 视频网站在线观看不卡| 一本色道久久亚洲加勒比| 亚洲人午夜射精精品日韩 | 亚洲欧美成人一区二区在线电影| 高清国产一级毛片国语| 国产优质av一区二区三区| 久久婷婷五月综合色丁香| 精品福利视频一区二区三区| 国产精品视频一区二区三区,| 与最丰满美女老师爱爱视频| 亚洲精品无码永久在线观看你懂的| 99爱这里只有精品| 亚洲av成人久久精品| 国产精品久久久久久久久久红粉| 无套内射蜜桃小视频| 国产亚洲精品性爱视频| 久久精品中文字幕有码| 97久久草草超级碰碰碰|