Export (0) Print
Expand All

NetMsmqBinding Class

Represents a queued binding that is suitable for cross-machine communication.

Namespace:  System.ServiceModel
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public class NetMsmqBinding : MsmqBindingBase

The NetMsmqBinding type exposes the following members.

  NameDescription
Public methodNetMsmqBinding()Initializes a new instance of the NetMsmqBinding class.
Public methodNetMsmqBinding(NetMsmqSecurityMode)Initializes a new instance of the NetMsmqBinding class using the specified security mode.
Public methodNetMsmqBinding(String)Initializes a new instance of the NetMsmqBinding class from the settings of a specified configuration binding element.
Top

  NameDescription
Public propertyCloseTimeoutGets or sets the interval of time provided for a connection to close before the transport raises an exception. (Inherited from Binding.)
Public propertyCustomDeadLetterQueueGets or sets a URI that contains the location of the dead-letter queue for each application, where messages that have expired or that have failed transfer or delivery are placed. (Inherited from MsmqBindingBase.)
Public propertyDeadLetterQueueGets or sets an enumeration value that indicates the type of dead-letter queue to use. (Inherited from MsmqBindingBase.)
Public propertyDurableGets or sets a value that indicates whether the messages processed by this binding are durable or volatile. (Inherited from MsmqBindingBase.)
Public propertyEnvelopeVersionGets the version of SOAP that is used for messages processed by this binding.
Public propertyExactlyOnceGets or sets a value that indicates whether messages processed by this binding are received exactly once. (Inherited from MsmqBindingBase.)
Public propertyMaxBufferPoolSizeGets or sets the maximum amount of memory that is allocated for use by the message buffer manager that receives messages from the channel.
Public propertyMaxReceivedMessageSizeGets or sets the maximum size, in bytes, for a message that is processed by this binding. (Inherited from MsmqBindingBase.)
Public propertyMaxRetryCyclesGets or sets the maximum number of retry cycles to attempt delivery of messages to the receiving application. (Inherited from MsmqBindingBase.)
Public propertyMessageVersionGets the message version used by clients and services configured with the binding. (Inherited from Binding.)
Public propertyNameGets or sets the name of the binding. (Inherited from Binding.)
Public propertyNamespaceGets or sets the XML namespace of the binding. (Inherited from Binding.)
Public propertyOpenTimeoutGets or sets the interval of time provided for a connection to open before the transport raises an exception. (Inherited from Binding.)
Public propertyQueueTransferProtocolGets or sets an enumeration value that indicates the queued communication channel transport that this binding uses.
Public propertyReaderQuotasGets or sets the XmlDictionaryReaderQuotas that is associated with this binding.
Public propertyReceiveContextEnabledGets or sets a value that indicates whether the receive context behavior is requested. (Inherited from MsmqBindingBase.)
Public propertyReceiveErrorHandlingGets or sets an enumeration value that specifies how poison messages are handled. (Inherited from MsmqBindingBase.)
Public propertyReceiveRetryCountGets or sets the maximum number of immediate delivery attempts on a message that is read from the application queue. (Inherited from MsmqBindingBase.)
Public propertyReceiveTimeoutGets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped. (Inherited from Binding.)
Public propertyRetryCycleDelayGets or sets a value that indicates the time delay between retry cycles when attempting to deliver a message that cannot be delivered immediately. (Inherited from MsmqBindingBase.)
Public propertySchemeReturns the scheme for this binding. (Inherited from MsmqBindingBase.)
Public propertySecurityGets or sets the NetMsmqSecurity that is associated with this binding.
Public propertySendTimeoutGets or sets the interval of time provided for a write operation to complete before the transport raises an exception. (Inherited from Binding.)
Public propertyTimeToLiveGets or sets the interval of time that indicates how long the messages processed by this binding can be in the queue before they expire. (Inherited from MsmqBindingBase.)
Public propertyUseActiveDirectoryGets or sets a value that indicates whether queue addresses should be converted using Active Directory.
Public propertyUseMsmqTracingGets or sets a value that indicates whether messages processed by this binding should be traced. (Inherited from MsmqBindingBase.)
Public propertyUseSourceJournalGets or sets a value that indicates whether copies of messages processed by this binding should be stored in the source journal queue. (Inherited from MsmqBindingBase.)
Public propertyValidityDurationGets or sets a value that specifies the duration a message will be locked by the receive context feature. (Inherited from MsmqBindingBase.)
Top

  NameDescription
