Поделиться через


ChannelFactory<TChannel> Класс

Определение

Фабрика, которая создает каналы различных типов, которые используются клиентами для отправки сообщений в различные настроенные конечные точки службы.

generic <typename TChannel>
public ref class ChannelFactory : System::ServiceModel::ChannelFactory, System::ServiceModel::Channels::IChannelFactory<TChannel>
public class ChannelFactory<TChannel> : System.ServiceModel.ChannelFactory, System.ServiceModel.Channels.IChannelFactory<TChannel>
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory<'Channel>
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory<'Channel> = class
    inherit ChannelFactory
    interface IChannelFactory
    interface ICommunicationObject
    interface IChannelFactory<'Channel>
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)

Параметры типа

TChannel

Тип канала, созданного фабрикой каналов. Этот тип должен быть либо IOutputChannel, либо IRequestChannel.

Наследование
ChannelFactory<TChannel>
Производный
Реализации

Примеры

В следующем примере показано, как создать фабрику каналов и использовать ее для создания каналов и управления ими.

    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();
    Message request = Message.CreateMessage(MessageVersion.Soap11, "hello");
    Message reply = channel.Request(request);
    Console.Out.WriteLine(reply.Headers.Action);
    reply.Close();
    channel.Close();
    factory.Close();
}

В следующем примере кода показано, как программно вставить поведение клиента до создания объекта канала фабрикой.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage);
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
  Public Shared Sub Main()
    Try
      ' Picks up configuration from the config file.
      Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

      ' Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

      Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()

      ' Done with service. 
      wcfClientChannel.Close()
      Console.WriteLine("Done!")
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      Console.Read()
    Catch fault As FaultException(Of SampleFault)
      Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
      Console.Read()
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message)
      Console.Read()
    End Try
  End Sub

Комментарии

Этот универсальный класс позволяет более сложным сценариям, где существует требование создать фабрику каналов, которую можно использовать для создания нескольких типов каналов.

При программном добавлении поведения поведение добавляется в соответствующее свойство Behaviors на ChannelFactory до создания любого канала. См. пример раздела кода.

Часто клиентские или вызывающие приложения (например, приложения среднего уровня также являются клиентскими приложениями) с использованием этого типа также имеют сложные потребности в управлении состояниями, а также потребности в производительности. Дополнительные сведения об этих сценариях см. в Middle-Tier клиентских приложениях.

Конструкторы

ChannelFactory<TChannel>()

Инициализирует новый экземпляр класса ChannelFactory<TChannel>.

ChannelFactory<TChannel>(Binding)

Инициализирует новый экземпляр класса ChannelFactory<TChannel>.

ChannelFactory<TChannel>(Binding, EndpointAddress)

Инициализирует новый экземпляр класса ChannelFactory<TChannel> с указанным адресом привязки и конечной точки.

ChannelFactory<TChannel>(Binding, String)

Инициализирует новый экземпляр класса ChannelFactory<TChannel> с указанным привязкой и удаленным адресом.

ChannelFactory<TChannel>(ServiceEndpoint)

Инициализирует новый экземпляр класса ChannelFactory<TChannel>, который создает каналы с указанной конечной точкой.

ChannelFactory<TChannel>(String)

Инициализирует новый экземпляр класса ChannelFactory<TChannel> с указанным именем конфигурации конечной точки.

ChannelFactory<TChannel>(String, EndpointAddress)

Инициализирует новый экземпляр класса ChannelFactory<TChannel>, связанного с указанным именем для конфигурации конечной точки и удаленного адреса.

ChannelFactory<TChannel>(Type)

Инициализирует новый экземпляр класса ChannelFactory<TChannel>.

Свойства

Credentials

Возвращает учетные данные, используемые клиентами для обмена данными конечной точки службы по каналам, созданным фабрикой.

(Унаследовано от ChannelFactory)
DefaultCloseTimeout

Возвращает интервал времени по умолчанию, предоставленный для завершения операции закрытия.

(Унаследовано от ChannelFactory)
DefaultOpenTimeout

Возвращает интервал времени по умолчанию, предоставленный для завершения открытой операции.

(Унаследовано от ChannelFactory)
Endpoint

Возвращает конечную точку службы, к которой подключаются каналы, созданные фабрикой.

(Унаследовано от ChannelFactory)
IsDisposed

Возвращает значение, указывающее, был ли удален объект связи.

(Унаследовано от CommunicationObject)
State

Возвращает значение, указывающее текущее состояние объекта связи.

