ChannelFactory<TChannel> Class

Microsoft Silverlight will reach end of support after October 2021. Learn more.

A factory that creates channels of different types that are used by clients to send messages to variously configured service endpoints.

Inheritance Hierarchy

System.Object
  System.ServiceModel.Channels.CommunicationObject
    System.ServiceModel.ChannelFactory
      System.ServiceModel.ChannelFactory<TChannel>
        System.ServiceModel.DuplexChannelFactory<TChannel>

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

Syntax

'Declaration
Public Class ChannelFactory(Of TChannel) _
    Inherits ChannelFactory _
    Implements IChannelFactory(Of TChannel), IChannelFactory,  _
    ICommunicationObject
public class ChannelFactory<TChannel> : ChannelFactory, 
    IChannelFactory<TChannel>, IChannelFactory, ICommunicationObject

Type Parameters

The ChannelFactory<TChannel> type exposes the following members.

Constructors

  Name Description
Public methodSupported by Silverlight for Windows Phone ChannelFactory<TChannel>(String) Initializes a new instance of the ChannelFactory<TChannel> class and configures the endpoint.
Protected method ChannelFactory<TChannel>(Type) Initializes a new instance of the ChannelFactory<TChannel> class.
Public methodSupported by Silverlight for Windows Phone ChannelFactory<TChannel>(Binding, EndpointAddress) Initializes a new instance of the ChannelFactory<TChannel> class with a specified endpoint address and binding configuration.
Public methodSupported by Silverlight for Windows Phone ChannelFactory<TChannel>(String, EndpointAddress) Initializes a new instance of the ChannelFactory<TChannel> class with a specified endpoint address and endpoint configuration.

Top

Properties

  Name Description
Public propertySupported by Silverlight for Windows Phone Credentials Gets the credentials used by clients to communicate a service endpoint over the channels produced by the factory. (Inherited from ChannelFactory.)
Protected propertySupported by Silverlight for Windows Phone DefaultCloseTimeout Gets the default interval of time provided for a close operation to complete. (Inherited from ChannelFactory.)
Protected propertySupported by Silverlight for Windows Phone DefaultOpenTimeout Gets the default interval of time provided for an open operation to complete. (Inherited from ChannelFactory.)
Public propertySupported by Silverlight for Windows Phone Endpoint Gets the service endpoint to which the channels produced by the factory connect. (Inherited from ChannelFactory.)
Protected propertySupported by Silverlight for Windows Phone IsDisposed Gets a value that indicates whether the communication object has been disposed. (Inherited from CommunicationObject.)
Public propertySupported by Silverlight for Windows Phone State Gets a value that indicates the current state of the communication object. (Inherited from CommunicationObject.)
Protected propertySupported by Silverlight for Windows Phone ThisLock Gets the mutually exclusive lock that protects the class instance during a state transition. (Inherited from CommunicationObject.)

Top

Methods

  Name Description
