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
- Наследование
- Производный
- Реализации
Примеры
В следующем примере кода показано, как программно вставить поведение клиента до создания объекта канала фабрикой.
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>() |
Возвращает запрошенный типизированный объект( если он присутствует) из соответствующего слоя в стеке каналов или |
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) |
Настраивает способ ожидания задач, возвращаемых из асинхронного удаления. |