《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > MSMQ技術(shù)在Windows Mobile系統(tǒng)通信中應(yīng)用
MSMQ技術(shù)在Windows Mobile系統(tǒng)通信中應(yīng)用
摘要: 隨著3G網(wǎng)絡(luò)技術(shù)、市場和政策的不斷成熟,移動終端設(shè)備的使用量在急速增加,廣泛應(yīng)用各個領(lǐng)域。Windows Mobile是微軟為智能移動終端設(shè)備開發(fā)的操作系統(tǒng),Windows Mobile將用戶熟悉的桌面Windows體驗擴展到了移動設(shè)備上。Windows Mobile為移動終端設(shè)備之間的數(shù)據(jù)交換和信息共享提供了簡單、安全的解決方案。在Windows Mobile平臺上的數(shù)據(jù)通信技術(shù)有Socket、Web Service、MSMQ(微軟消息隊列技術(shù))。Socket傳送數(shù)據(jù)會自定義傳送數(shù)據(jù)格式并且服務(wù)端要使用到多線程接收客戶端信息,編程復(fù)雜且不好控制;Web Service編程簡單易控制,但是只可能調(diào)用服務(wù)端的函數(shù)不能實現(xiàn)服務(wù)端和客戶端相互通信;MSMQ是微軟提供的一種可以遠程訪問的異步通訊方式,支持轉(zhuǎn)發(fā),支持延時發(fā)送,并且具有較高安全性,是當(dāng)前Windows Mobile平臺上最可靠的數(shù)據(jù)通信方法。
Abstract:
Key words :

引言

隨著3G網(wǎng)絡(luò)技術(shù)、市場和政策的不斷成熟,移動終端設(shè)備的使用量在急速增加,廣泛應(yīng)用各個領(lǐng)域。Windows Mobile是微軟為智能移動終端設(shè)備開發(fā)的操作系統(tǒng),Windows Mobile將用戶熟悉的桌面Windows體驗擴展到了移動設(shè)備上。Windows Mobile為移動終端設(shè)備之間的數(shù)據(jù)交換和信息共享提供了簡單、安全的解決方案。在Windows Mobile平臺上的數(shù)據(jù)通信技術(shù)有Socket、Web Service、MSMQ(微軟消息隊列技術(shù))。Socket傳送數(shù)據(jù)會自定義傳送數(shù)據(jù)格式并且服務(wù)端要使用到多線程接收客戶端信息,編程復(fù)雜且不好控制;Web Service編程簡單易控制,但是只可能調(diào)用服務(wù)端的函數(shù)不能實現(xiàn)服務(wù)端和客戶端相互通信;MSMQ是微軟提供的一種可以遠程訪問的異步通訊方式,支持轉(zhuǎn)發(fā),支持延時發(fā)送,并且具有較高安全性,是當(dāng)前Windows Mobile平臺上最可靠的數(shù)據(jù)通信方法。

MSMQ技術(shù)

Message Queue(微軟消息隊列)是在多個不同應(yīng)用程序(終端或服務(wù))之間實現(xiàn)相互通信的一種異步傳輸模式,相互通信的應(yīng)用程序可以分布于同一臺機器上,也可以分布于相連的網(wǎng)絡(luò)空間中的任一終端。消息是通信的雙方所需要傳遞的信息,它可以是各種對象,如文本、聲音和圖像等。消息最終的實現(xiàn)方式是由消息傳遞的雙方共同制定的協(xié)議來規(guī)定,這樣做的好處,既對數(shù)據(jù)進行了簡單的加密,也可以減輕系統(tǒng)通信的負擔(dān)。其實現(xiàn)原理是消息的發(fā)送者把自己想要發(fā)送的信息放入一個容器中(Message),然后將其保存到一個系統(tǒng)公用空間的消息隊列中;本地或者是異地的消息接收程序再從該隊列中取出發(fā)給它的消息進行處理。