Public methodBuildChannelFactory<TChannel>(BindingParameterCollection)Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by a collection of binding parameters. (Inherited from Binding.)
Public methodBuildChannelFactory<TChannel>(Object[])Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by an object array. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(BindingParameterCollection)Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified by a collection of binding parameters. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(Object[])Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(Uri, Object[])Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(Uri, BindingParameterCollection)Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(Uri, String, Object[])Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (Inherited from Binding.)
Public methodBuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (Inherited from Binding.)
Public methodCanBuildChannelFactory<TChannel>(BindingParameterCollection)Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the collection of binding parameters specified. (Inherited from Binding.)
Public methodCanBuildChannelFactory<TChannel>(Object[])Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the requirements specified by an object array. (Inherited from Binding.)
Public methodCanBuildChannelListener<TChannel>(BindingParameterCollection)Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the collection of binding parameters specified. (Inherited from Binding.)
Public methodCanBuildChannelListener<TChannel>(Object[])Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the criteria specified in an array of objects. (Inherited from Binding.)
Public methodCreateBindingElementsReturns an ordered collection of binding elements contained in the current binding. (Overrides Binding.CreateBindingElements().)
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetProperty<T>Returns a typed object requested, if present, from the appropriate layer in the binding stack. (Inherited from Binding.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodShouldSerializeNameReturns whether the name of the binding should be serialized. (Inherited from Binding.)
Public methodShouldSerializeNamespaceReturns whether the namespace of the binding should be serialized. (Inherited from Binding.)
Public methodShouldSerializeReaderQuotasReturns a value that indicates whether the ReaderQuotas property has changed from its default value and should be serialized.
Public methodShouldSerializeSecurityReturns a value that indicates whether the Security property has changed from its default value and should be serialized.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

  NameDescription
Explicit interface implemetationPrivate propertyIBindingRuntimePreferences.ReceiveSynchronouslyGets a value that indicates whether incoming requests can be handled more efficiently synchronously or asynchronously. (Inherited from MsmqBindingBase.)
Top

The NetMsmqBinding binding provides support for queuing by using Message Queuing (MSMQ) as a transport and enables support for loosely-coupled applications, failure isolation, load leveling and disconnected operations. For a discussion of these features, see Queues Overview.

This is one of the system-provided bindings provided by Windows Communication Foundation (WCF). The recommended procedure is to define the binding using configuration values and not to use a code-based approach, except in certain advanced scenarios where configuration values must be set as a service is initialized.

The following example shows how to configure a service to use the NetMsmqBinding binding.

First, the configuration file.

<!-- This is the service config file -->
<configuration>

  <appSettings>
    <!-- use appSetting to configure MSMQ queue name -->
    <add key="queueName" value=".\private$\ServiceModelSamples" />
    <add key ="baseAddress" value="http://localhost:8000/queuedCalculator/defaultSample"/>
  </appSettings>

  <system.serviceModel>
    <services>
      <service 
          name="Microsoft.ServiceModel.Samples.CalculatorService"
          behaviorConfiguration="CalculatorServiceBehavior">
        <!-- Define NetMsmqEndpoint -->
        <endpoint address="net.msmq://localhost/private/ServiceModelSamples"
                  binding="netMsmqBinding"
                  contract="Microsoft.ServiceModel.Samples.IQueueCalculator" />
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  </configuration>

Next, the actual service code.

// Define a service contract. 
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface IQueueCalculator
{
    [OperationContract(IsOneWay=true)]
    void Add(double n1, double n2);
    [OperationContract(IsOneWay = true)]
    void Subtract(double n1, double n2);
    [OperationContract(IsOneWay = true)]
    void Multiply(double n1, double n2);
    [OperationContract(IsOneWay = true)]
    void Divide(double n1, double n2);
}
// Service class that implements the service contract. 
// Added code to write output to the console window 
public class CalculatorService : IQueueCalculator
{
    [OperationBehavior]
    public void Add(double n1, double n2)
    {
        double result = n1 + n2;
        Console.WriteLine("Received Add({0},{1}) - result: {2}", n1, n2, result);
    }

    [OperationBehavior]
    public void Subtract(double n1, double n2)
    {
        double result = n1 - n2;
        Console.WriteLine("Received Subtract({0},{1}) - result: {2}", n1, n2, result);
    }

    [OperationBehavior]
    public void Multiply(double n1, double n2)
    {
        double result = n1 * n2;
        Console.WriteLine("Received Multiply({0},{1}) - result: {2}", n1, n2, result);
    }

    [OperationBehavior]
    public void Divide(double n1, double n2)
    {
        double result = n1 / n2;
        Console.WriteLine("Received Divide({0},{1}) - result: {2}", n1, n2, result);
    }
}
// This is the hosting application. This code can appear directly in the service class as well. 
class HostApp
{
    // Host the service within this EXE console application. 
    public static void Main()
    {
        // Get MSMQ queue name from appsettings in configuration. 
        string queueName = ConfigurationManager.AppSettings["queueName"];

        // Create the transacted MSMQ queue if necessary. 
        if (!MessageQueue.Exists(queueName))
            MessageQueue.Create(queueName, true);

        // Get the base address that is used to listen for WS-MetaDataExchange requests. 
        // This is useful to generate a proxy for the client. 
        string baseAddress = ConfigurationManager.AppSettings["baseAddress"];

        // Create a ServiceHost for the CalculatorService type. 
        using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), new Uri(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("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();

            // Close the ServiceHostBase to shutdown the service.
            serviceHost.Close();
        }
    }
}

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft