ChannelFactory 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建和管理客户端用于将消息发送到服务终结点的通道。
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
始终会导致匿名登录,而不考虑模拟级别。
从此类派生的托管C++用户的特殊说明:
将清理代码置于 (On)(Begin)Close(and/或 OnAbort),而不是析构函数中。
避免析构函数;它们会导致编译器自动生成 IDisposable。
避免非引用成员;它们可能导致编译器自动生成 IDisposable。
避免使用终结器;但是,如果包含生成警告,则应禁止生成警告并调用 SuppressFinalize(Object) 和终结器本身(On)(Begin)Close(和/或 OnAbort)来模拟自动生成 IDisposable 行为是什么。
以编程方式添加行为时,在创建任何通道之前,该行为将添加到 ChannelFactory 上的相应 Behaviors
属性。 请参阅代码示例的示例部分。
构造函数
ChannelFactory() |
初始化 ChannelFactory 类的新实例。 |
属性
Credentials |
获取客户端用来通过工厂生成的通道进行通信服务终结点的凭据。 |
DefaultCloseTimeout |
获取为完成关闭操作提供的默认时间间隔。 |
DefaultOpenTimeout |
获取为打开操作完成提供的默认时间间隔。 |
Endpoint |
获取工厂所生成的通道连接到的服务终结点。 |
IsDisposed |
获取一个值,该值指示是否已释放通信对象。 (继承自 CommunicationObject) |
State |
获取一个值,该值指示通信对象的当前状态。 (继承自 CommunicationObject) |
ThisLock |
获取在状态转换期间保护类实例的互斥锁。 (继承自 CommunicationObject) |
方法
事件
Closed |
当通信对象转换为关闭状态时发生。 (继承自 CommunicationObject) |
Closing |
当通信对象转换为结束状态时发生。 (继承自 CommunicationObject) |
Faulted |
当通信对象转换为错误状态时发生。 (继承自 CommunicationObject) |
Opened |
当通信对象转换为打开状态时发生。 (继承自 CommunicationObject) |
Opening |
当通信对象转换为打开状态时发生。 (继承自 CommunicationObject) |
显式接口实现
IAsyncDisposable.DisposeAsync() |
创建和管理客户端用于将消息发送到服务终结点的通道。 |
IDisposable.Dispose() |
关闭当前通道工厂。 |
扩展方法
ConfigureAwait(IAsyncDisposable, Boolean) |
配置如何执行从异步可释放项返回的任务的 await。 |