由于采用的是異步通信方式,無論是發(fā)送程序還是接收程序都不用等待對方返回成功發(fā)送消息的標志,就可以執(zhí)行余下的代碼,因而提高了系統(tǒng)的處理能力。當(dāng)信息傳送過程中,信息發(fā)送機制具有故障恢復(fù)能力;MSMQ的消息傳遞機制使得消息通信的雙方具有通過不同的物理平臺進行通信的能力。在支持.net技術(shù)的操作系統(tǒng)上利用其提供的MSMQ功能,可以輕松創(chuàng)建或者刪除消息隊列,發(fā)送或者接收消息,并具有對消息隊列進行管理。消息隊列是發(fā)送和接收消息的公用存儲空間,它可以存在于內(nèi)存中或者是物理文件中。

系統(tǒng)結(jié)構(gòu)與軟件配置

系統(tǒng)結(jié)構(gòu)

針對客車業(yè)生產(chǎn)現(xiàn)場數(shù)據(jù)采集系統(tǒng)實例,由于客車生產(chǎn)屬于混合流水生產(chǎn)行業(yè),工序和工藝路線復(fù)雜、人工參與生產(chǎn)多、客車比其他產(chǎn)品體積龐大,所以需要現(xiàn)場人員使用PDA掃描生產(chǎn)現(xiàn)場數(shù)據(jù)和上報生產(chǎn)進度狀況。車間和廠區(qū)范圍大,車間環(huán)境復(fù)雜,整個網(wǎng)絡(luò)采用無線通信的方式。PDA中裝有Windows Mobile系統(tǒng),在PDA中可以安裝各種應(yīng)用程序,例如條碼掃描、車間物料供需程序和生產(chǎn)現(xiàn)場調(diào)度程序。在PDA上也可以擴展外部設(shè)備,例如條碼掃描槍和微型打印機等。利用PDA的移動性和比較強的數(shù)據(jù)處理能力可對現(xiàn)場數(shù)據(jù)進行實時的采集和整理。將采集的現(xiàn)場數(shù)據(jù)上傳到數(shù)據(jù)采集服務(wù)器、生產(chǎn)追蹤服務(wù)器和生產(chǎn)調(diào)度服務(wù)器。

如圖1所示的系統(tǒng)硬件平臺主要由廠級數(shù)據(jù)中心的服務(wù)器、無線路由器和PDA數(shù)據(jù)采集器構(gòu)成,車間中根據(jù)生產(chǎn)工藝工序配置的多個PDA數(shù)據(jù)采集器,PDA上的掃描槍可以實時的采集現(xiàn)場數(shù)據(jù),PDA的上的處理程序?qū)⒉杉臄?shù)據(jù)進行處理,然后通過多層無線路由器AP上傳到廠級數(shù)據(jù)中心服務(wù)器,每個PDA都有自己獨立的IP地址,服務(wù)器通過收發(fā)消息對上傳的數(shù)據(jù)進行管理和向PDA發(fā)出指令。整個系統(tǒng)包括服務(wù)器程序和客戶端程序,通過MSMQ技術(shù)實現(xiàn)PDA與數(shù)據(jù)服務(wù)器的數(shù)據(jù)通信。

 

系統(tǒng)軟件配置

服務(wù)端配置:服務(wù)端是Windows Server2003操作系統(tǒng),服務(wù)器程序檢查客戶端在線狀態(tài),將在線客戶端信息(包括:客戶端名稱、客戶段IP地址)共享給每個客戶端。

客戶端:需要設(shè)置服務(wù)器端IP地址,本地客戶端名稱。設(shè)置正確服務(wù)端IP地址、本地客戶端名稱后。通過服務(wù)端獲取在線客戶端信息,指定客戶端后可以接收新消息和發(fā)送消息。

MSMQ技術(shù)在Windows Mobile中的應(yīng)用

在PDA上Windows Mobile操作系統(tǒng)中通過MSMQ技術(shù)實現(xiàn)數(shù)據(jù)通信,要使用MSMQ開發(fā)消息處理程序,必須在服務(wù)器主機和客戶端上安裝消息隊列。消息處理程序主要是消息的發(fā)送和接收,如果要實現(xiàn)收發(fā)消息,必須引用一個隊列,引用的消息隊列分為公用隊列和專用隊列,這兩個隊列都存放用戶設(shè)計的消息。引用消息隊列后,就可以發(fā)送、接收和閱讀消息了。消息接收服務(wù)位于System.Messaging中,需要在工程中引用System.Messaging.dll文件。具體實現(xiàn)過程和代碼如下:

