如何:使用 WCF 终结点交换排队消息

即使在通信时 Windows Communication Foundation (WCF) 服务不可用,队列也能确保客户端和该服务之间的可靠消息传输。下面的过程演示如何在实现 WCF 服务时使用标准排队绑定确保客户端和服务间的持久性通信。

本节介绍如何将 NetMsmqBinding 用于 WCF 客户端和 WCF 服务之间的排队通信。

在 WCF 服务中使用队列

  1. 使用用 ServiceContractAttribute 标记的接口定义服务协定。

  2. OperationContractAttribute 来标记属于服务协定一部分的接口中的操作,并将它们指定为单向操作(因为不返回对该方法的任何响应)。下面的代码提供了示例服务协定及其操作定义。

  3. 当服务协定传递用户定义的类型时,您将需要为这些类型定义数据协定。下面的代码演示了示例数据协定。(请注意,定义该数据协定的类也定义了大量方法。这些方法不被视为数据协定的一部分。只有那些使用 DataMember 属性声明的成员才是数据协定的一部分。)

  4. 实现在类中接口中定义的服务协定的方法。

  5. 使用 System.Messaging 创建一个事务性队列。可以选择使用 Microsoft 消息队列 (MSMQ) Microsoft 管理控制台 (MMC) 来创建队列。如果这样,将确保创建事务性队列。

  6. 在指定服务地址并使用标准 NetMsmqBinding 绑定的配置中定义 ServiceEndpoint。有关 使用 WCF 配置的更多信息,请参见配置 Windows Communication Foundation 应用程序

  7. 使用 ServiceHostOrderProcessing 服务创建一个主机,该主机从队列读取消息并处理这些消息。

  8. 打开服务主机使服务处于可用状态。

  9. 关闭服务主机。

为排队服务创建客户端

  1. 使用 Svcutil.exe 工具创建 WCF 客户端。

  2. 在指定地址并使用标准 NetMsmqBinding 绑定的配置中定义 ServiceEndpoint

  3. 创建一个要写入事务性队列的事务范围。

  4. 调用计算器操作。

  5. 关闭 WCF 客户端。

示例

另请参见

任务

如何:与 WCF 终结点和消息队列应用程序交换消息

参考

NetMsmqBinding

概念

在 WCF 中排队

其他资源

Transacted MSMQ Binding