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 IChannelFactory
interface ICommunicationObject
interface IDisposable
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
всегда приводит к анонимному входу, независимо от уровня олицетворения.
Особое примечание для пользователей управляемого кода C++, создающих классы, унаследованные от данного.
Поместите код очистки в блок (On)(Begin)Close (или OnAbort), а не в деструктор.
Избегайте использования деструкторов, поскольку они приводят к тому, что компилятор автоматически создает IDisposable.
Избегайте использования нессылочных членов, поскольку они приводят к тому, что компилятор автоматически создает IDisposable.
Избегайте использования метода завершения. При включении этого метода необходимо подавить предупреждение построения и вызвать SuppressFinalize(Object) и сам метод завершения из блока (On)(Begin)Close (или 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() |
Вызывает переход объекта связи из текущего состояния в состояние Closed. (Унаследовано от CommunicationObject) |
Close(TimeSpan) |
Вызывает переход объекта связи из его текущего состояния в состояние Closed в течение заданного интервала времени. (Унаследовано от CommunicationObject) |
CreateDescription() |
Если реализован в производном классе, создает описание конечной точки службы, связанной с фабрикой каналов. |
CreateFactory() |
Создает фабрику каналов для текущей конечной точки фабрики. |
EndClose(IAsyncResult) |
Завершает асинхронную операцию закрытия объекта связи. (Унаследовано от CommunicationObject) |
EndOpen(IAsyncResult) |
Завершает асинхронную операцию открытия объекта связи. (Унаследовано от CommunicationObject) |
EnsureOpened() |
Открывает текущую фабрику каналов, если она еще не открыта. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Fault() |
Вызывает переход объекта связи из текущего состояния в состояние Faulted. (Унаследовано от CommunicationObject) |
GetCommunicationObjectType() |
Возвращает тип объекта связи. (Унаследовано от CommunicationObject) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetProperty<T>() |
Возвращает запрос типизированного объекта, если он имеется, из соответствующего уровня стека каналов или значение |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
InitializeEndpoint(Binding, EndpointAddress) |
Инициализирует конечную точку службы фабрики каналов с заданной привязкой и адресом. |
InitializeEndpoint(EndpointAddress) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. |
InitializeEndpoint(ServiceEndpoint) |
Инициализирует конечную точка службы фабрики каналов с заданной конечной точкой. |
InitializeEndpoint(String, EndpointAddress) |
Инициализирует конечную точку службы фабрики каналов с заданным адресом и конфигурацией. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
OnAbort() |
Завершает работу фабрики внутренних каналов текущей фабрики каналов. |
OnBeginClose(TimeSpan, AsyncCallback, Object) |
Начинает асинхронную операцию закрытия в фабрике внутренних каналов текущей фабрики каналов, содержащей объект состояния, связанный с ней. |
OnBeginOpen(TimeSpan, AsyncCallback, Object) |
Начинает асинхронную операцию открытия в фабрике внутренних каналов текущей фабрики каналов, содержащей объект состояния, связанный с ней. |
OnClose(TimeSpan) |
Вызывает операцию закрытия в фабрике внутренних каналов с заданным временем ожидания для завершения операции. |
OnCloseAsync(TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. |
OnCloseAsync(TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. (Унаследовано от CommunicationObject) |
OnClosed() |
Вызывается в процессе перехода объекта связи в состояние закрытия. (Унаследовано от CommunicationObject) |
OnClosing() |
Вызывается в процессе перехода объекта связи в состояние закрытия. (Унаследовано от CommunicationObject) |
OnEndClose(IAsyncResult) |
Завершает асинхронную операцию закрытия в фабрике внутренний каналов текущей фабрики каналов. |
OnEndOpen(IAsyncResult) |
Завершает асинхронную операцию открытия в фабрике внутренний каналов текущей фабрики каналов. |
OnFaulted() |
Вставляет операцию обработки объекта связи после перехода объекта в состояние Faulted в связи с вызовом синхронной операции ошибки. (Унаследовано от CommunicationObject) |
OnOpen(TimeSpan) |
Вызывает операцию открытия в фабрике внутренних каналов текущей фабрики каналов с заданным временем ожидания для завершения операции. |
OnOpenAsync(TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. |
OnOpenAsync(TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. (Унаследовано от CommunicationObject) |
OnOpened() |
Инициализирует доступную только для чтения копию объекта ClientCredentials для фабрики каналов. |
OnOpening() |
Создает фабрику внутренних каналов для текущего канала. |
Open() |
Вызывает переход объекта связи из состояния Created в состояние Opened. (Унаследовано от CommunicationObject) |
Open(TimeSpan) |
Вызывает переход объекта связи из состояния Created в состояние Opened в течение заданного интервала времени. (Унаследовано от CommunicationObject) |
ThrowIfDisposed() |
Вызывает исключение, если объект связи удален. (Унаследовано от CommunicationObject) |
ThrowIfDisposedOrImmutable() |
Создает исключение, если для свойства объекта связи State не установлено значение Created. (Унаследовано от CommunicationObject) |
ThrowIfDisposedOrNotOpen() |
Создает исключение, если объект связи не находится в состоянии Opened. (Унаследовано от CommunicationObject) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
События
Closed |
Происходит при переходе объекта связи в состояние Closed. (Унаследовано от CommunicationObject) |
Closing |
Происходит при переходе объекта связи в состояние закрытия. (Унаследовано от CommunicationObject) |
Faulted |
Происходит при переходе объекта связи в состояние Faulted. (Унаследовано от CommunicationObject) |
Opened |
Происходит при переходе объекта связи в состояние Opened. (Унаследовано от CommunicationObject) |
Opening |
Происходит при переходе объекта связи в состояние открытия. (Унаследовано от CommunicationObject) |
Явные реализации интерфейса
IAsyncCommunicationObject.CloseAsync(TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. (Унаследовано от CommunicationObject) |
IAsyncCommunicationObject.OpenAsync(TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. (Унаследовано от CommunicationObject) |
IAsyncDisposable.DisposeAsync() |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. |
IDisposable.Dispose() |
Закрывает текущую фабрику каналов. |
Методы расширения
CloseHelperAsync(ICommunicationObject, TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. |
GetInternalCloseTimeout(CommunicationObject) |
Создает и управляет каналами, которые используются клиентами для отправки сообщений в конечные точки службы. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Настраивает способ выполнения ожиданий для задач, возвращаемых из асинхронного высвобождаемого объекта. |
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по