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
interface ICommunicationObject
interface IChannelFactory<'Channel>
type ChannelFactory<'Channel> = class
inherit ChannelFactory
interface IChannelFactory<'Channel>
interface IChannelFactory
interface ICommunicationObject
Public Class ChannelFactory(Of TChannel)
Inherits ChannelFactory
Implements IChannelFactory(Of TChannel)
Параметры типа
- TChannel
Тип канала, создаваемого фабрикой каналов. Этот тип должен быть либо IOutputChannel, либо IRequestChannel.
- Наследование
- Производный
- Реализации
Примеры
В следующем примере показано создание фабрики каналов и ее использование для создания каналов и управления ими.
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 до создания канала. Пример кода см. в разделе примеров.
Обычно клиенты или вызывающие приложения (например, приложения среднего уровня, также являющиеся клиентскими приложениями), использующие этот тип, имеют не только потребности производительности, но и потребности сложного управления состояниями. Дополнительные сведения об этих сценариях см. в разделе Клиентские приложения среднего уровня.
Конструкторы
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() |
Вызывает переход объекта связи из текущего состояния в состояние Closed. (Унаследовано от CommunicationObject) |
Close(TimeSpan) |
Вызывает переход объекта связи из его текущего состояния в состояние Closed в течение заданного интервала времени. (Унаследовано от 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() |
Вызывает переход объекта связи из текущего состояния в состояние Faulted. (Унаследовано от CommunicationObject) |
GetCommunicationObjectType() |
Возвращает тип объекта связи. (Унаследовано от CommunicationObject) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetProperty<T>() |
Возвращает запрос типизированного объекта, если он имеется, из соответствующего уровня стека каналов или значение |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
InitializeEndpoint(Binding, EndpointAddress) |
Инициализирует конечную точку службы фабрики каналов с заданной привязкой и адресом. (Унаследовано от ChannelFactory) |
InitializeEndpoint(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) |
OnCloseAsync(TimeSpan) |
Фабрика, создающая каналы различных типов, которые используются клиентами для отправки сообщений в конечные точки службы, настроенные по-разному. (Унаследовано от ChannelFactory) |
OnClosed() |
Вызывается в процессе перехода объекта связи в состояние закрытия. (Унаследовано от CommunicationObject) |
OnClosing() |
Вызывается в процессе перехода объекта связи в состояние закрытия. (Унаследовано от CommunicationObject) |
OnEndClose(IAsyncResult) |
Завершает асинхронную операцию закрытия в фабрике внутренний каналов текущей фабрики каналов. (Унаследовано от ChannelFactory) |
OnEndOpen(IAsyncResult) |
Завершает асинхронную операцию открытия в фабрике внутренний каналов текущей фабрики каналов. (Унаследовано от ChannelFactory) |
OnFaulted() |
Вставляет операцию обработки объекта связи после перехода объекта в состояние Faulted в связи с вызовом синхронной операции ошибки. (Унаследовано от CommunicationObject) |
OnOpen(TimeSpan) |
Вызывает операцию открытия в фабрике внутренних каналов текущей фабрики каналов с заданным временем ожидания для завершения операции. (Унаследовано от ChannelFactory) |
OnOpenAsync(TimeSpan) |
Фабрика, создающая каналы различных типов, которые используются клиентами для отправки сообщений в конечные точки службы, настроенные по-разному. (Унаследовано от ChannelFactory) |
OnOpened() |
Инициализирует доступную только для чтения копию объекта ClientCredentials для фабрики каналов. (Унаследовано от ChannelFactory) |
OnOpening() |
Создает фабрику внутренних каналов для текущего канала. (Унаследовано от ChannelFactory) |
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() |
Фабрика, создающая каналы различных типов, которые используются клиентами для отправки сообщений в конечные точки службы, настроенные по-разному. (Унаследовано от ChannelFactory) |
IDisposable.Dispose() |
Закрывает текущую фабрику каналов. (Унаследовано от ChannelFactory) |
Методы расширения
CloseHelperAsync(ICommunicationObject, TimeSpan) |
Фабрика, создающая каналы различных типов, которые используются клиентами для отправки сообщений в конечные точки службы, настроенные по-разному. |
OpenHelperAsync(ICommunicationObject, TimeSpan) |
Фабрика, создающая каналы различных типов, которые используются клиентами для отправки сообщений в конечные точки службы, настроенные по-разному. |
GetInternalCloseTimeout(CommunicationObject) |
Фабрика, создающая каналы различных типов, которые используются клиентами для отправки сообщений в конечные точки службы, настроенные по-разному. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Настраивает способ выполнения ожиданий для задач, возвращаемых из асинхронного высвобождаемого объекта. |
Применяется к
Потокобезопасность
Данный тип потокобезопасен.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по