(Унаследовано от CommunicationObject)
ThisLock

Получает взаимоисключающую блокировку, которая защищает экземпляр класса во время перехода состояния.

(Унаследовано от CommunicationObject)

Методы

Abort()

Вызывает немедленное переход объекта связи из текущего состояния в закрывающемся состоянии.

(Унаследовано от CommunicationObject)
ApplyConfiguration(String)

Инициализирует фабрику каналов с поведением, предоставляемым указанным файлом конфигурации, и с теми, которые указаны в конечной точке службы фабрики каналов.

(Унаследовано от ChannelFactory)
BeginClose(AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта связи.

(Унаследовано от CommunicationObject)
BeginClose(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию закрытия объекта связи с заданным временем ожидания.

(Унаследовано от CommunicationObject)
BeginOpen(AsyncCallback, Object)

Начинает асинхронную операцию для открытия объекта связи.

(Унаследовано от CommunicationObject)
BeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию открытия объекта связи в течение указанного интервала времени.

(Унаследовано от CommunicationObject)
Close()

Вызывает переход объекта связи из текущего состояния в закрытое состояние.

(Унаследовано от CommunicationObject)
Close(TimeSpan)

Вызывает переход объекта связи из текущего состояния в закрытое состояние в течение указанного интервала времени.

(Унаследовано от CommunicationObject)
CreateChannel()

Создает канал указанного типа в указанный адрес конечной точки.

CreateChannel(Binding, EndpointAddress)

Создает канал указанного типа, который используется для отправки сообщений в конечную точку службы, настроенную с указанной привязкой.

CreateChannel(Binding, EndpointAddress, Uri)

Создает канал указанного типа, который используется для отправки сообщений в конечную точку службы по указанному адресу транспорта, настроенном с указанной привязкой.

CreateChannel(EndpointAddress)

Создает канал, используемый для отправки сообщений в службу по определенному адресу конечной точки.

CreateChannel(EndpointAddress, Uri)

Создает канал, который используется для отправки сообщений в службу по определенному адресу конечной точки через указанный транспортный адрес.

CreateChannel(String)

Создает канал, используемый для отправки сообщений в службу, конечная точка которой настроена определенным образом.

CreateChannelWithActAsToken(SecurityToken)

Создает канал, используемый для отправки сообщений в службу с помощью маркера безопасности.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress)

Создает канал, используемый для отправки сообщений в службу с помощью маркера безопасности в определенном адресе конечной точки.

CreateChannelWithActAsToken(SecurityToken, EndpointAddress, Uri)

Создает канал, используемый для отправки сообщений в службу с помощью маркера безопасности в определенном адресе конечной точки с помощью указанного транспортного адреса.

CreateChannelWithIssuedToken(SecurityToken)

Создает канал, используемый для отправки сообщений в службу с выданным маркером безопасности.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress)

Создает канал, который используется для отправки сообщений в службу с выданным маркером безопасности по определенному адресу конечной точки.

CreateChannelWithIssuedToken(SecurityToken, EndpointAddress, Uri)

Создает канал, который используется для отправки сообщений в службу с выданным маркером безопасности по определенному адресу конечной точки через указанный адрес транспорта.

CreateChannelWithOnBehalfOfToken(SecurityToken)

Создает канал, используемый для отправки сообщений в службу от имени маркера безопасности.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress)

Создает канал, используемый для отправки сообщений в службу от имени маркера безопасности по определенному адресу конечной точки.

CreateChannelWithOnBehalfOfToken(SecurityToken, EndpointAddress, Uri)

Создает канал, который используется для отправки сообщений в службу от имени маркера безопасности по определенному адресу конечной точки через указанный транспортный адрес.

CreateDescription()

Создает описание конечной точки службы.

CreateFactory()

Создает фабрику каналов для текущей конечной точки фабрики.

(Унаследовано от ChannelFactory)
EndClose(IAsyncResult)

Завершает асинхронную операцию закрытия объекта связи.

(Унаследовано от CommunicationObject)
EndOpen(IAsyncResult)

Завершает асинхронную операцию для открытия объекта связи.

(Унаследовано от CommunicationObject)
EnsureOpened()

Открывает текущую фабрику каналов, если она еще не открыта.

(Унаследовано от ChannelFactory)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Fault()

Вызывает переход объекта связи из текущего состояния в состояние сбоя.

(Унаследовано от CommunicationObject)
GetCommunicationObjectType()

Возвращает тип объекта связи.

(Унаследовано от CommunicationObject)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetProperty<T>()

