MsmqIntegrationBinding 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
MsmqIntegrationBinding 类将Microsoft消息队列(MSMQ)消息映射到Windows Communication Foundation(WCF)消息。
public ref class MsmqIntegrationBinding : System::ServiceModel::MsmqBindingBase
public class MsmqIntegrationBinding : System.ServiceModel.MsmqBindingBase
type MsmqIntegrationBinding = class
inherit MsmqBindingBase
Public Class MsmqIntegrationBinding
Inherits MsmqBindingBase
- 继承
示例
以下配置文件片段演示如何在客户端上配置 MsmqIntegrationBinding 绑定:
以下配置文件片段演示如何在服务上配置 MsmqIntegrationBinding 绑定:
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
[ServiceKnownType(typeof(PurchaseOrder))]
public interface IOrderProcessor
{
[OperationContract(IsOneWay = true, Action = "*")]
void SubmitPurchaseOrder(MsmqMessage<PurchaseOrder> msg);
}
<ServiceContract(Namespace:="http:'Microsoft.ServiceModel.Samples")> _
<ServiceKnownType(GetType(PurchaseOrder))> _
Public Interface IOrderProcessor
<OperationContract(IsOneWay:=True, Action:="*")> _
Sub SubmitPurchaseOrder(ByVal msg As MsmqMessage(Of PurchaseOrder))
End Interface
以下代码演示如何 MsmqIntegrationBinding 以编程方式在服务上使用绑定:
public class OrderProcessorService : IOrderProcessor
{
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void SubmitPurchaseOrder(MsmqMessage<PurchaseOrder> ordermsg)
{
PurchaseOrder po = (PurchaseOrder)ordermsg.Body;
Random statusIndexer = new Random();
po.Status = (OrderStates)statusIndexer.Next(3);
Console.WriteLine("Processing {0} ", po);
}
// Host the service within this EXE console application.
public static void Main()
{
// Get base address from appsettings in configuration.
Uri baseAddress = new Uri(ConfigurationManager.AppSettings["baseAddress"]);
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(IOrderProcessor), baseAddress))
{
// Open the ServiceHostBase to create listeners and start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("The service is running in the following account: {0}", WindowsIdentity.GetCurrent().Name);
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
}
}
Public Class OrderProcessorService
Implements IOrderProcessor
<OperationBehavior(TransactionScopeRequired:=True, TransactionAutoComplete:=True)> _
Public Sub SubmitPurchaseOrder(ByVal ordermsg As MsmqMessage(Of PurchaseOrder)) Implements IOrderProcessor.SubmitPurchaseOrder
Dim po As PurchaseOrder = ordermsg.Body
Dim statusIndexer As New Random()
po.Status = statusIndexer.Next(3)
Console.WriteLine("Processing {0} ", po)
End Sub
End Class
以下代码演示如何以编程方式在 MsmqIntegrationBinding 客户端上使用绑定:
MsmqIntegrationBinding binding = new MsmqIntegrationBinding();
EndpointAddress address = new EndpointAddress("msmq.formatname:DIRECT=OS:.\\private$\\Orders");
ChannelFactory<IOrderProcessor> channelFactory = new ChannelFactory<IOrderProcessor>(binding, address);
IOrderProcessor channel = channelFactory.CreateChannel();
PurchaseOrder po = new PurchaseOrder();
po.customerId = "somecustomer.com";
po.poNumber = Guid.NewGuid().ToString();
PurchaseOrderLineItem lineItem1 = new PurchaseOrderLineItem();
lineItem1.productId = "Blue Widget";
lineItem1.quantity = 54;
lineItem1.unitCost = 29.99F;
PurchaseOrderLineItem lineItem2 = new PurchaseOrderLineItem();
lineItem2.productId = "Red Widget";
lineItem2.quantity = 890;
lineItem2.unitCost = 45.89F;
po.orderLineItems = new PurchaseOrderLineItem[2];
po.orderLineItems[0] = lineItem1;
po.orderLineItems[1] = lineItem2;
MsmqMessage<PurchaseOrder> ordermsg = new MsmqMessage<PurchaseOrder>(po);
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
channel.SubmitPurchaseOrder(ordermsg);
scope.Complete();
}
Console.WriteLine("Order has been submitted:{0}", po);
Dim binding As New MsmqIntegrationBinding()
Dim address As New EndpointAddress("msmq.formatname:DIRECT=OS:.\\private$\\Orders")
Dim channelFactory As New ChannelFactory(Of IOrderProcessor)(binding, address)
Dim channel As IOrderProcessor = channelFactory.CreateChannel()
Dim po As New PurchaseOrder()
po.customerId = "somecustomer.com"
po.poNumber = Guid.NewGuid().ToString()
Dim lineItem1 As New PurchaseOrderLineItem()
lineItem1.productId = "Blue Widget"
lineItem1.quantity = 54
lineItem1.unitCost = 29.99F
Dim lineItem2 = New PurchaseOrderLineItem()
lineItem2.productId = "Red Widget"
lineItem2.quantity = 890
lineItem2.unitCost = 45.89F
Dim lineItems(1) As PurchaseOrderLineItem
lineItems(0) = lineItem1
lineItems(1) = lineItem2
po.orderLineItems = lineItems
Dim ordermsg As MsmqMessage(Of PurchaseOrder) = New MsmqMessage(Of PurchaseOrder)(po)
Using scope As New TransactionScope(TransactionScopeOption.Required)
channel.SubmitPurchaseOrder(ordermsg)
scope.Complete()
End Using
Console.WriteLine("Order has been submitted:{0}", po)
注解
Important
使用不受信任的数据调用此类中的方法存在安全风险。 仅在确保数据受信任的情况下,再从该类调用方法。 有关详细信息,请参阅验证所有输入。
此绑定可用于使 WCF 应用程序能够向/从使用 COM、本机 C++ API 或命名空间中 System.Messaging 定义的类型的现有 MSMQ 应用程序发送和接收消息。
构造函数
| 名称 | 说明 |
|---|---|
| MsmqIntegrationBinding() |
初始化 MsmqIntegrationBinding 类的新实例。 |
| MsmqIntegrationBinding(MsmqIntegrationSecurityMode) |
使用指定的MsmqIntegrationBinding值初始化类的新实例MsmqIntegrationSecurityMode。 |
| MsmqIntegrationBinding(String) |
从指定配置绑定元素的设置初始化类的新实例 MsmqIntegrationBinding 。 |
属性
| 名称 | 说明 |
|---|---|
| CloseTimeout |
获取或设置在传输引发异常之前连接要关闭的时间间隔。 (继承自 Binding) |
| CustomDeadLetterQueue |
获取或设置一个 URI,其中包含每个应用程序的死信队列的位置,其中放置了已过期或传输失败或传递失败的消息。 (继承自 MsmqBindingBase) |
| DeadLetterQueue |
获取或设置一个枚举值,该值指示要使用的死信队列的类型。 (继承自 MsmqBindingBase) |
| Durable |
获取或设置一个值,该值指示此绑定处理的消息是持久还是易失。 (继承自 MsmqBindingBase) |
| ExactlyOnce |
获取或设置一个值,该值指示此绑定处理的消息是否完全接收一次。 (继承自 MsmqBindingBase) |
| MaxReceivedMessageSize |
获取或设置此绑定处理的消息的最大大小(以字节为单位)。 (继承自 MsmqBindingBase) |
| MaxRetryCycles |
获取或设置尝试将消息传送到接收应用程序的最大重试周期数。 (继承自 MsmqBindingBase) |
| MessageVersion |
获取使用绑定配置的客户端和服务使用的消息版本。 (继承自 Binding) |
| Name |
获取或设置绑定的名称。 (继承自 Binding) |
| Namespace |
获取或设置绑定的 XML 命名空间。 (继承自 Binding) |
| OpenTimeout |
获取或设置在传输引发异常之前为连接打开提供的时间间隔。 (继承自 Binding) |
| ReceiveContextEnabled |
获取或设置一个值,该值指示是否请求接收上下文行为。 (继承自 MsmqBindingBase) |
| ReceiveErrorHandling |
获取或设置一个枚举值,该值指定如何处理有害消息。 (继承自 MsmqBindingBase) |
| ReceiveRetryCount |
获取或设置从应用程序队列中读取的消息的即时传递尝试的最大次数。 (继承自 MsmqBindingBase) |
| ReceiveTimeout |
获取或设置连接在删除之前连接可以保持非活动状态的时间间隔,在此期间不会收到任何应用程序消息。 (继承自 Binding) |
| RetryCycleDelay |
获取或设置一个值,该值指示尝试传递无法立即传递的消息时重试周期之间的时间延迟。 (继承自 MsmqBindingBase) |
| Scheme |
返回此绑定的方案。 (继承自 MsmqBindingBase) |
| Security |
MsmqIntegrationSecurity获取与此绑定关联的项。 |
| SendTimeout |
获取或设置传输引发异常之前为写入操作完成提供的时间间隔。 (继承自 Binding) |
| SerializationFormat |
获取或设置用于序列化或反序列化消息的序列化格式。 |
| TimeToLive |
获取或设置时间间隔,该时间间隔指示此绑定处理的消息在过期之前可以在队列中的时间长度。 (继承自 MsmqBindingBase) |
| UseMsmqTracing |
获取或设置一个值,该值指示是否应跟踪此绑定处理的消息。 (继承自 MsmqBindingBase) |
| UseSourceJournal |
获取或设置一个值,该值指示是否应将此绑定处理的消息副本存储在源日记队列中。 (继承自 MsmqBindingBase) |
| ValidityDuration |
获取或设置一个值,该值指定消息将由接收上下文功能锁定的持续时间。 (继承自 MsmqBindingBase) |
方法
显式接口实现
| 名称 | 说明 |
|---|---|
| IBindingRuntimePreferences.ReceiveSynchronously |
获取一个值,该值指示是否可以更有效地同步或异步处理传入的请求。 (继承自 MsmqBindingBase) |