C# 消息队列

消息队列

System.Messaging名称空间包含的类可以用Windows操作系统的消息队列功能读写消息。消息传递功能可以在断开连接的环境夏使用,在该环境下,客户端和服务端不需要同时运行。
我将介绍消息队列的体系结构和用法,探讨System.Messaging名称空间中用于创建队列和收发消息的类,学习如何使用确认队列和响应队列从服务器中获得应答,如何通过WCF消息队列绑定使用消息队列。

概述

在开始学习消息队列编程之前,先讨论消息传递的基本概念,将它与同步和异步编程比较。在同步编程中,调用一个方法时,调用者必须等待该方法执行完毕。在异步编程中,主调线程可以启动同时运行的方法。异步编程可以通过委托、支持异步方法的类库(例如,Web服务代理,System.Net和System.IO类),或使用自定义线程来实现。在同步和异步编程中,客户端和服务器必须同时运行。

尽管消息队列是异步进行的,但因为客户端(发送者)不等待服务器(接收者)读取发送给它的数据,所以消息队列与异步编程有很大的区别。消息队列可以在断开连接的环境下进行。在发送数据时,接收者可以离线。在以后的某个时刻,接收者上线时,就会接收到数据,而无须来自发送应用程序的干预。

可以把打开连接的编程和断开连接的编程与给他人打电话和发送电子邮件做比较。在给他人打电话时,电话两端的人都必须同时在线;这种通信是同步的。而利用电子邮件,发送者不能确定处理电子邮件的时间。使用这个技术的人工作在断开连接的模式。当然,电子邮件可能从来不被处理,而它可能被忽略。这就是断开连接的通信的本质。为了避免这个问题,可以要求发送一个应答,以确认已读取电子邮件。如果在指定的时间内没有收到应答,就要处理这个“异常”。这也可以使用消息队列来实现。

在某些方面,消息队列就是应用程序之间通信的电子邮件,而不是人与人之间通信的电子邮件。但是,它提供了邮件服务没有的许多功能,例如,有保证的交付、事务、确认、使用内存的快捷模式等。如下一节所述,消息队列有许多可用于应用程序之间通信的特性。

通过消息队列功能,可以在打开连接或断开连接的环境夏发送、接收和路由消息。下图显示了使用消息的一种非常简单的方式。发送者给消息队列发送消息,接收者从队列中接收消息。
C# 消息队列_第1张图片

你可能感兴趣的:(C#,消息队列)