MSMQ技术在Windows Mobile系统通信中应用

手机与无线通信   作者:尚尔明 沈阳市电信规划设计院 王长涛 沈阳建筑大学信息与控制工程学院 于天明 沈阳市华域建筑设计有限公司 时间:2010-03-09来源:电子产品世界

  接收消息

  接收消息相比发送消息要复杂一些。接收消息有两种方式:通过Receive方法接收消息同时永久性地从队列中删除消息;通过Peek方法从队列中取出消息而不从队列中移除该消息。如果知道消息的标识符(ID),还可以通过ReceiveById方法和PeekById方法完成相应的接收消息操作。

  接收消息的代码如下:

  Mq.Receive(); //或

  Mq.ReceiveById(ID);

  Mq.Peek(); // 或

  Mq.PeekById(ID);

  阅读消息

  只有通过根据通信双方的约定将接收到的消息中信息提取出来,传递的消息才有价值,因此接收到消息以后还必须能读出消息中包含的信息。在发送端的应用程序发送的消息和消息队列中的传输消息的格式不同,因而发送端的应用程序发送出去的消息经过序列化以后才发送给了消息队列,这一过程由系统自动完成了,程序开发人员不必为此编写代码,然而在接收到消息后就需要对接收的消息进行反序列化。

  消息的反序列化可以通过Visual Studio和.NET Framework附带的三个预定义的格式化程序来完成:XMLMessageFormatter对象(MessageQueue组件的默认格式化程序设置)、BinaryMessageFormatter对象、ActiveXMessageFormatter对象。由于后两者格式化后的消息通常不能被用户阅读,所以经常采用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);

  关闭消息队列

  关闭消息队列可以通过Close函数来实现,代码如下:

  Mq.Close();

  结语

  基于Windows Mobile平台的高速无线网络为各行业客户提供更加可靠便捷的移动解决方案。消息队列技术保证移动设备与数据中心之间进行良好的通信。通过对Windows Mobile平台上,发送、接收和阅读消息工作过程的讲解说明消息队列技术简单实用。基于MSMQ技术的Windows Mobile平台通信系统已经在国内某大型客车企业生产追踪系统中得到应用。

1 2 3 4 5

关键词: MSMQ 通信 消息 消息队列 PDA Windows Mobile 201003

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版