freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第七篇aspnet完全入門高級(jí)應(yīng)用-閱讀頁

2024-09-25 15:50本頁面
  

【正文】 生故障而重新啟動(dòng)以后,以可恢復(fù)模式發(fā)送的消息可以恢復(fù)到故障發(fā)生之前的狀態(tài),而以快遞方式發(fā)送的消息則丟失了。 采用 MSMQ帶來的好處是:由于是異步通信,無論是發(fā)送方還是接收方都不用等待對(duì)方返回成功消息,就可以執(zhí)行余下的代碼,因而大大地提高了事物處理的能力 。 在微軟的 .平臺(tái)上利用其提供的 MSMQ功能,可以輕松創(chuàng)建或者刪除消息隊(duì)列、發(fā)送或者接收消息、甚至于對(duì)消息隊(duì)列進(jìn)行管理。它提供了兩個(gè)類分別對(duì)消息對(duì)象和消息隊(duì)列對(duì)象進(jìn)行操作。在使用 ,應(yīng)在頭部使用: % Assembly Name=””% % Import NameSpace=””% 將 MSMQ類庫引入 1. 對(duì)消息隊(duì)列的創(chuàng)建 第七篇 高級(jí)應(yīng)用 dim MsgQue as MessageQueue MsgQue=New MessageQueue(MsgPath) 其中: MsgPath可以為本地私有隊(duì)列,如“ .\MyQueue”,也可以為其他機(jī)器的公有隊(duì)列,如“ Saidy\777$\MyQueue”,Saidy 為另一機(jī)器名。 3. 消息的接收 消息的接收又分成同步和異步方式兩種,同步接收在規(guī)定時(shí)間內(nèi)從消 息隊(duì)列中取出收到的第一條消息,當(dāng)消息隊(duì)列中沒有消息時(shí),程序處于等待狀態(tài);異步接收方式則是定義了一個(gè)事件處理函數(shù),當(dāng)消息隊(duì)列中第一個(gè)消息到達(dá)時(shí)立即觸發(fā)該函數(shù)。用 create 方法創(chuàng)建你指定路徑的消息隊(duì)列,使用 delete 方法刪除一個(gè)已經(jīng)存在的消息隊(duì)列。使用 exists 方法判別是否存在一個(gè)消息隊(duì)列。使用 GetPublicQueues 方法獲取消息隊(duì)列網(wǎng)絡(luò)中的一個(gè)消息隊(duì)列 。使用 Receive 或者上 BeginReceive 方法從消息隊(duì)列中取出一個(gè)消息,同時(shí)在消息隊(duì)列中刪除它。使用 Send 方法,送一個(gè)消息到指定的消息隊(duì)列中。創(chuàng)建公共消息隊(duì)列 (“MyMachine\MyQueue”) 。在。使用路徑,消息隊(duì)列的路徑被機(jī)器名和隊(duì)列名唯一確定,因而可以用消息隊(duì)列路徑來指明使用的消息隊(duì)列。使用格式名( format name),它是由 MSMQ 在消息隊(duì)列創(chuàng)建時(shí)或者應(yīng)用程序在隊(duì)列創(chuàng)建以后生成的唯一標(biāo)識(shí)。使用標(biāo)識(shí)名( label),它是消息隊(duì)列創(chuàng)建時(shí)由隊(duì)列管理者指定的帶由描述意義的名字。 采用路徑( path)方式引用隊(duì)列 消息隊(duì)列類型 路徑使用格式 Public queue MachineName\QueueName Private queue MachineName\Private$\QueueName Journal queue MachineName\QueueName\Journal$ Machine journal queue MachineName\Journal$ Machine dead letter queue MachineName\Deadletter$ Machine transactional dead letter queue MachineName\XactDeadletter$ 。 。 路徑名的引用除了 path 屬性以外,還可以由 MachineName 和 QueueName 兩個(gè)屬性得到。 消息隊(duì)列類型 格式名的構(gòu)成規(guī)則 Public queue PUBLIC=QueueGUID Private queue PRIVATE=MachineGUID\QueueNumber Journal queue PUBLIC=QueueGUID。JOURNAL Foreign queues DIRECT=AddressSpecification\QueueName 第七篇 高級(jí)應(yīng)用 格式名由不由用戶指定,而是在隊(duì)列創(chuàng)建時(shí)由隊(duì)列管理者自動(dòng)產(chǎn)生。當(dāng)你的部件作為一個(gè) WEB sevice 或者是 WEB 調(diào)用的一部分 的時(shí)候,最好采用格式名方式引用隊(duì)列,因?yàn)樗俣容^快。當(dāng)向一個(gè)非連接的隊(duì)列發(fā)送消息時(shí),應(yīng)使用格式名方式,因?yàn)楫?dāng)隊(duì)列不可連接時(shí),路徑解析會(huì)導(dǎo)致失敗。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化或者消息隊(duì)列重建以后,格式名會(huì)變化。 例如:采用格式名方式引用消息隊(duì)列的例子 = FORMATNAME:PUBLIC=3d3dc813c5554fd38ce079d5b45e0d75 采用標(biāo)識(shí)方式引用消息隊(duì)列 標(biāo)識(shí)是消息 隊(duì)列創(chuàng)建時(shí),由消息隊(duì)列創(chuàng)建者指定由于描述隊(duì)列的文本屬性。它的缺點(diǎn)也是顯然的,就是不能保證標(biāo)識(shí)的唯一性,當(dāng)標(biāo)識(shí)有沖突時(shí),向該標(biāo)識(shí)發(fā)送消息會(huì)導(dǎo)致一個(gè)錯(cuò)誤的發(fā)生。 總結(jié),我們對(duì)消息隊(duì)列引用的步驟大致為: 首先,產(chǎn)生一個(gè) MessageQueue 對(duì)象的實(shí)例。 如果為路徑方式,設(shè)置它的 path 屬性 如果為格式名方式,設(shè)置其 FormatName 屬性 如果為標(biāo)識(shí)方式,設(shè)置它的 Label屬性 3. 刪除消息隊(duì)列 刪除一個(gè)隊(duì)列使用 Delete 方法。刪除一個(gè)隊(duì)列最主要的問題是用戶是否有刪除該隊(duì)列的足夠的權(quán)限。它把指定的消息隊(duì)列中的消息全部清空,并不再發(fā)送。 Category 是隊(duì)列所有者定義的 GUID值。 GUID 值不會(huì)唯一,這樣才可以根據(jù)相同的 GUID 值,把多個(gè)消息隊(duì)列劃分為不同的類別( category)。 和隊(duì)列交互相關(guān)的屬性 DenyShareReceive屬性 :決定同一時(shí)間內(nèi)只有一個(gè)部件能夠訪問消息隊(duì)列中的消息。 MaximumQueueSize和 MaximumJournalSize屬性 :以千字節(jié)為單位設(shè)置一個(gè)隊(duì)列(日志隊(duì)列)的消息最大容納量。 一般情況下,消息隊(duì)列的最大值為消息隊(duì)列管理員 所設(shè)置,如果這個(gè)值沒有控制的話,那么缺省的消息隊(duì)列最大容量將是無限制的。 7.消息發(fā)送 MSMQ 消息隊(duì)列中定義的消息由一個(gè)主體( body)和若干屬性構(gòu)成。你可以在屬性窗口或者是直接對(duì)消息對(duì)象的屬性進(jìn)行賦值。 消息可以被送往公用、私有、日志、死信、交易隊(duì)列。簡(jiǎn)單消息的發(fā)送 簡(jiǎn)單消息發(fā)送的步驟大致為: 1. 建立與要發(fā)送 消息的隊(duì)列的連接 2. 指定你要發(fā)送的消息的格式 3. 提供要發(fā)送的數(shù)據(jù) 4. 使用 Send 方法將消息發(fā)送出去 采用簡(jiǎn)單消息發(fā)送方式發(fā)送的數(shù)據(jù)類型可以是:對(duì)象、原數(shù)據(jù)類型、數(shù)據(jù)流或其他簡(jiǎn)單的數(shù)據(jù)類型。發(fā)送復(fù)雜的消息 相對(duì)于簡(jiǎn)單的消息發(fā)送,發(fā)送較為復(fù)雜的消息對(duì)象能夠給你帶來對(duì)消息更多的控制的控制能力。 發(fā)送復(fù)雜消息的步驟大致為: 1. 創(chuàng)建一個(gè) MessageQueue 的實(shí)例,然后對(duì)它 的 path 屬性設(shè)置,以指明操作的消息隊(duì)列。 3. 設(shè)置消息的主體( body) , 然后修改不希望使用缺省值的屬性。 例子: ‘創(chuàng)建 MessageQueue 實(shí)例,指明連接的隊(duì)列 dim MessageQueue1 as New MessageQueue(“.\MyQueue”) ‘創(chuàng)建消息對(duì)象實(shí)例 dim MyMessage as New Message(“Hello world”) ‘設(shè)置消息隊(duì)列屬性 =”MyLabel” ‘發(fā)送消息 (MyMessage) 8.消息接收 消息的接收分為兩種,即同步和異步。當(dāng)調(diào)用 receive 方法時(shí),它會(huì)從指定的消息隊(duì)列中選取出第一個(gè)適合要求的消息對(duì)象返回給用戶,然后把它從消息隊(duì)列中刪除。為了不使這個(gè)等待過程太長(zhǎng),你可以在調(diào)用 Receive 方法時(shí)指定 timeout值(毫秒為單位 ),以指定在相應(yīng)時(shí)間到達(dá)后退出等待過程。試想這樣一種情況,當(dāng)消息隊(duì)列中剩一條消息的時(shí)候, 2 個(gè)用戶同時(shí)對(duì)它調(diào)用 peek 方法,發(fā)現(xiàn)都有消息,于是都放心的使用 Receive 方式去獲取消息,結(jié)果必然導(dǎo)致其中一個(gè)用戶被掛起。 第七篇 高級(jí)應(yīng)用 同步接收的例子: dim MyMessageQue as MessageQueue MyMessageQue=New MessageQueue(“MyMachine\MyQueue”) ?指定要連接的消息隊(duì)列 dim MyMessage as New Message MyMessage=(1000) ?同步收取一條消息,超時(shí)時(shí)間為 1 秒 Peek 方法和 Receive 方法比較類似,只是它并不把取得的消息對(duì)象從消息隊(duì)列中刪除。 Peek 方法也是同步方法,所以當(dāng)消息隊(duì)列中沒有消息的時(shí)候,它也將被掛起,直到有消息產(chǎn)生。設(shè)為 0 的意義是,對(duì)消息隊(duì)列搜索看是否有消息產(chǎn)生,并馬上返回;設(shè)為無窮大的意義是,直到有消息產(chǎn)生才進(jìn)行處理。對(duì)于異步接收方式收到的消息,有兩種處理方式。另一種方法是為消息接收函數(shù)定義一個(gè)回調(diào)函數(shù),當(dāng)消息接收到以后,它會(huì)去處理帶來的消息。如果要處理多條消息,那么就要反復(fù)調(diào)用BeginPeek 或者 BeginReceive 方法。 因?yàn)橄⑻幚砗瘮?shù)方式用得比較普遍,所以下面我們就重點(diǎn)介紹消息函數(shù)方式得使用。然后調(diào)用 BeginReceive 方法,啟動(dòng)異步接收模式。 它的步驟如下 : ① 對(duì) MessageQueue 對(duì)象的 BeginReceiveCompleted 事件綁定一個(gè)消息處理函數(shù) ② BeginReceiveCompleted 處理函數(shù)中,創(chuàng)建一個(gè)消息對(duì)象實(shí)例和一個(gè)消息隊(duì)列 對(duì)象的實(shí)例 ③ 定義如何處理收到的信息,代碼框架如下: Public Sub MyQueue_BeginReceiveCompleted(sender as Object, args as ) Dim myMessage as Message Dim myMessageQue as MessageQueue MyMessageQue = CType(sender,MessageQueue) myMessage = () End Sub ④ 在主程序中,使用 BeginReceive 方法啟動(dòng)異步 接收方式。 9.消息確認(rèn) 為確保消息被正確發(fā)送到目的消息隊(duì)列,我們還可以對(duì)消息隊(duì)列進(jìn)行設(shè)置,讓其返回消息是否正確發(fā)送到指定隊(duì)列的確認(rèn)消息。而每一種消息又存在有兩種形式,確認(rèn)和否定。如果消息無法到達(dá)指定 的隊(duì)列或應(yīng)用,那么它會(huì)發(fā)回發(fā)送失敗的確認(rèn)消息。 從對(duì)方返回的確認(rèn)消息通常不會(huì)放入一般的隊(duì)列中,而是放入一個(gè)稱之為管理隊(duì)列的特殊隊(duì)列中。 在 中,確認(rèn)消息發(fā)往的管理隊(duì)列,由其 AdministrationQueue 屬性指定的隊(duì)列所決定。對(duì)管理隊(duì)列 的操作就和操作不同的隊(duì)列是一樣的,可以用 peek 方法查看,也可以用 remove 移走。 接著設(shè)置返回消息的確認(rèn)類型 , 使用消息對(duì)象的 Acknowledge 屬性。 FullReachQueue 無論發(fā)送的消息到達(dá)或不能到達(dá)目的隊(duì)列,都會(huì)返回確認(rèn)消息 。 。 。 。 第七篇 高級(jí)應(yīng)用 10.消息日志 日志隊(duì)列可以保存你操作過的消息的備份。例如,向遠(yuǎn)方發(fā)送一個(gè)消息對(duì)象,然后對(duì) 方返回一個(gè)失敗的確認(rèn)。在 . 中,我們使用 ReceiveByCorrelationID 或 PeekByCorrelationID方法根據(jù) correlation ID 值取得消息對(duì)象。每個(gè)消息隊(duì)列也可以有自己的消息日志隊(duì)列。消息日志隊(duì)列有一個(gè)最大容量,稱作 quota,一旦日志隊(duì)列存儲(chǔ)容量到達(dá)該值后,以后到來的本應(yīng)存儲(chǔ)的的消息將不再被存儲(chǔ),同時(shí)不會(huì)發(fā)出任何的出錯(cuò)信息。消息隊(duì)列只是被動(dòng)的接收端,它們不可能返回確認(rèn)消息,或者發(fā)送刪除的消息到死信隊(duì)列中,或者是 進(jìn)行超時(shí)處理。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1