引用隊列

通過路徑、格式名和標簽三種方法引用隊列。例如:通過路徑引用消息隊列,路徑的形式為 machinenamequeuename。在實際應(yīng)用中,指向隊列的路徑必須是唯一的。表1列出用于每種類型的隊列的路徑信息。

 

如果是發(fā)送到本機上,還可以使用“.”代表本機名稱。具體的引用方法可以在初始化消息隊列時設(shè)置,也可以通過設(shè)置消息隊列的Path屬性來實現(xiàn)。如果在初始化時引用消息隊列,那么消息隊列必須存在于系統(tǒng)中,否則會產(chǎn)生錯誤。在程序中可以實現(xiàn)消息隊列的創(chuàng)建。

在初始化時引用消息隊列的代碼如下:

MessageQueue Mq=new MessageQueue(“.\private$\mq”);

通過Path屬性引用消息隊列的代碼:

MessageQueue Mq=new

MessageQueue();

Mq.Path=”.\private$\mq”;

如果消息隊列不存在,可以使用 Create方法可在計算機上創(chuàng)建隊列,實現(xiàn)代碼如下:

System.Messaging.MessageQueue.

Create(@".private$mq");

發(fā)送消息

應(yīng)用程序引用消息隊列后,就可以進行發(fā)送和接收消息操作。發(fā)送的消息可以分為簡單消息和復(fù)雜消息,簡單消息類型就是常用的數(shù)據(jù)類型,例如整型、字符串等數(shù)據(jù);復(fù)雜消息的數(shù)據(jù)類型通常對應(yīng)于系統(tǒng)中的復(fù)雜數(shù)據(jù)類型,例如結(jié)構(gòu)體和類對象等。

簡單消息的發(fā)送示例如下:

Mq.Send(1000); //發(fā)送整型數(shù)據(jù)

1000

Mq.Send(“This is a test

message!”); //發(fā)送字符串

復(fù)雜消息的發(fā)送和簡單消息的發(fā)送大同小異,只是發(fā)送時,通常不是直接給出發(fā)送的消息內(nèi)容,而是代表發(fā)送消息內(nèi)容的變量。下面的代碼分別通過消息變量和復(fù)雜數(shù)據(jù)類型變量發(fā)送一條復(fù)雜消息。

下面的代碼中發(fā)送的消息由消息變量表示:

Message Msg;

Msg=new Message(“A Complex

Message!”);

Msg.Label=”This is the label”;

Msg.Priority=MessagePriority.High; Mq.Send(Msg);

下面的代碼中發(fā)送的消息由復(fù)雜數(shù)據(jù)類型變量表示,Customer為自定義的一個類:

Customer customer = new

Customer();

customer.LastName = "Copernicus";

customer.FirstName = "Nicolaus";

Mq.Send(customer);

接收消息

接收消息相比發(fā)送消息要復(fù)雜一些。接收消息有兩種方式:通過Receive方法接收消息同時永久性地從隊列中刪除消息;通過Peek方法從隊列中取出消息而不從隊列中移除該消息。如果知道消息的標識符(ID),還可以通過ReceiveById方法和PeekById方法完成相應(yīng)的接收消息操作。

接收消息的代碼如下:

Mq.Receive(); //或

Mq.ReceiveById(ID);

Mq.Peek(); // 或

Mq.PeekById(ID);

閱讀消息

只有通過根據(jù)通信雙方的約定將接收到的消息中信息提取出來,傳遞的消息才有價值,因此接收到消息以后還必須能讀出消息中包含的信息。在發(fā)送端的應(yīng)用程序發(fā)送的消息和消息隊列中的傳輸消息的格式不同,因而發(fā)送端的應(yīng)用程序發(fā)送出去的消息經(jīng)過序列化以后才發(fā)送給了消息隊列,這一過程由系統(tǒng)自動完成了,程序開發(fā)人員不必為此編寫代碼,然而在接收到消息后就需要對接收的消息進行反序列化。

