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

正文內(nèi)容

第七篇aspnet完全入門高級(jí)應(yīng)用-資料下載頁(yè)

2024-09-05 15:50本頁(yè)面

【導(dǎo)讀】XML是標(biāo)準(zhǔn)擴(kuò)展語(yǔ)言的簡(jiǎn)稱,是未來(lái)Web編程的標(biāo)準(zhǔn)。在這一章中,我們將講述XML. 在這個(gè)程序中,我們通過(guò)XML語(yǔ)言實(shí)現(xiàn)每次訪問(wèn)網(wǎng)頁(yè)時(shí),將顯示不同的廣告條。BorderWidth=1runat="server"/>這條語(yǔ)句來(lái)嵌入。當(dāng)我們點(diǎn)刷新按狃或者按F5鍵,我們將看到另一條廣告條。數(shù)據(jù)訪問(wèn)是一個(gè)應(yīng)用系統(tǒng)的核心。供了管理數(shù)據(jù)訪問(wèn)應(yīng)用程序接口的方法。如SQLServer,OLEDB,XML等,都能提取出我們所需要的數(shù)據(jù)。有3個(gè)對(duì)象將常常用到:Connections,Commands,andDataSets。Connection與數(shù)據(jù)源進(jìn)行連接。Command對(duì)數(shù)據(jù)進(jìn)行操縱。我們假設(shè)有一個(gè)test數(shù)據(jù)庫(kù),在這個(gè)數(shù)據(jù)庫(kù)中有一個(gè)student表。可能讀者不禁要問(wèn):為什么要用XML文件存儲(chǔ)數(shù)據(jù)嗎?你必須學(xué)習(xí)SQL語(yǔ)句,并用SQL語(yǔ)句寫查詢,然后轉(zhuǎn)換數(shù)據(jù),而如果你用XML文件存儲(chǔ)數(shù)據(jù),將可減少額外的服務(wù)器的負(fù)荷。你只要使用文本編輯器,而不必使用復(fù)雜的數(shù)據(jù)庫(kù)工具。文件很容易備份,和朋友共享,或下載到你的客戶端。同樣的,你可以方便地通過(guò)ftp上載。新的數(shù)據(jù)到你的站點(diǎn)。

  

