我最近一直在自学WCF,并且使用WCF编写了一些生产服务,但直到最近我才真正了解了WCF。
我知道“代理”设计模式的概念,也知道在ASMX Web服务中使用代理。但我很难理解什么是WCF代理以及它是如何使用的。我已经仔细阅读了有关WCF的MSDN文档,但仍然没有完全掌握使用代理与WCF服务的大局。
我最近一直在自学WCF,并且使用WCF编写了一些生产服务,但直到最近我才真正了解了WCF。
我知道“代理”设计模式的概念,也知道在ASMX Web服务中使用代理。但我很难理解什么是WCF代理以及它是如何使用的。我已经仔细阅读了有关WCF的MSDN文档,但仍然没有完全掌握使用代理与WCF服务的大局。
代理是对一个进程外服务的内部代表。您可以轻松地调用代理,代理会设置通信通道等,并与远程服务进行通信(这很困难)。
WCF代理实际上只是一个抽象层。您可以使用代理(最终是服务契约的接口)编写代码,而无需处理WCF通信逻辑的细节。 WCF的好处在于,您可以使用许多类型的通信与同一代理一起使用(如http、wshttp、msmq、命名管道等)。
从.NET客户端使用WCF服务需要使用客户端代理。
代理是客户端内存中的一个对象,公开与WCF服务相同的接口或API。您的调用代码将对该代理进行调用,并且代理将将这些调用作为SOAP消息发送到WCF服务。
可以基于WCF服务公开的元数据在Visual Studio中自动生成代理,元数据可以是WSDL或基于SOAP的WS-MetaDataExchange终结点
如果您想更好地控制服务消费,则可以手动编写代理。例如,封装重复的用法模式,如设置凭据等。
从技术上讲,代理是CLR类,它公开了代表服务契约的单个CLR接口。代理提供与服务契约相同的操作,但还提供了用于管理代理生命周期和与服务的连接的附加方法。
or
代理用于在客户端中表示服务契约接口。通过使用代理,我们可以调用服务器上存在的接口中的服务方法。