Public methodSupported by Silverlight for Windows Phone Abort Causes a communication object to transition immediately from its current state into the closing state. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone ApplyConfiguration Initializes the channel factory with the behaviors provided by a specified configuration file and with those in the service endpoint of the channel factory. (Inherited from ChannelFactory.)
Public methodSupported by Silverlight for Windows Phone BeginClose(AsyncCallback, Object) Begins an asynchronous operation to close a communication object. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone BeginClose(TimeSpan, AsyncCallback, Object) Begins an asynchronous operation to close a communication object with a specified timeout. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone BeginOpen(AsyncCallback, Object) Begins an asynchronous operation to close a communication object. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone BeginOpen(TimeSpan, AsyncCallback, Object) Begins an asynchronous operation to close a communication object within a specified interval of time. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone Close() Causes a communication object to transition from its current state into the closed state. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone Close(TimeSpan) Causes a communication object to transition from its current state into the closed state within a specified interval of time. (Inherited from CommunicationObject.)
Public method CreateChannel() Creates a channel that is used to send messages to a service.
Public methodSupported by Silverlight for Windows Phone CreateChannel(EndpointAddress) Creates a channel that is used to send messages to a service at a specific endpoint address.
Public methodSupported by Silverlight for Windows Phone CreateChannel(EndpointAddress, Uri) Creates a channel that is used to send messages to a service at a specific endpoint address through a specified transport address.
Protected methodSupported by Silverlight for Windows Phone CreateDescription Creates a description of the service endpoint. (Overrides ChannelFactory.CreateDescription().)
Protected methodSupported by Silverlight for Windows Phone CreateFactory Builds the channel factory for the current endpoint of the factory. (Inherited from ChannelFactory.)
Public methodSupported by Silverlight for Windows Phone EndClose Completes an asynchronous operation to close a communication object. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone EndOpen Completes an asynchronous operation to open a communication object. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone EnsureOpened Opens the current channel factory if it is not yet opened. (Inherited from ChannelFactory.)
Public methodSupported by Silverlight for Windows Phone Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodSupported by Silverlight for Windows Phone Fault Causes a communication object to transition from its current state into the faulted state. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone Finalize Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.)
Protected methodSupported by Silverlight for Windows Phone GetCommunicationObjectType Gets the type of communication object. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public methodSupported by Silverlight for Windows Phone GetProperty<T> Returns the typed object requested, if present, from the appropriate layer in the channel stack, or nulla null reference (Nothing in Visual Basic) if not present. (Inherited from ChannelFactory.)
Public methodSupported by Silverlight for Windows Phone GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method InitializeEndpoint(ServiceEndpoint) Initializes the service endpoint of the channel factory with a specified service endpoint. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone InitializeEndpoint(Binding, EndpointAddress) Initializes the service endpoint of the channel factory with a specified binding and address. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone InitializeEndpoint(String, EndpointAddress) Initializes the service endpoint of the channel factory with a specified address and configuration. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected methodSupported by Silverlight for Windows Phone OnAbort Terminates the inner channel factory of the current channel factory. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnBeginClose Begins an asynchronous close operation on the inner channel factory of the current channel factory that has a state object associated with it. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnBeginOpen Begins an asynchronous open operation on the inner channel factory of the current channel factory that has a state object associated with it. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnClose Calls close on the inner channel factory with a specified time-out for the completion of the operation. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnClosed Invoked during the transition of a communication object into the closing state. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone OnClosing Invoked during the transition of a communication object into the closing state. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone OnEndClose Completes an asynchronous close operation on the inner channel factory of the current channel factory. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnEndOpen Completes an asynchronous open operation on the inner channel factory of the current channel factory. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnFaulted Inserts processing on a communication object after it transitions to the faulted state due to the invocation of a synchronous fault operation. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone OnOpen Calls open on the inner channel factory of the current channel factory with a specified time-out for the completion of the operation. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnOpened Initializes a read-only copy of the ClientCredentials object for the channel factory. (Inherited from ChannelFactory.)
Protected methodSupported by Silverlight for Windows Phone OnOpening Builds the inner channel factory for the current channel. (Inherited from ChannelFactory.)
Public methodSupported by Silverlight for Windows Phone Open() Causes a communication object to transition from the created state into the opened state. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone Open(TimeSpan) Causes a communication object to transition from the created state into the opened state within a specified interval of time. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone ThrowIfDisposed Throws an exception if the communication object is disposed. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone ThrowIfDisposedOrImmutable Throws an exception if the communication object the State property is not set to the Created state. (Inherited from CommunicationObject.)
Protected methodSupported by Silverlight for Windows Phone ThrowIfDisposedOrNotOpen Throws an exception if the communication object is not in the Opened state. (Inherited from CommunicationObject.)
Public methodSupported by Silverlight for Windows Phone ToString Returns a string that represents the current object. (Inherited from Object.)

Top

Events

  Name Description
Public eventSupported by Silverlight for Windows Phone Closed Occurs when a communication object transitions into the closed state. (Inherited from CommunicationObject.)
Public eventSupported by Silverlight for Windows Phone Closing Occurs when a communication object transitions into the closing state. (Inherited from CommunicationObject.)
Public eventSupported by Silverlight for Windows Phone Faulted Occurs when a communication object transitions into the faulted state. (Inherited from CommunicationObject.)
Public eventSupported by Silverlight for Windows Phone Opened Occurs when a communication object transitions into the opened state. (Inherited from CommunicationObject.)
Public eventSupported by Silverlight for Windows Phone Opening Occurs when a communication object transitions into the opening state. (Inherited from CommunicationObject.)

