msmqIntegrationBinding 绑定用来在一个WCF应用程序和一个直接利用MSMQ的应用程序间通信-比如,使用System.Messaging.这允许开发人员利用WCF同时也使用他们已有的MSMQ应用程序。msmqIntegrationBinding绑定允许MSMQ消息映射到WCF消息。这通过在MsmqMessage类中对MSMQ消息包装来实现的。类位于System.ServiceModel.MsmqIntegration命名空间里。实例可以使用单向契约被发送或接收。
下面的代码显示了msmqIntegrationBinding绑定的地址格式:
msmq.formaname:{MSMQ format name}
MSMQ地址格式不需要端口来确定。然后,MSMQ需要打开特定端口,比如1801.表4.12显示了msmqIntegrationBinding绑定的可以配置的属性。
表4.12 msmqIntegrationBinding绑定属性
列表4.30 显示了使用msmqIntegrationBinding绑定暴露一个服务的最小配置
列表4.30 msmqIntegrationBinding 宿主配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="EssentialWCF.StockQuoteRequestService"> <endpoint address="msmq.formatname:DIRECT=OS:.\private$\stockquoteresponse" binding="msmqIntegrationBinding" contract="EssentialWCF.IStockQuoteRequest" /> </service> </services> </system.serviceModel></configuration>
调用由msmqIntegrationBinding绑定生成的服务的最小配置在列表4.31中显示
列表4.31 msmqIntegrationBinding 客户端配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="EssentialWCF.HelloWorld"> <endpoint address="msmq.formatname:DIRECT=OS:.\private$\stockquoteresponse" binding="msmqIntegrationBinding" contract="EssentialWCF.IStockQuoteRequestService" /> </service> </services> </system.serviceModel></configuration>