Возвращает запрошенный типизированный объект( если он присутствует) из соответствующего слоя в стеке каналов или null, если он отсутствует.

(Унаследовано от ChannelFactory)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeEndpoint(Binding, EndpointAddress)

Инициализирует конечную точку службы фабрики каналов с указанными привязками и адресом.

(Унаследовано от ChannelFactory)
InitializeEndpoint(ServiceEndpoint)

Инициализирует конечную точку службы фабрики каналов с указанной конечной точкой.

(Унаследовано от ChannelFactory)
InitializeEndpoint(String, EndpointAddress)

Инициализирует конечную точку службы фабрики каналов с указанным адресом и конфигурацией.

(Унаследовано от ChannelFactory)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnAbort()

Завершает внутреннюю фабрику каналов текущей фабрики каналов.

(Унаследовано от ChannelFactory)
OnBeginClose(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию закрытия на внутренней фабрике каналов текущей фабрики каналов с объектом состояния, связанным с ним.

(Унаследовано от ChannelFactory)
OnBeginOpen(TimeSpan, AsyncCallback, Object)

Начинает асинхронную операцию открытия на внутренней фабрике каналов текущей фабрики каналов, которая имеет объект состояния, связанный с ним.

(Унаследовано от ChannelFactory)
OnClose(TimeSpan)

Вызовы закрываются на внутренней фабрике каналов с указанным временем ожидания для завершения операции.

(Унаследовано от ChannelFactory)
OnClosed()

Вызывается во время перехода объекта связи в закрываемое состояние.

(Унаследовано от CommunicationObject)
OnClosing()

Вызывается во время перехода объекта связи в закрываемое состояние.

(Унаследовано от CommunicationObject)
OnEndClose(IAsyncResult)

Завершает асинхронную операцию закрытия на внутренней фабрике каналов текущей фабрики каналов.

(Унаследовано от ChannelFactory)
OnEndOpen(IAsyncResult)

Завершает асинхронную операцию открытия на внутренней фабрике каналов текущей фабрики каналов.

(Унаследовано от ChannelFactory)
OnFaulted()

Вставляет обработку в объект связи после перехода в состояние сбоя из-за вызова синхронной операции сбоя.

(Унаследовано от CommunicationObject)
OnOpen(TimeSpan)

Вызовы открываются на внутренней фабрике каналов текущей фабрики каналов с указанным временем ожидания для завершения операции.

(Унаследовано от ChannelFactory)
OnOpened()

Инициализирует копию объекта ClientCredentials только для чтения для фабрики каналов.

(Унаследовано от ChannelFactory)
OnOpening()

Создает внутреннюю фабрику каналов для текущего канала.

(Унаследовано от ChannelFactory)
Open()

Вызывает переход объекта связи из созданного состояния в открытое состояние.

(Унаследовано от CommunicationObject)
Open(TimeSpan)

Вызывает переход объекта связи из созданного состояния в открытое состояние в течение указанного интервала времени.

(Унаследовано от CommunicationObject)
ThrowIfDisposed()

Создает исключение, если объект связи удаляется.

(Унаследовано от CommunicationObject)
ThrowIfDisposedOrImmutable()

Создает исключение, если объект связи State свойству не задано состояние Created.

(Унаследовано от CommunicationObject)
ThrowIfDisposedOrNotOpen()

Создает исключение, если объект связи не находится в состоянии Opened.

(Унаследовано от CommunicationObject)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

События

Closed

Происходит при переходе объекта связи в закрытое состояние.

(Унаследовано от CommunicationObject)
Closing

Происходит при переходе объекта связи в состояние закрытия.

(Унаследовано от CommunicationObject)
Faulted

Происходит при переходе объекта связи в состояние сбоя.

(Унаследовано от CommunicationObject)
Opened

Происходит при переходе объекта связи в открытое состояние.

(Унаследовано от CommunicationObject)
Opening

Происходит при переходе объекта связи в открытое состояние.

(Унаследовано от CommunicationObject)

Явные реализации интерфейса

IAsyncDisposable.DisposeAsync()

Фабрика, которая создает каналы различных типов, которые используются клиентами для отправки сообщений в различные настроенные конечные точки службы.

(Унаследовано от ChannelFactory)
IDisposable.Dispose()

Закрывает текущую фабрику каналов.

(Унаследовано от ChannelFactory)

Методы расширения

ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ ожидания задач, возвращаемых из асинхронного удаления.

Применяется к

Потокобезопасность

Этот тип является потокобезопасной.