MSMQ技术在Windows Mobile系统通信中应用
接收消息
本文引用地址:https://www.eepw.com.cn/article/106704.htm接收消息相比发送消息要复杂一些。接收消息有两种方式:通过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平台通信系统已经在国内某大型客车企业生产追踪系统中得到应用。
数字通信相关文章:数字通信原理
通信相关文章:通信原理
评论