我最近一直在自学有关 WCF 的知识,甚至使用 WCF 编写了一些生产服务。但直到最近,我才真正对 WCF 进行过深入研究。
我知道“代理”设计模式的想法。我也知道在 ASMX Web 服务中使用代理。但是我很难理解 WCF 代理是什么以及它是如何使用的。我已经彻底查看了有关 WCF 的 MSDN 文档,但我仍然没有掌握将代理与 WCF 服务一起使用的总体情况。
我最近一直在自学有关 WCF 的知识,甚至使用 WCF 编写了一些生产服务。但直到最近,我才真正对 WCF 进行过深入研究。
我知道“代理”设计模式的想法。我也知道在 ASMX Web 服务中使用代理。但是我很难理解 WCF 代理是什么以及它是如何使用的。我已经彻底查看了有关 WCF 的 MSDN 文档,但我仍然没有掌握将代理与 WCF 服务一起使用的总体情况。
代理是进程外服务的进程内代表。您调用代理(这很容易),它设置通信通道等并与远程服务对话(这很困难)。
WCF 代理实际上只是一个抽象级别。您针对代理(最终是一个服务合同的接口)进行编码,而无需处理处理 WCF 通信逻辑的细粒度细节。WCF 的好处是您可以使用同一个代理与服务(http、wshttp、msmq、命名管道等)进行多种类型的通信。
从技术上讲 Proxy 是 CLR 类,它公开表示服务合同的单个 CLR 接口。代理提供与 ServiceContract 相同的操作,但还提供用于管理代理生命周期和与服务的连接的其他方法
or
代理用于从客户端表示服务器中的ServiceContract接口。通过使用代理,我们可以调用存在于服务器中的接口中的服务方法。
需要客户端代理才能使用来自 .NET 客户端的 WCF 服务。代理是客户端内存中的一个对象,它公开与 WCF 服务相同的接口或 API。您的消费代码将针对该代理进行调用,并且代理会将这些调用作为 SOAP 消息分派给 WCF 服务。
代理可以由 Visual Studio 基于 WCF 服务在 WSDL 或 WS-MetaDataExchange 端点(基于 SOAP)中公开的元数据生成代码。
如果您想更好地控制服务消耗,那么您可以手动编写代理代码。就像您想封装重复的使用模式,例如设置凭据等。