更新:2007 年 11 月
.NET Compact Framework 支持 Windows Embedded CE 中的消息队列(也称为 MSMQ)。MSMQ 使应用程序有可能跨网络与其他应用程序通信并与可能临时脱机的系统通信。
有关在 .NET Compact Framework 中使用 MSMQ 的完整示例,请参见 MSMQ 丛书订购应用程序示例。
为了使用此服务,应用程序将消息发送到消息队列。消息队列可以为相同设备或不同设备上的发送和接收应用程序保存消息。
当网络连接建立时,MSMQ 将消息传送到远程队列,而不考虑接收应用程序是否正在运行。接收应用程序可在任何时候在其本地队列中检查消息。
Pocket PC 上的 Windows Embedded CE 操作系统中并未内置 MSMQ,但是您可以安装 MSMQ,启动该服务并创建使用它的应用程序。下面说明如何获取 MSMQ 组件:
Windows Mobile 2003 for Pocket PC SDK 为运行 Windows Mobile 2003 for Pocket PC 的 Pocket PC 提供了 MSMQ。
运行用于 Pocket PC 或 Smartphone 的 Windows Mobile 5.0 版软件的设备可以从 Redistributable Server Components for Windows Mobile 5.0(Windows Mobile 5.0 可再发行服务器组件)下载 MSMQ 组件。
MSMQ 对于 Windows Mobile 2003 for Smartphone 不可用。
使用 Microsoft Platform Builder 的 Windows Embedded CE 设备开发人员可使用 MSMQ。
Windows Mobile 2003 for Pocket PC 不支持基于 HTTP 的 SOAP 可靠消息传递协议 (SRMP),因此您必须使用专有的 MSMQ 协议来发送消息。Windows Mobile 5.0 版支持 SRMP。
.NET Compact Framework 只支持 XmlMessageFormatter,以将消息序列化至消息队列,并从消息队列反序列化消息。
.NET Compact Framework 不支持下列功能,因为这些功能在 Windows Embedded CE 中不可用:
多个消息事务。事务支持仅限于单消息事务。
远程队列读取。
加密。
基于访问控制列表 (ACL) 的安全性。
MQMail。
基于 Active Directory 的公共队列。
因为设备上不支持 Active Directory,所以 .NET Compact Framework 无法确定远程队列是否为事务性的。若要将消息发送到远程事务队列,下列操作是必需的:
将 ;XACTONLY 添加到接受字符串路径参数的 MessageQueue 构造函数的队列路径中,并且将其添加到 Path 属性。
在接受 MessageQueueTransactionType 参数的 Send 方法中为该参数指定 Single。
.NET Compact Framework 不支持 System.Messaging 命名空间中的下列类型:
MessageQueuePermissionAttribute |
请参见
任务
如何:在 .NET Compact Framework 中使用 MSMQ