【正文】 的話,那么缺省的消息隊(duì)列最大容量將是無(wú)限制的。 UseJournalQueue 屬性 : :設(shè)置是否將收到的消息拷貝到日志消息隊(duì)列中去。 7.消息發(fā)送 MSMQ 消息隊(duì)列中定義的消息由一個(gè)主體( body)和若干屬性構(gòu)成。消息的主體可以由文本、二進(jìn)制構(gòu)成,根據(jù)需要還可以被加密。你可以在屬性窗口或者是直接對(duì)消息對(duì)象的屬性進(jìn)行賦值。但是,在 MSMQ 中消息的大小不能夠超過(guò)4MB。 消息可以被送往公用、私有、日志、死信、交易隊(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ā)送一個(gè)整型數(shù)和字符串為例 首先創(chuàng)建一個(gè)連接: Dim MessageQueue1 as new MessageQueue (MyMachine\MyQueue) 第七篇 高級(jí)應(yīng)用 或者 Dim MessageQueue1 as New MessageQueue =”MyMachine\MyQueue”) 由于是標(biāo)準(zhǔn)數(shù)據(jù)類型,消息格式可以不指定,使用缺省的 然后發(fā)送數(shù)值1 (1) 再發(fā)送字符串“ hello world” (Hello world) 。發(fā)送復(fù)雜的消息 相對(duì)于簡(jiǎn)單的消息發(fā)送,發(fā)送較為復(fù)雜的消息對(duì)象能夠給你帶來(lái)對(duì)消息更多的控制的控制能力。對(duì)于復(fù)雜對(duì)象的發(fā)送,我們是通過(guò)創(chuàng)建消息的對(duì)象的實(shí)例,然后對(duì)它的屬性實(shí)行相應(yīng)設(shè)置來(lái)實(shí)現(xiàn)的。 發(fā)送復(fù)雜消息的步驟大致為: 1. 創(chuàng)建一個(gè) MessageQueue 的實(shí)例,然后對(duì)它 的 path 屬性設(shè)置,以指明操作的消息隊(duì)列。 2. 創(chuàng)建一個(gè)消息對(duì)象實(shí)例。 3. 設(shè)置消息的主體( body) , 然后修改不希望使用缺省值的屬性。 4. 同樣使用 send 方法把消息對(duì)象發(fā)送至相應(yīng)的隊(duì)列中。 例子: ‘創(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.消息接收 消息的接收分為兩種,即同步和異步。 同步方式 ,我們使用 receive 方法。當(dāng)調(diào)用 receive 方法時(shí),它會(huì)從指定的消息隊(duì)列中選取出第一個(gè)適合要求的消息對(duì)象返回給用戶,然后把它從消息隊(duì)列中刪除。如果調(diào)用 receive方法的時(shí)候,消息隊(duì)列中沒(méi)有一條記錄存在,那么方法將導(dǎo)致程序掛起,直到有消息到達(dá)消息隊(duì)列中。為了不使這個(gè)等待過(guò)程太長(zhǎng),你可以在調(diào)用 Receive 方法時(shí)指定 timeout值(毫秒為單位 ),以指定在相應(yīng)時(shí)間到達(dá)后退出等待過(guò)程。在使用 Receive 方式時(shí),還可以指定消息隊(duì)列的 DenyShareReceive 屬性,防止其他用戶對(duì)隊(duì)列進(jìn)行操作。試想這樣一種情況,當(dāng)消息隊(duì)列中剩一條消息的時(shí)候, 2 個(gè)用戶同時(shí)對(duì)它調(diào)用 peek 方法,發(fā)現(xiàn)都有消息,于是都放心的使用 Receive 方式去獲取消息,結(jié)果必然導(dǎo)致其中一個(gè)用戶被掛起。如果,在調(diào)用receive 方法以前使用了 DenyShareReceive 屬性拒絕其他用戶的對(duì)該隊(duì)列的 Receive 方法,就會(huì)避免上述現(xiàn)象的發(fā)生。 第七篇 高級(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 方法只取出消息隊(duì)列中的第一條消息,若要取得所有的消 息可以使用 GetMessages 方法或者是 GetMessagesEnumrator 方法。 Peek 方法也是同步方法,所以當(dāng)消息隊(duì)列中沒(méi)有消息的時(shí)候,它也將被掛起,直到有消息產(chǎn)生。同樣的, Peek也可以指定超時(shí)時(shí)間(單位毫秒),一般最常用的方式是設(shè)為 0或無(wú)窮大。設(shè)為 0 的意義是,對(duì)消息隊(duì)列搜索看是否有消息產(chǎn)生,并馬上返回;設(shè)為無(wú)窮大的意義是,直到有消息產(chǎn)生才進(jìn)行處理。 例如: ?設(shè)置為超時(shí)時(shí)間為 0 =0 ?設(shè)置超時(shí)時(shí)間為無(wú)窮大 = ?以同步方式使用 Peek 方法的例子 dim MyMessageQue as New MessageQueue(“MyMachine\MyQueue”) ?指定連接的消息隊(duì)列 ?對(duì)消息隊(duì)列查詢首條消息,若無(wú) 1 秒鐘后超時(shí)返回 dim MyMessage as Message MyMessage=(1000) 異步接收方式 ,是指接收消息時(shí),不必理會(huì)調(diào)用的消息接收方法是否成功,方法將立即返回,并繼續(xù)進(jìn)行程序處 理。對(duì)于異步接收方式收到的消息,有兩種處理方式。一種是消息接收到以后,會(huì)發(fā)出一個(gè)事件,我們可以定義一個(gè)事件處理函數(shù),在該函數(shù)中,對(duì)接收到的消息進(jìn)行處理。另一種方法是為消息接收函數(shù)定義一個(gè)回調(diào)函數(shù),當(dāng)消息接收到以后,它會(huì)去處理帶來(lái)的消息。 在 中,事件處理方式中,在事件處理函數(shù)中,我們使用 BeginPeek 或者是BeginReceive 方法從消息隊(duì)列中取得一條消息。如果要處理多條消息,那么就要反復(fù)調(diào)用BeginPeek 或者 BeginReceive 方法。 在回調(diào)處理方式中,回調(diào)函數(shù)定義了一個(gè)和 BeginPeek 或者 BeginReceive 方法綁定到一起的代理,這樣即使是在消息處理當(dāng)中,代理仍然可以監(jiān)視是否有新的消息到來(lái)。 因?yàn)橄⑻幚砗瘮?shù)方式用得比較普遍,所以下面我們就重點(diǎn)介紹消息函數(shù)方式得使用。 在事件模型中,首先必須綁定一個(gè)消息處理函數(shù)到一個(gè)消息,它是當(dāng)異步調(diào)用完成以后,你希望對(duì)它進(jìn)行處理的代碼入口。然后調(diào)用 BeginReceive 方法,啟動(dòng)異步接收模式。當(dāng)接收過(guò)程完成, . 平臺(tái)會(huì)發(fā)出一個(gè)消息,表示已經(jīng)從消息隊(duì)列中接收到一個(gè)消息,然后調(diào)用第七篇 高級(jí)應(yīng)用 和該消息綁定的處理函數(shù),以處理到達(dá)的消息。 它的步驟如下 : ① 對(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)異步 接收方式。 例如: 使用 peek 方法的異步接收模式和使用 receive 方法的方式差不多,就不再多述了。 9.消息確認(rèn) 為確保消息被正確發(fā)送到目的消息隊(duì)列,我們還可以對(duì)消息隊(duì)列進(jìn)行設(shè)置,讓其返回消息是否正確發(fā)送到指定隊(duì)列的確認(rèn)消息。確認(rèn)消息有兩種,一種是消息隊(duì)列到達(dá)指定隊(duì)列后發(fā)出的確認(rèn)消息,另一種是消息被對(duì)方應(yīng)用從消息隊(duì)列中刪除。而每一種消息又存在有兩種形式,確認(rèn)和否定。當(dāng)消息正確到達(dá)目的隊(duì)列或應(yīng)用時(shí),它會(huì)發(fā)回發(fā)送成功的確認(rèn)消息。如果消息無(wú)法到達(dá)指定 的隊(duì)列或應(yīng)用,那么它會(huì)發(fā)回發(fā)送失敗的確認(rèn)消息。不過(guò)收到發(fā)送失敗的消息,未必是對(duì)方消息隊(duì)列無(wú)法到達(dá),它有可能是在超時(shí)時(shí)間設(shè)置過(guò)小或者是無(wú)法通過(guò)對(duì)方的驗(yàn)證。 從對(duì)方返回的確認(rèn)消息通常不會(huì)放入一般的隊(duì)列中,而是放入一個(gè)稱之為管理隊(duì)列的特殊隊(duì)列中。確認(rèn)消息也和一般的消息不一樣,它不包含消息的主體,僅僅通過(guò)消息的頭部就可以知道確認(rèn)消息的意義。 在 中,確認(rèn)消息發(fā)往的管理隊(duì)列,由其 AdministrationQueue 屬性指定的隊(duì)列所決定。 你可以把不同的確認(rèn)消息發(fā)往不同的管理隊(duì)列中。對(duì)管理隊(duì)列 的操作就和操作不同的隊(duì)列是一樣的,可以用 peek 方法查看,也可以用 remove 移走。 那么,如何設(shè)置一個(gè)消息,要求它返回確認(rèn)信息呢? 首先設(shè)置一個(gè)消息對(duì)象的 AdministrationQueue 屬性,指定確認(rèn)消息返回的管理隊(duì)列。 接著設(shè)置返回消息的確認(rèn)類型 , 使用消息對(duì)象的 Acknowledge 屬性。 Acknowledge 屬性的值可以是: 。 FullReachQueue 無(wú)論發(fā)送的消息到達(dá)或不能到達(dá)目的隊(duì)列,都會(huì)返回確認(rèn)消息 。 FullReceive 無(wú)論發(fā)送消息能否到達(dá)對(duì)方應(yīng)用程序,都 會(huì)返回確認(rèn)消息。 。 NotAcknowledgeReachQueue 只有發(fā)送的消息未能到達(dá)目的隊(duì)列,才返回確認(rèn)消息。 。 NotAcknowledgeReceive 只有發(fā)送的消息未能到達(dá)對(duì)方應(yīng)用程序,才返回確認(rèn)消息。 。 None 不返回任何確認(rèn)消息 最后,發(fā)送消息,并檢查管理隊(duì)列,看是否有確認(rèn)消息產(chǎn)生。 第七篇 高級(jí)應(yīng)用 10.消息日志 日志隊(duì)列可以保存你操作過(guò)的消息的備份。它的好處是,一但發(fā)現(xiàn)前面的操作失敗,可以從日志隊(duì)列中重新創(chuàng)建出原先的消息對(duì)象,然后再進(jìn)行操作。例如,向遠(yuǎn)方發(fā)送一個(gè)消息對(duì)象,然后對(duì) 方返回一個(gè)失敗的確認(rèn)。我們可以從失敗確認(rèn)消息中提取出一個(gè)和開(kāi)始發(fā)送的消息相關(guān)的 ID 值,然后根據(jù)提出的 ID 值從日志隊(duì)列中找到發(fā)送的消息,重新創(chuàng)建一個(gè)消息對(duì)象,并再次發(fā)送。在 . 中,我們使用 ReceiveByCorrelationID 或 PeekByCorrelationID方法根據(jù) correlation ID 值取得消息對(duì)象。 在一臺(tái)機(jī)器上,都會(huì)有一個(gè)全局消息隊(duì)列,它保存任何從該機(jī)器發(fā)出的消息,而不論消息發(fā)送是否成功。每個(gè)消息隊(duì)列也可以有自己的消息日志隊(duì)列。日志隊(duì)列的使用有兩種方式,一種是對(duì)消息隊(duì)列對(duì)象設(shè)置 UseJournalQueue 屬性,它表示對(duì)該隊(duì)列收到的所有消息使用日志記錄方式,而對(duì)于發(fā)出的消息不做任何記錄;另一種方法是對(duì)消息對(duì)象設(shè)置UseJournalQueue 屬性,所有被發(fā)送的消息將被記錄到系統(tǒng)日志隊(duì)列中去。消息日志隊(duì)列有一個(gè)最大容量,稱作 quota,一旦日志隊(duì)列存儲(chǔ)容量到達(dá)該值后,以后到來(lái)的本應(yīng)存儲(chǔ)的的消息將不再被存儲(chǔ),同時(shí)不會(huì)發(fā)出任何的出錯(cuò)信息。所以作為管理人員,應(yīng)該定期清理日志隊(duì)列,以防止上述現(xiàn)象的發(fā)生。消息隊(duì)列只是被動(dòng)的接收端,它們不可能返回確認(rèn)消息,或者發(fā)送刪除的消息到死信隊(duì)列中,或者是 進(jìn)行超時(shí)處理。 例子: 設(shè)置消息隊(duì)列對(duì)象的 UseJournalQueue 屬性,以記錄收到的消息到日志隊(duì)列中 =True 設(shè)置消息對(duì)象的 UseJournalQueue 屬性,以記錄收到的消息到系統(tǒng)日志隊(duì)列中 =True 小結(jié) 通過(guò)本章的介紹,我們對(duì) MSMQ有了一定的了解,并且對(duì)消息隊(duì)列的操作有了一定的了解。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1