消息的反序列化可以通過Visual Studio和.NET Framework附帶的三個預(yù)定義的格式化程序來完成:XMLMessageFormatter對象(MessageQueue組件的默認格式化程序設(shè)置)、BinaryMessageFormatter對象、ActiveXMessageFormatter對象。由于后兩者格式化后的消息通常不能被用戶閱讀,所以經(jīng)常采用XMLMessageFormatter對象對接收的消息進行反序列化。

使用XMLMessageFormatter對象反序列化消息的代碼如下:

string[] types = { "System.String" };

((XmlMessageFormatter)mq.Formatter).TargetTypeNames = types;

Message m=mq.Receive(new

TimeSpan(0,0,3));

將接收到的消息傳送給消息變量以后,通過消息變量m的Body屬性就可以讀出消息了:

MessageBox.Show((string)m.Body);

關(guān)閉消息隊列

關(guān)閉消息隊列可以通過Close函數(shù)來實現(xiàn),代碼如下:

Mq.Close();

結(jié)語

基于Windows Mobile平臺的高速無線網(wǎng)絡(luò)為各行業(yè)客戶提供更加可靠便捷的移動解決方案。消息隊列技術(shù)保證移動設(shè)備與數(shù)據(jù)中心之間進行良好的通信。通過對Windows Mobile平臺上,發(fā)送、接收和閱讀消息工作過程的講解說明消息隊列技術(shù)簡單實用。基于MSMQ技術(shù)的Windows Mobile平臺通信系統(tǒng)已經(jīng)在國內(nèi)某大型客車企業(yè)生產(chǎn)追蹤系統(tǒng)中得到應(yīng)用。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
99re在线精品| 欧美一区在线视频| 亚洲午夜国产成人av电影男同| 在线观看亚洲一区| 国产伪娘ts一区| 国产美女扒开尿口久久久| 欧美日韩综合精品| 欧美日韩另类在线| 欧美日韩精品三区| 欧美日韩国产成人在线| 欧美日韩成人在线播放| 欧美精品免费视频| 欧美另类久久久品| 欧美美女bbbb| 欧美日韩精品免费看| 欧美日韩在线精品一区二区三区| 欧美日本中文| 国产精品草莓在线免费观看| 国产精品久久网站| 国产精品久久久久久久久免费| 国产精品分类| 国产精品区一区二区三区| 国产精品男人爽免费视频1| 国产精品免费久久久久久| 国产欧美日韩精品丝袜高跟鞋 | 国产伦精品一区二区三区高清版| 国产精品美腿一区在线看 | 日韩午夜黄色| 亚洲新中文字幕| 亚洲欧美偷拍卡通变态| 久久国产精品久久久久久| 亚洲黄色在线看| 99国产精品视频免费观看| 亚洲一区二区在线观看视频| 欧美一区成人| 久久久亚洲精品一区二区三区| 美日韩精品视频免费看| 欧美人交a欧美精品| 国产精品va在线播放| 国产欧美视频一区二区三区| 在线观看成人网| 日韩亚洲欧美在线观看| 亚洲欧美日韩综合aⅴ视频| 久久精品123| 一本色道久久99精品综合| 国产精品电影在线观看| 国产精品超碰97尤物18| 国产欧美韩日| 亚洲国产成人在线| 亚洲视频狠狠| 欧美有码在线观看视频| 日韩视频一区二区三区| 中文在线资源观看网站视频免费不卡| 亚洲欧美日韩国产综合在线 | 欧美激情导航| 国产精品每日更新| 好吊色欧美一区二区三区视频| 亚洲黄色影片| 亚洲欧美日韩在线综合| 亚洲欧洲午夜| 午夜在线a亚洲v天堂网2018| 免费不卡亚洲欧美| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 午夜精品久久久久影视 | 在线亚洲免费视频| 久久国产66| 欧美日韩国内| 国产在线拍偷自揄拍精品| 亚洲美洲欧洲综合国产一区| 香蕉乱码成人久久天堂爱免费| 亚洲精品美女在线| 久久精品国产一区二区三| 欧美绝品在线观看成人午夜影视 | 国产一区二区成人| 亚洲精品免费一二三区| 欧美一级视频精品观看| av成人激情| 久久久久久久国产| 欧美视频在线看| 精品999网站| 亚洲欧美日韩国产成人精品影院| 99pao成人国产永久免费视频| 久久精品国产99国产精品澳门| 欧美日本一区| 在线精品一区| 久久国产精品第一页| 亚洲欧美激情在线视频| 欧美精品aa| 黄色一区二区在线| 亚洲综合精品自拍| 一区二区三区日韩精品| 欧美1级日本1级| 国产亚洲欧美另类一区二区三区| 99热免费精品| 亚洲日本精品国产第一区| 久久久久久亚洲综合影院红桃 | 国产欧美精品国产国产专区| 99精品99久久久久久宅男| 亚洲国产精品一区制服丝袜| 欧美一区二区高清| 欧美性片在线观看| 亚洲精品黄色| 日韩西西人体444www| 麻豆久久精品| 红桃视频国产一区| 久久国产精品99国产精| 久久国产精品99国产| 国产欧美精品在线播放| 亚洲影视综合| 亚洲女人天堂成人av在线| 欧美日韩一区二区在线观看视频 | 99精品国产福利在线观看免费 | 欧美日韩1区2区| 亚洲激情一区二区| 亚洲国产精品一区二区第四页av | 免费亚洲一区二区| 激情亚洲成人| 久久国产天堂福利天堂| 久久精品国产99| 国产亚洲精品久久久久久| 午夜精品久久久久久久99热浪潮| 欧美亚洲色图校园春色| 国产精品国内视频| 亚洲视频网站在线观看| 亚洲一区二区三区视频| 欧美四级在线观看| 一本久道久久综合狠狠爱| 亚洲视频图片小说| 国产精品wwwwww| 一区二区三区日韩欧美精品| 亚洲一区二区三区高清| 国产精品久久久久久久久搜平片| 亚洲一区二区视频在线观看| 西西裸体人体做爰大胆久久久| 国产精品超碰97尤物18| 亚洲欧美成人网| 久久精品国产亚洲一区二区| 国产一区二区三区最好精华液| 久久激情视频久久| 免费成人高清| 亚洲精品日本| 亚洲一区二区三区在线观看视频 | 欧美国产精品v| 亚洲人成人一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 欧美亚州韩日在线看免费版国语版| 亚洲视频一二三| 久久久国产一区二区| 在线看欧美视频| 一区二区电影免费在线观看| 国产精品qvod| 欧美一区国产在线| 欧美a级在线| 日韩视频一区二区三区| 午夜久久久久| 一区在线影院| 亚洲无限乱码一二三四麻| 国产精品一区视频网站| 亚洲国产成人在线| 99re66热这里只有精品4| 欧美日韩国产小视频| 在线视频精品一区| 久久精品国产69国产精品亚洲| 亚洲成人中文| 亚洲午夜精品久久久久久浪潮 | 久久成人av少妇免费| 伊人久久男人天堂| 亚洲一级影院| 韩国三级在线一区| 亚洲图片欧洲图片av| 国产一区二区三区高清播放| 欧美伊人久久| 欧美三级小说| 久久国产黑丝| 欧美四级电影网站| 亚洲成人资源| 亚洲欧美在线一区二区| 黄色在线成人| 亚洲一级黄色av| 伊人激情综合| 亚洲综合色自拍一区| 在线免费观看视频一区| 91久久中文| 国产精品免费在线| 亚洲看片免费| 国产亚洲女人久久久久毛片| 一区二区三区日韩精品| 国内精品伊人久久久久av一坑| 一区二区精品国产| 永久免费精品影视网站| 亚洲欧美视频一区二区三区| 亚洲国产精品久久91精品| 午夜一区二区三区不卡视频| 亚洲精品裸体| 久热这里只精品99re8久| 亚洲你懂的在线视频| 欧美日韩成人一区| 亚洲国产三级在线| 国产婷婷色一区二区三区在线| 一区二区三区导航|