WCF 项目应用连载[5] - 自定义配置 扩展ChannelFactory<T> - LDuplex<T>

本文介绍如何扩展WCF的ChannelFactory,详细讲解了客户端配置,包括绑定、行为等内容,并阐述了重写CreateDescription方法以加入client、bindings和behaviors信息的过程。
摘要由CSDN通过智能技术生成
前面我们扩展了ServiceHost,这节我们将扩展ChannelFactory

扩展2个类


public class LChannelFactory<T> : ChannelFactory<T>
public class LDuplex<T> : DuplexChannelFactory<T>


由于 DuplexChannelFactory<T>继承了 ChannelFactory<T>
本节我们以扩展DuplexChannelFactory<T>为例进行说明。

当然,别担心,这两个类的扩展我们都会提供源代码。

一个LDuplex<T> + LChannelFactory<T>


5.1 客户端配置文件 App.config



1)要真正讲扩展ChannelFactory之前,我还还是来了解下,我们ChannelFactory扩展操作了哪些参数。所以,与ServiceHost一样,先了解配置。

2)这儿也是一个App.config
在一定程度上,WCF是依赖于配置的编程,即便我们可以以编码的方式添加WCF运行参数。
如图5.1.1所示。

客户端配置非常简单,甚至连行为配置behaviorConfiguration也可为空。但此处我们为了完整的说明客户商端配置。我们采用图 5.1.2去解释客户端完整的配置。



5.1.1客户端配置



5.2 完整的客户端配置文件 App.config



客户端配置由三部分关键信息组成:
Client : 含endpoint节点的客户端通信信息
Bindings: 绑定参数。主要是TCP通信控制参数,为client中的endpoint信息服务。
Behaviors: 行为。为client中的endpoint信息服务。

还记不记得我们的服务端的配置

服务 – 绑定 – 行为

客户 – 绑定 – 行为




有了这样的对比,只是这儿从服务变成了客户。我们基本清楚了ChannelFactory要做一些什么工作。
你可能猜测,这个ChannelFactory类是不是也得有一个

protected virtual void ApplyConfiguration();

方法来对配置进行操作,而我们只需要重写ApplyConfiguration就可以了?

你猜得没错。的确。ChannelFactory类有这样的方法存在:
protected virtual void ApplyConfiguration(string configurationName);

不过,我们在 ChannelFactory 中的确要重写基类的这个方法,但还要重写另外一个方法:
protected override ServiceEndpoint CreateDescription();

这是因为,可能有很多endpoint,我们需要将每一个endpoint信息加入到 ServiceEndpoint


5.2.1客户端完整配置

现在。我们的问题清楚了。我们要重写CreateDescription方法,并加入client信息,bindings信息与behaviors信息。这样我们将达成最初的设想。

回过头来,看前面提到的

public class LChannelFactory<T> : ChannelFactory<T>
public class LDuplex<T> : DuplexChannelFactory<T>


public class LChannelFactory<T> : ChannelFactory<T>
public class LDuplex<T> : DuplexChannelFactory<T>


你的想法是对了。这儿一个用来单向通信,DuplexChannelFactory则是双向通信的。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Visual Studio 中创建 WCF 服务时,有两种项目类型可供选择:WCF 服务应用程序和 WCF 服务库。这两种项目类型有以下区别: 1. WCF 服务应用程序是一种可执行文件,它包含了一个独立的 WCF 服务宿主。这意味着您可以直接运行 WCF 服务应用程序,并使用其自带的服务宿主来运行和测试您的 WCF 服务。当您部署 WCF 服务时,您可以将 WCF 服务应用程序部署到 IIS 或自定义的 Windows 服务中。 2. WCF 服务库是一种库项目,它包含了一个或多个 WCF 服务契约和实现类。这意味着您必须将 WCF 服务库引用到另一个托管应用程序中,然后手动配置应用程序的服务宿主来运行和测试您的 WCF 服务。当您部署 WCF 服务时,您可以将 WCF 服务库部署到 IIS 中,但必须将其部署为 WCF 服务应用程序的一部分。 3. WCF 服务应用程序和 WCF 服务库的项目结构也不同。WCF 服务应用程序包含了一个 .svc 文件和一个 Web.config 配置文件,用于配置 WCF 服务宿主和服务终结点。而 WCF 服务库只包含 WCF 服务契约和实现类,这些类通常包含在一个或多个 .cs 文件中。 4. 在使用 WCF 服务应用程序时,您可以使用 Visual Studio 自带的 WCF 测试客户端来测试您的 WCF 服务。而在使用 WCF 服务库时,您必须手动编写测试客户端或使用第三方测试工具来测试您的 WCF 服务。 总之,WCF 服务应用程序是一种独立的 WCF 服务宿主,适用于独立运行和测试 WCF 服务。而 WCF 服务库则是一种库项目,适用于将 WCF 服务集成到其他托管应用程序中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值