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


ChannelFactory Класс

Определение

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

public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IDisposable, System::ServiceModel::Channels::IChannelFactory
public ref class ChannelFactory abstract : System::ServiceModel::Channels::CommunicationObject, IAsyncDisposable, IDisposable, System::ServiceModel::Channels::IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IDisposable, System.ServiceModel.Channels.IChannelFactory
public abstract class ChannelFactory : System.ServiceModel.Channels.CommunicationObject, IAsyncDisposable, IDisposable, System.ServiceModel.Channels.IChannelFactory
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
type ChannelFactory = class
    inherit CommunicationObject
    interface IDisposable
    interface IChannelFactory
    interface ICommunicationObject
    interface IAsyncDisposable
type ChannelFactory = class
    inherit CommunicationObject
    interface IChannelFactory
    interface ICommunicationObject
    interface IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IChannelFactory, IDisposable
Public MustInherit Class ChannelFactory
Inherits CommunicationObject
Implements IAsyncDisposable, IChannelFactory, IDisposable
Наследование
ChannelFactory
Производный
Реализации

Примеры

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

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

Комментарии

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

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

Заметка

Установка ChannelFactory.Credentials.Windows.AllowedImpersonationLevel для TokenImpersonationLevel.Anonymous всегда приводит к анонимному входу независимо от уровня олицетворения.

Специальное примечание для пользователей Managed C++, производных от этого класса:

  • Поместите код очистки в (On)(Begin)Close (and/or OnAbort), а не в деструктор.

  • Избегайте деструкторов; они вызывают автоматическое создание IDisposableкомпилятором.

  • Избегайте элементов без ссылок; они могут вызвать автоматическое создание IDisposableкомпилятором.

  • Избегайте использования средства завершения; но если включить его, необходимо отключить предупреждение сборки и вызвать SuppressFinalize(Object) и сам метод завершения из (On)(Begin)Close (and/or OnAbort), чтобы эмулировать то, что было бы автоматически созданным IDisposable поведением.

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

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

ChannelFactory()

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

Свойства

Credentials

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

DefaultCloseTimeout

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

DefaultOpenTimeout

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

Endpoint

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

IsDisposed

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

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

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

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

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

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

Методы

Abort()

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

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

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

BeginClose(AsyncCallback, Object)

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

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

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

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

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

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

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

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

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

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

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

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

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

CreateFactory()

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

EndClose(IAsyncResult)

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

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

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

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

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

Equals(Object)

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

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

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

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

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

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

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

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

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

GetType()

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

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

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

InitializeEndpoint(ServiceEndpoint)

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

InitializeEndpoint(String, EndpointAddress)

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

MemberwiseClone()

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

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

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

OnBeginClose(TimeSpan, AsyncCallback, Object)

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

OnBeginOpen(TimeSpan, AsyncCallback, Object)

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

OnClose(TimeSpan)

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

OnClosed()

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

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

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

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

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

OnEndOpen(IAsyncResult)

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

OnFaulted()

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

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

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

OnOpened()

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

OnOpening()

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

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()

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

IDisposable.Dispose()

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

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

ConfigureAwait(IAsyncDisposable, Boolean)

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

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