Windows消息队列与JSON在应用程序间通信的应用
摘要:Windows应用程序之间通信应用越来越广泛,消息队列作为应用程序间通信的重要手段,论文阐述了其稳定性、安全性、异步接收等特点。同时论文介绍了JSON数据格式,作为新一代的数据格式非常适合网络层传输,还提出使用JSON数据交换格式为消息队列传递的载体,最后给出了Windows消息队列使用JSON为数据格式传输的实现过程。
关键词:消息队列;JSON ;MSMQ;异步通信
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)13-2946-02
Communication between Applications Using the Windows Message Queue and JSON
WANG You-shun, Chen He-ming
(Zhengzhou Vocational University of Information and Technology, Zhengzhou 450008,China)
Abstract: Windows applications Communication are used more and more widely, Microsoft message queue as an important means of communication between applications, the paper discusses its stability, safety, asynchronous receiver etc.. The paper also discusses JSON, as a new generation of data format is very suitable for transmission of network ,Then proposes using the JSON data format for the transmission of the message queue, finally the implementation procedure of the Windows message queuing uses JSON for data transfer format is given.
Key words:message queue; JSON; MSMQ; asynchronous communication
社会快速发展,用户对应用程序功能的要求越来越强大、使用越来越便捷,应用程序为了扩展自身的功能采取多种措施,其中多个应用联合起来增强整个软件的功能经常被采用,应用程序之间的通信与协作越来越受重视。根据实际需要选用合理的通信方法,采用合理的数据通信格式是非常重要。
1 消息队列
在Windows系统中应用程序之间的通信有这么几种:内存映射、消息队列(Microsoft MessageQueue,以下简称MSMQ)、套接字、命名管道等。MSMQ是 Microsoft 的应用程序之间通信处理技术,彼此相互通信的两个应用或者进程可以在同一台主机上运行或者在网络中应用,甚至是处于间断连接在一起的不同机器上。在Windows系统中通过MSMQ组件使的两个或者多个应用程序之间相互通信, MSMQ为基于服务器的应用程序组件之间的进程间通信提供了强大灵活的机制,MSMQ有以下优点:
1)MSMQ具有故障保险特性。在两个进程间或应用程序之间传送定义即将发送的消息是数据基本单位,传送的消息可以非常简单,譬如:只包含文本字符串。MSMQ是在应用之间传输消息的存放消息的容器,应用程序将消息发送到队列中,MSMQ作为应用通信的中转站,负责将消息从它的源中转到目的应用程序,MSMQ在此过程中的主要作用是提供消息路由且保证消息的正确传递;若发送消息时接收者暂停运行或者停止运行,则MSMQ会保留消息,直到可以成功地传递它在,这样可保证应用程序消息到达它们目的地。
2)MSMQ稳定性和消息优先级。应用发出的消息存放在MSMQ中等待应用合适的处理,所以对于需要通信的数据存放在队列中是非常稳定;对于紧要的消息或者重要的消息需要提前接收处理,那么MSMQ则有优先级之分来满足各种类型的消息,所以为了应用程序能够稳定的运行,要分析清楚其消息的轻重缓急,一旦确定消息的优先级之后,使用MSMQ的优先级机制保证应用程序的响应时间。
3)MSMQ安全性。MSMQ技术使用 Windows 操作系统安全机制提供消息队列的访问控制,并且对使用消息队列的应用程序提供验证及加密功能。具体情况具体分析,使用MSMQ是根据使用的方式不同可以分为以下几个队列:公共队列,在整个MSMQ网络中复制,可被网络中的所有主机访问,适合使用在消息群发的应用通信;私有队列,不能在个网络中发布并且只能存在本地计算机中,私有队列的访问必须知道队列的完整名称。
4)MSMQ异步接收。MSMQ的通信在属于异步,发送消息和接收消息均有不同的进程完成。接收消息的应用程序进行异步接收操作,可以调用适当的异步方法,不阻塞当前进程。MSMQ通过异步接收方式大大提高系统运行的效率,所以使用异步接收消息非常重要。
5)MSMQ脱机操作。应用程序通信时发送的消息,可被发送到临时队列中并保存在那里,一直等到被另外应用程序成功地接收。因为某种原因所访问的队列不可用时,应用程序可以继续执行,就像消息已经得到处理一般,一旦网络恢复连接时消息能够正确的被传递。
2 JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。JSON 是轻量级的文本数据交换格式JSON 独立于语言JSON 具有自我描述性。例如下格式:
{"employees":
[
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}
JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。这使得XML在程序判读上需要比较多的功夫。主要的原因在于XML的设计理念与JSON不同。XML利用标记语言的特性提供了绝佳的延展性,在数据存储,扩展及高级检索方面具备对JSON的优势,而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
3 使用MSMQ与JSON实现应用程序间通信
Windows应用程序间通信如图1所示,应用程序1和应用程序2通过MSMQ来发送、提取JSON格式的消息。使用MSMQ完成应用程序间通信,分为如下几个步骤。
图1 MSMQ通信模型
1)安装MSMQ。在控制面板页面打开添加程序,找到windows组件选中MSMQ组件然后点击确定就可以完成组件的安装,并且可以有两种模式的安装分别为:工作组模式和域模式。当安装程序没能够发现一台提供目录服务的MSMQ的服务器的时候,此时MSMQ只能安装成为工作组模式,同时此机器安装的MSMQ只能够创建私有队列与创建与其他运行MSMQ的应用程序的连接。
2)配置MSMQ。打开计算机组件找到MSMQ,可以创建专用队列和公用队列,例如:在专用队列下创建MSMQDemo队列
3)编写代码。Windows操作系统已经提供了封装好的MSMQ类MessageQueue 。在编写程序时使用 MessageQueue类的构造函数传递一个消息队列的名称,或在计算机上创建新队列。在调用发送、接收消息队列时,需要将 MessageQueue 类实例与指定的MSMQ连接起来。
MessageQueue 类在程序中可以使用同步操作和异步操作。消息队列同步操作,接收函数创建新的线程且指定的时间间隔轮询消息的到达。异步接收的操作使得应用程序在消息到达之前继续执行其他任务;一旦消息到达通过使用回调函数以及状态对象进行接收消息操作。在编写程序之前需要导入System.Messaging命名空间。以下是发送消息部分代码:
MessageQueue queue = new MessageQueue(".\\Private$\\MSMQ");
String msgstr = “{\"employees\": [{\ "firstName\":\"Bill\", lastName\":\"Gates\" },…]}”;
Message msg = new Message();
msg.Body = msgstr;
msg.Formatter = new XmlMessageFormatter(new Type[] {typeof(string)});
queue.Send(msg);
以下是接收消息部分代码:
MessageQueue queue = new MessageQueue(".\\Private$\\MSMQ");
Message msg = queue.Receive();
msg.Formatter = new XmlMessageFormatter(new Type[] {typeof(string)});
txtRM.Text = msg.Body.ToString();}
4 结束语
在Windows下使用MSMQ作为应用程序之间通信,操作简单并且具有脱机能力,能够为应用程序之间通信提供很好的异步方法,但是与此同时也有不足之处需要另外单独安装MSMQ组件。
参考文献:
[1] 张逸凡,于志安.高级消息队列协议在大数据传输中问题及解决[J].电脑知识与技术.2014(1).
[2] 张英辉.消息队列技术在短信通信中的应用[J].中小企业管理与科技, 2013(7).
[3] 兰海波,惠建忠.基于网站信息发布流程的监控设计与实现[J].信息安全与技术,2013(4).
[4] 宋丽华,张秋娟.基于μC/OS-Ⅱ的双消息队列中断管理系统设计实现[J].计算机工程与设计, 2013(7).
版权声明:
1.十号范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《Windows消息队列与JSON在应用程序间通信的应用》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。
本栏目阅读排行
栏目最新
- 1在农民收入调查工作动员培训会上讲话
- 22024年领导干部政治素质自评材料(完整)
- 3公司党委党建工作总结报告【完整版】
- 42024年主题教育党建调研开展情况总结
- 52024年度区妇联关于党建工作述职报告(完整)
- 6关于加强企业人才队伍建设调研与思考(完整文档)
- 72024县党员干部抓基层党建工作述职报告
- 8第二批主题教育研讨发言:时刻“以民为本”,听“实言实语”,办实事好事
- 92024关于党员干部法治信仰情况调研报告(2024年)
- 10局网络安全工作责任制落实自查报告(全文)
- 11XX国企分管领导关于党建设引领企业高质量发展研讨发言(范文推荐)
- 122024年第二批主题教育专题读书班研讨发言提纲(6)【完整版】