Top

Explicit Interface Implementations

  Name Description
Explicit interface implemetationPrivate methodSupported by Silverlight for Windows Phone IDisposable.Dispose Closes the current channel factory. (Inherited from ChannelFactory.)

Top

Remarks

This generic class enables more advanced scenarios where there is a requirement to create a channel factory that can be used to create more than one type of channel.

Examples


            'Initialize channel factory with a binding and a remote endpoint address.
            Dim binding As New BasicHttpBinding()
            Dim address As New EndpointAddress("https://localhost:8000/ChannelApp")
            Dim factory As New ChannelFactory(Of IRequestChannel)(binding, address)

            Dim channel As IRequestChannel = factory.CreateChannel()
            channel.Open()
            Dim epa As EndpointAddress = channel.RemoteAddress
            Dim via As Uri = channel.Via
            Dim request As Message = Message.CreateMessage(MessageVersion.Soap11, "hello")

            Dim reply As Message = channel.Request(request)
            Console.Out.WriteLine(reply.Headers.Action)
            reply.Close()
            channel.Close()
            factory.Close()


            'Initialize channel factory with a service configuration file.
            Dim factory1 As New ChannelFactory(Of IRequestChannel)("MyEndpointConfig")

            'Initialize channel factory with a service configuration file and a remote endpoint address.
            Dim endpointAddress As New EndpointAddress("https://localhost:8000/ChannelApp")
            Dim factory2 As New ChannelFactory(Of IRequestChannel)("MyEndpointConfig", endpointAddress)

            'Create a request channel specifying a remote endpoint address
            Dim address3 As New EndpointAddress("https://localhost:8000/ChannelApp")
            Dim factory3 As New ChannelFactory(Of IRequestChannel)("MyEndpointConfig")
            factory3.CreateChannel(address3)


            'Create a request channel specifying a remote endpoint address and a transport address.
            Dim address4 As New EndpointAddress("https://localhost:8000/ChannelApp")
            Dim via4 As New Uri("https://localhost:8000/Via")
            Dim factory4 As New ChannelFactory(Of IRequestChannel)("MyEndpointConfig")
            Dim channel4 As IRequestChannel = factory4.CreateChannel(address4, via4)




            //Initialize channel factory with a binding and a remote endpoint address.
            BasicHttpBinding binding = new BasicHttpBinding();
            EndpointAddress address = new EndpointAddress("https://localhost:8000/ChannelApp");
            ChannelFactory<IRequestChannel> factory =
                new ChannelFactory<IRequestChannel>(binding, address);

            IRequestChannel channel = factory.CreateChannel();
            channel.Open();
            EndpointAddress epa = channel.RemoteAddress;
            Uri via = channel.Via;
            Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");

            Message reply = channel.Request(request);
            Console.Out.WriteLine(reply.Headers.Action);
            reply.Close();
            channel.Close();
            factory.Close();


            //Initialize channel factory with a service configuration file.
            ChannelFactory<IRequestChannel> factory1 = new ChannelFactory<IRequestChannel>("MyEndpointConfig");

            //Initialize channel factory with a service configuration file and a remote endpoint address.
            EndpointAddress endpointAddress = new EndpointAddress("https://localhost:8000/ChannelApp");
            ChannelFactory<IRequestChannel> factory2 =
                new ChannelFactory<IRequestChannel>("MyEndpointConfig", endpointAddress);

            //Create a request channel specifying a remote endpoint address
            EndpointAddress address3 = new EndpointAddress("https://localhost:8000/ChannelApp");
            ChannelFactory<IRequestChannel> factory3 = new ChannelFactory<IRequestChannel>("MyEndpointConfig");
            factory3.CreateChannel(address3);


            //Create a request channel specifying a remote endpoint address and a transport address.
            EndpointAddress address4 = new EndpointAddress("https://localhost:8000/ChannelApp");
            Uri via4 = new Uri("https://localhost:8000/Via");
            ChannelFactory<IRequestChannel> factory4 = new ChannelFactory<IRequestChannel>("MyEndpointConfig");
            IRequestChannel channel4 = factory4.CreateChannel(address4, via4);



Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Thread Safety

This type is thread safe.

See Also

Reference