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
- TChannel
The type of channel produced by the channel factory. This type must be either IOutputChannel or IRequestChannel.
The ChannelFactory<TChannel> type exposes the following members.
Constructors
Name | Description | |
---|---|---|
ChannelFactory<TChannel>(String) | Initializes a new instance of the ChannelFactory<TChannel> class and configures the endpoint. | |
ChannelFactory<TChannel>(Type) | Initializes a new instance of the ChannelFactory<TChannel> class. | |
ChannelFactory<TChannel>(Binding, EndpointAddress) | Initializes a new instance of the ChannelFactory<TChannel> class with a specified endpoint address and binding configuration. | |
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 | |
---|---|---|
Credentials | Gets the credentials used by clients to communicate a service endpoint over the channels produced by the factory. (Inherited from ChannelFactory.) | |
DefaultCloseTimeout | Gets the default interval of time provided for a close operation to complete. (Inherited from ChannelFactory.) | |
DefaultOpenTimeout | Gets the default interval of time provided for an open operation to complete. (Inherited from ChannelFactory.) | |
Endpoint | Gets the service endpoint to which the channels produced by the factory connect. (Inherited from ChannelFactory.) | |
IsDisposed | Gets a value that indicates whether the communication object has been disposed. (Inherited from CommunicationObject.) | |
State | Gets a value that indicates the current state of the communication object. (Inherited from CommunicationObject.) | |
ThisLock | Gets the mutually exclusive lock that protects the class instance during a state transition. (Inherited from CommunicationObject.) |
Top
Methods
Name | Description | |
---|---|---|
Abort | Causes a communication object to transition immediately from its current state into the closing state. (Inherited from CommunicationObject.) | |
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.) | |
BeginClose(AsyncCallback, Object) | Begins an asynchronous operation to close a communication object. (Inherited from CommunicationObject.) | |
BeginClose(TimeSpan, AsyncCallback, Object) | Begins an asynchronous operation to close a communication object with a specified timeout. (Inherited from CommunicationObject.) | |
BeginOpen(AsyncCallback, Object) | Begins an asynchronous operation to close a communication object. (Inherited from CommunicationObject.) | |
BeginOpen(TimeSpan, AsyncCallback, Object) | Begins an asynchronous operation to close a communication object within a specified interval of time. (Inherited from CommunicationObject.) | |
Close() | Causes a communication object to transition from its current state into the closed state. (Inherited from CommunicationObject.) | |
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.) | |
CreateChannel() | Creates a channel that is used to send messages to a service. | |
CreateChannel(EndpointAddress) | Creates a channel that is used to send messages to a service at a specific endpoint address. | |
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. | |
CreateDescription | Creates a description of the service endpoint. (Overrides ChannelFactory.CreateDescription().) | |
CreateFactory | Builds the channel factory for the current endpoint of the factory. (Inherited from ChannelFactory.) | |
EndClose | Completes an asynchronous operation to close a communication object. (Inherited from CommunicationObject.) | |
EndOpen | Completes an asynchronous operation to open a communication object. (Inherited from CommunicationObject.) | |
EnsureOpened | Opens the current channel factory if it is not yet opened. (Inherited from ChannelFactory.) | |
Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
Fault | Causes a communication object to transition from its current state into the faulted state. (Inherited from CommunicationObject.) | |
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.) | |
GetCommunicationObjectType | Gets the type of communication object. (Inherited from CommunicationObject.) | |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
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.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
InitializeEndpoint(ServiceEndpoint) | Initializes the service endpoint of the channel factory with a specified service endpoint. (Inherited from ChannelFactory.) | |
InitializeEndpoint(Binding, EndpointAddress) | Initializes the service endpoint of the channel factory with a specified binding and address. (Inherited from ChannelFactory.) | |
InitializeEndpoint(String, EndpointAddress) | Initializes the service endpoint of the channel factory with a specified address and configuration. (Inherited from ChannelFactory.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
OnAbort | Terminates the inner channel factory of the current channel factory. (Inherited from ChannelFactory.) | |
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.) | |
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.) | |
OnClose | Calls close on the inner channel factory with a specified time-out for the completion of the operation. (Inherited from ChannelFactory.) | |
OnClosed | Invoked during the transition of a communication object into the closing state. (Inherited from CommunicationObject.) | |
OnClosing | Invoked during the transition of a communication object into the closing state. (Inherited from CommunicationObject.) | |
OnEndClose | Completes an asynchronous close operation on the inner channel factory of the current channel factory. (Inherited from ChannelFactory.) | |
OnEndOpen | Completes an asynchronous open operation on the inner channel factory of the current channel factory. (Inherited from ChannelFactory.) | |
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.) | |
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.) | |
OnOpened | Initializes a read-only copy of the ClientCredentials object for the channel factory. (Inherited from ChannelFactory.) | |
OnOpening | Builds the inner channel factory for the current channel. (Inherited from ChannelFactory.) | |
Open() | Causes a communication object to transition from the created state into the opened state. (Inherited from CommunicationObject.) | |
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.) | |
ThrowIfDisposed | Throws an exception if the communication object is disposed. (Inherited from CommunicationObject.) | |
ThrowIfDisposedOrImmutable | Throws an exception if the communication object the State property is not set to the Created state. (Inherited from CommunicationObject.) | |
ThrowIfDisposedOrNotOpen | Throws an exception if the communication object is not in the Opened state. (Inherited from CommunicationObject.) | |
ToString | Returns a string that represents the current object. (Inherited from Object.) |
Top
Events
Name | Description | |
---|---|---|
Closed | Occurs when a communication object transitions into the closed state. (Inherited from CommunicationObject.) | |
Closing | Occurs when a communication object transitions into the closing state. (Inherited from CommunicationObject.) | |
Faulted | Occurs when a communication object transitions into the faulted state. (Inherited from CommunicationObject.) | |
Opened | Occurs when a communication object transitions into the opened state. (Inherited from CommunicationObject.) | |
Opening | Occurs when a communication object transitions into the opening state. (Inherited from CommunicationObject.) |
Top
Explicit Interface Implementations
Name | Description | |
---|---|---|
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.