基于MQ技术的移动终端远程通讯方法实现

摘 要 :本文通过对各种通讯方式的比较,总结出MQ技术在移动终端的远程通讯中具有优良的传输特性与安全性.

关 键 词 :MQ Mobile 消息 消息队列

中图分类号: 文献标识码:A文章编号:1007-9416(2010)05-0000-00

0 引言

随着3G网络技术、市场和政策的不断成熟,移动终端设备的使用量在急速增加,广泛应用各个领域.Windows Mobile是微软为智能移动终端设备使用的操作系统,Windows Mobile将用户熟悉的桌面Windows体验扩展到了移动设备上.通信是移动终端设备之间的桥梁,简单、安全是通信的基础和保障.常用的通信方式有Socket、Web Service、MQ:Socket传送数据会自定义传送数据格式并且服务端要使用到多线程接收客户端信息,编程复杂且不好控制,Web Service编程简单易控制,但是只可能调用服务端的函数不能实现服务端和客户端相互通信,MQ是微软提供的一种可以远程访问的异步通讯方式,MQ是最有保障的数据传方法之一,支持转发,支持延时发送,并且具有较高安全性.

本文首先总结出MQ技术的技术特点与优势,并对各部分功能进行详细介绍,随后提出了消息队列实现基于MQ技术的远程通讯方法与实现流程,并对其核心代码进行讲解.最后对该技术应用前景进行展望.

1.MQ技术概述

Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置.它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中,然后把它保存至一个系统公用空间的消息队列(Message Queue)中,本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理.

在微软的.平台上利用其提供的MQ功能,可以轻松创建或者删除消息队列、发送或者接收消息、甚至于对消息队列进行管理.

2.MQ技术在Mobile中的应用

(1)引用队列

在初始化时引用消息队列的代码很简单,如下所示:MessageQueue Mq等于new MessageQueue(“.\\private$\\mq”),

通过Path属性引用消息队列的代码:MessageQueue Mq等于new MessageQueue(),

Mq.Path等于”.\\private$\\mq”,

使用 Create 方法可以在计算机上创建队列:

System.Messaging.MessageQueue.Create(@".\private$\mq"),

(2)发送消息

队列引用过后,就可以发送消息了.消息的发送可以分为简单消息和复杂消息,简单消息类型就是常用的数据类型,例如整型、字符串等数据,复杂消息的数据类型通常对应于系统中的复杂数据类型,例如结构,对象等等.

简单消息的发送示例如下:

Mq.Send(1000), //发送整型数据

Mq.Send(“This is a test message!”), //发送字符串

复杂消息的发送和简单消息的发送大同小异,只是发送时,通常不是直接给出发送的消息内容,而是代表发送消息内容的变量.下面的代码分别通过消息变量和复杂数据类型变量发送一条复杂消息.

下面的代码中发送的消息由消息变量表示

Message Msg,

Msg等于new Message(“A Complex Message!”),

Msg.Label等于”This is the label”,

Msg.Priority等于MessagePriority.High,

Mq.Send(Msg),

下面的代码中发送的消息由复杂数据类型变量表示,Customer为自定义的一个类

Customer customer 等于 new Customer(),

customer.LastName 等于 "Copernicus",

customer.FirstName 等于 "Nicolaus",

Mq.Send(customer),

(3)接收消息

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


接收消息的代码很简单:

Mq.Receive(), //或Mq.ReceiveById(ID),

Mq.Peek(),// 或Mq.PeekById(ID),

(4)阅读消息

消息的序列化可以通过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),

3结语

本文介绍在Windows Mobile平台上利用MQ技术实现远程通讯,以及如何选择和使用这些技术.相信通过本文的论述会对相关工程开发与设计起到很好的指导性作用.

类似论文

在信息技术课堂中实现过程与方法目标

新课程倡导课堂教学要实现“知识与技能”“过程与方法”“情感、态度与价值观”三维目标的整合 而在小学。
更新日期:2024-4-2 浏览量:12612 点赞量:4655

三菱PLC的网络协议通讯方法

摘 要:当今,随着工厂的自动化程度越来越高,生产控制中的电脑、PLC、变频器、触摸屏等各种智能工控设备的实时交互性。
更新日期:2024-1-12 浏览量:19263 点赞量:5427

信息技术环境下电子商务教学方法

【摘 要】电子商务课程是一门随着电子商务的飞速发展而产生的新兴的课程,它是一门学科综合、理论和实践应。
更新日期:2024-3-27 浏览量:47003 点赞量:11446