.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端的长时间处理过程

你可能感兴趣的:(.net)