MsmqIntegrationBinding 类

定义

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 绑定:

以下配置文件片段演示如何在服务上配置 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)

方法

名称 说明
BuildChannelFactory<TChannel>(BindingParameterCollection)

在客户端上生成通道工厂堆栈,该堆栈创建指定的通道类型并满足绑定参数集合指定的功能。

(继承自 Binding)
BuildChannelFactory<TChannel>(Object[])

在客户端上生成通道工厂堆栈,该堆栈创建指定的通道类型并满足对象数组指定的功能。

(继承自 Binding)
BuildChannelListener<TChannel>(BindingParameterCollection)

在接受指定类型的通道的服务上生成通道侦听器,并满足绑定参数集合指定的功能。

(继承自 Binding)
BuildChannelListener<TChannel>(Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

(继承自 Binding)
BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

(继承自 Binding)
BuildChannelListener<TChannel>(Uri, Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

(继承自 Binding)
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

(继承自 Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

(继承自 Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

(继承自 Binding)
BuildChannelListener<TChannel>(Uri, String, Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

(继承自 Binding)
CanBuildChannelFactory<TChannel>(BindingParameterCollection)

返回一个值,该值指示当前绑定是否可以在客户端上生成满足指定绑定参数集合的通道工厂堆栈。

(继承自 Binding)
CanBuildChannelFactory<TChannel>(Object[])

返回一个值,该值指示当前绑定是否可以在客户端上生成满足对象数组指定的要求的通道工厂堆栈。

(继承自 Binding)
CanBuildChannelListener<TChannel>(BindingParameterCollection)

返回一个值,该值指示当前绑定是否可以在满足指定的绑定参数集合的服务上生成通道侦听器堆栈。

(继承自 Binding)
CanBuildChannelListener<TChannel>(Object[])

返回一个值,该值指示当前绑定是否可以在满足对象数组中指定的条件的服务上生成通道侦听器堆栈。

(继承自 Binding)
CreateBindingElements()

返回基本配置文件堆栈中的绑定元素。

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetProperty<T>(BindingParameterCollection)

从绑定堆栈中的相应层返回所请求的类型化对象(如果存在)。

(继承自 Binding)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ShouldSerializeName()

返回是否应序列化绑定的名称。

(继承自 Binding)
ShouldSerializeNamespace()

返回是否应序列化绑定的命名空间。

(继承自 Binding)
ShouldSerializeSecurity()

获取一个值,该值指定是否应序列化安全信息。

ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

显式接口实现

名称 说明
IBindingRuntimePreferences.ReceiveSynchronously

获取一个值,该值指示是否可以更有效地同步或异步处理传入的请求。

(继承自 MsmqBindingBase)

适用于