.NET 消息队列 基础
消息基础:windows底层
msmq(microsoft message queue)消息队列
1. 基本术语和概念(basic terms and concepts)
“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。
鼠标移动、按键被按下、窗口被关闭.,这些都会产生消息。
在Windows操作系统中,消息是以下面的数据结构存在的.
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
消息内有六个信息,分别是:
. hwnd:窗口/控件的唯一hwnd的编号。消息循环会根据此信息,将消息送到正确目标。
. message:Windows预先定义的消息种类的ID。
. wParam 与lParam:有些message本身需要携带更多的信息,这些信息就放在wParam与lParam中。
. time与pt:消息发生当时的时间与鼠标位置
一些基本名词解释:
Message Queue
每个程序系统都会帮我们生成一个消息队列
Windows Procedure(WndProc):
通常“每一种”窗口或控件(control)都有一个Windows Procedure,来处理该种窗口/控件的行为
.NET Framework如何封装消息循环
.NET Framework的Windows Forms将消息循环封装起来,以方便我们使用。本节中所提到的类(class),都是属于System.Windows.Forms名字空间(namespace)。
消息队列:
msmq与xml web services和.net remoting一样,是一种分布式开发技术。但是在使用xml web services或.net remoting组件时,client端需要和server端实时交换信息,server需要保持联机。msmq则可以在server离线的情况下工作,将message临时保存在client端的消息队列中,以后联机时再发送到server端处理。
显然,msmq不适合于client需要server端及时响应的这种情况,msmq以异步的方式和server端交互,不用担心等待server端的长时间处理过程