MSMQ技術(shù)在Windows Mobile系統通信中應用
接收消息
本文引用地址:http://dyxdggzs.com/article/106704.htm接收消息相比發(fā)送消息要復雜一些。接收消息有兩種方式:通過(guò)Receive方法接收消息同時(shí)永久性地從隊列中刪除消息;通過(guò)Peek方法從隊列中取出消息而不從隊列中移除該消息。如果知道消息的標識符(ID),還可以通過(guò)ReceiveById方法和PeekById方法完成相應的接收消息操作。
接收消息的代碼如下:
Mq.Receive(); //或
Mq.ReceiveById(ID);
Mq.Peek(); // 或
Mq.PeekById(ID);
閱讀消息
只有通過(guò)根據通信雙方的約定將接收到的消息中信息提取出來(lái),傳遞的消息才有價(jià)值,因此接收到消息以后還必須能讀出消息中包含的信息。在發(fā)送端的應用程序發(fā)送的消息和消息隊列中的傳輸消息的格式不同,因而發(fā)送端的應用程序發(fā)送出去的消息經(jīng)過(guò)序列化以后才發(fā)送給了消息隊列,這一過(guò)程由系統自動(dòng)完成了,程序開(kāi)發(fā)人員不必為此編寫(xiě)代碼,然而在接收到消息后就需要對接收的消息進(jìn)行反序列化。
消息的反序列化可以通過(guò)Visual Studio和.NET Framework附帶的三個(gè)預定義的格式化程序來(lái)完成:XMLMessageFormatter對象(MessageQueue組件的默認格式化程序設置)、BinaryMessageFormatter對象、ActiveXMessageFormatter對象。由于后兩者格式化后的消息通常不能被用戶(hù)閱讀,所以經(jīng)常采用XMLMessageFormatter對象對接收的消息進(jìn)行反序列化。
使用XMLMessageFormatter對象反序列化消息的代碼如下:
string[] types = { "System.String" };
((XmlMessageFormatter)mq.Formatter).TargetTypeNames = types;
Message m=mq.Receive(new
TimeSpan(0,0,3));
將接收到的消息傳送給消息變量以后,通過(guò)消息變量m的Body屬性就可以讀出消息了:
MessageBox.Show((string)m.Body);
關(guān)閉消息隊列
關(guān)閉消息隊列可以通過(guò)Close函數來(lái)實(shí)現,代碼如下:
Mq.Close();
結語(yǔ)
基于Windows Mobile平臺的高速無(wú)線(xiàn)網(wǎng)絡(luò )為各行業(yè)客戶(hù)提供更加可靠便捷的移動(dòng)解決方案。消息隊列技術(shù)保證移動(dòng)設備與數據中心之間進(jìn)行良好的通信。通過(guò)對Windows Mobile平臺上,發(fā)送、接收和閱讀消息工作過(guò)程的講解說(shuō)明消息隊列技術(shù)簡(jiǎn)單實(shí)用?;?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/MSMQ">MSMQ技術(shù)的Windows Mobile平臺通信系統已經(jīng)在國內某大型客車(chē)企業(yè)生產(chǎn)追蹤系統中得到應用。
數字通信相關(guān)文章:數字通信原理
通信相關(guān)文章:通信原理
評論