【问题标题】:What are WCF Proxies and what are they good for?什么是 WCF 代理,它们有什么用?
【发布时间】:2011-09-11 06:31:37
【问题描述】:

我最近一直在自学 WCF,甚至使用 WCF 编写了一些生产服务。但直到最近,我才真正深入了解 WCF。

我知道“代理”设计模式的概念。我也知道在 ASMX Web 服务中使用代理。但是我很难理解 WCF 代理是什么以及它是如何使用的。我已经彻底查看了有关 WCF 的 MSDN 文档,但我仍然没有掌握将代理与 WCF 服务一起使用的大局。

【问题讨论】:

    标签: .net web-services wcf proxy webservices-client


    【解决方案1】:

    WCF 代理实际上只是一个抽象级别。您针对代理(最终是一个服务合同的接口)进行编码,而无需处理处理 WCF 通信逻辑的细粒度细节。 WCF 的好处是您可以使用同一个代理与服务(http、wshttp、msmq、命名管道等)进行多种类型的通信。

    【讨论】:

      【解决方案2】:

      代理是进程外服务的进程内代表。您调用代理(这很容易),它会设置通信通道等并与远程服务对话(这很困难)。

      另见http://msdn.microsoft.com/en-us/library/ms730144.aspx

      【讨论】:

      • 在 Wikipedia 上,另请参阅 Proxy pattern,其中说明了它的用途之一:“为远程资源提供接口,例如 Web 服务或 REST 资源。” ,我认为需要注意的是,代理可以提供序列化和反序列化服务。 (例如,对于 XML 和 JSON 消息有效负载。)
      【解决方案3】:

      从技术上讲,代理是 CLR 类,它公开单个 CLR 接口,代表 服务契约。代理提供与 ServiceContract 相同的操作,但还提供用于管理代理生命周期和服务连接的其他方法

                                 or
      

      Proxy 用于从客户端表示 Server 中的 ServiceContract 接口。通过使用代理,我们可以调用存在于 Server 中的 Interface 中的服务方法。

      【讨论】:

        【解决方案4】:

        需要客户端代理才能使用来自 .NET 客户端的 WCF 服务。 代理是客户端内存中的一个对象,它公开与 WCF 服务相同的接口或 API。您的消费代码将针对该代理进行调用,并且代理会将这些调用作为 SOAP 消息发送到 WCF 服务。

        Visual Studio 可以根据 WCF 服务在 WSDL 或 WS-MetaDataExchange 端点(基于 SOAP)中公开的元数据生成代理代码。

        如果您想更好地控制服务消耗,则可以手动编写代理代码。就像您想封装重复使用模式一样,例如设置凭据等。

        【讨论】:

          猜你喜欢
          • 2015-02-06
          • 2011-08-08
          • 2011-08-03
          • 2011-09-22
          • 2017-05-30
          • 1970-01-01
          • 2016-10-24
          • 2023-04-10
          • 2020-03-08
          相关资源
          最近更新 更多