.NET Framework Class Library for Silverlight
ChannelFactory<TChannel> Class
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
Visual Basic (Declaration)
Public Class ChannelFactory(Of TChannel) _ Inherits ChannelFactory _ Implements IChannelFactory(Of TChannel), IChannelFactory, _ ICommunicationObject
C#
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. |
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.) |
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 null 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.) |
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.) |
Explicit Interface Implementations
| Name | Description | |
|---|---|---|
|
IDisposable.Dispose | Closes the current channel factory. (Inherited from ChannelFactory.) |
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
Visual Basic
'Initialize channel factory with a binding and a remote endpoint address. Dim binding As New BasicHttpBinding() Dim address As New EndpointAddress("http://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("http://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("http://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("http://localhost:8000/ChannelApp") Dim via4 As New Uri("http://localhost:8000/Via") Dim factory4 As New ChannelFactory(Of IRequestChannel)("MyEndpointConfig") Dim channel4 As IRequestChannel = factory4.CreateChannel(address4, via4)
C#
//Initialize channel factory with a binding and a remote endpoint address.
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://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("http://localhost:8000/ChannelApp");
ChannelFactory<IRequestChannel> factory2 =
new ChannelFactory<IRequestChannel>("MyEndpointConfig", endpointAddress);
//Create a request channel specifying a remote endpoint address
EndpointAddress address3 = new EndpointAddress("http://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("http://localhost:8000/ChannelApp");
Uri via4 = new Uri("http://localhost:8000/Via");
ChannelFactory<IRequestChannel> factory4 = new ChannelFactory<IRequestChannel>("MyEndpointConfig");
IRequestChannel channel4 = factory4.CreateChannel(address4, via4);
Version Information
Silverlight
Supported in: 5, 4, 3Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0XNA Framework
Supported in: Windows Phone OS 7.0Platforms
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