【问题标题】:WCF - WSDL or pre-compiled ProxyWCF - WSDL 或预编译代理
【发布时间】:2009-09-14 18:17:05
【问题描述】:

这是 B2B 场景,一个客户(至少目前如此)。

服务器环境: WCF 服务、IIS6、.NET v3.5

客户端环境: 开发商店是 .NET 2.0/VS2005。将调用我的 WCF 服务。

问题:我应该
(a) 为客户端打开 WSDL gen(出于安全原因不希望)
(b) 向客户端发送一个 WSDL 文件
(c) 将 Proxy 预编译成 dll(在我这边)并发送给客户端
(d) ???
?

对于这种情况下的最佳实践有什么建议,有什么优点/缺点吗?

提前致谢,
伊戈尔

【问题讨论】:

    标签: wcf


    【解决方案1】:

    为什么出于安全原因不希望公开可用的 WSDL?

    我可能愿意承认发布 API(这基本上就是您使用 WSDL 所做的事情)会使您bit比不发布 API 更容易受到攻击,但这样做是错误的假设隐藏 WSDL 构成任何类型的安全性。具有讽刺意味的是,这被称为默默无闻的安全,它会被任何坚定的攻击者破坏。

    Web 服务本身应该是安全的。 WCF 提供了许多安全功能,但这与您的问题是垂直的。

    我更喜欢发布 WSDL。如果您不想这样做,或者如果有政策规定您不能这样做,请将 WSDL 发送给客户团队,以便他们可以随意使用。

    预编译代理只会在客户团队中强制执行您的编码约定,他们可能不会意识到这一点 - 例如,我经常更喜欢使用 /i 开关生成代理,该开关使生成的类成为内部类。我还希望能够指定 .NET 命名空间,以便它们适合我的其余代码。如果我有一个预编译的程序集,那将是不可能的(无论如何我都可以使用它,但这只会让我烦恼)。

    【讨论】:

    • 谢谢你,马克,好点。你是绝对正确的,WSDL gen 阻止绝不是唯一的安全措施。我更担心客户端无法使用 WSDL 生成完整的代理。我试图模拟客户端的环境以从 WSDL 链接生成代理到我们的 WCF 服务,我看到 vs2005 丢弃了消息合同对象(将不得不对其进行更多研究)。这就是为什么我正在考虑使用预编译代理来让我们和他们的生活更轻松,但正如您指出的那样,这对客户来说可能根本不会“更容易”......
    • 它不应该丢弃消息合约对象,但它们可能没有您期望的名称。只需确定您的 WCF 服务正在使用 basicHttpBinding。
    【解决方案2】:

    如果您不想实际发布 WSDL 并将其在线提供给呼叫客户端,那么我更喜欢“向我发送 WSDL 和 XSD”方法。

    这样,您仍然可以让呼叫您的客户能够以他们认为合适的方式创建代理。

    如果调用方无法或不愿意自己创建代理,并且只有当他们要求我以程序集形式提供该代码时,我才会考虑在程序集中使用预编译代理。

    马克

    【讨论】:

      【解决方案3】:

      按照优先顺序,我倾向于:

      1. 让服务公开 WSDL(启用安全性)
      2. 向服务使用者发送 WSDL 文件

      我本来打算将选项 3 列为发送代理 DLL,但转念一想我什至不会将其列为选项。在我看来,向您的客户端发送代理 DLL 会打开一大堆我不想处理的蠕虫。

      主要问题是您最终不得不支持部署在客户端站点的可执行代码。代理代码可以由 svcutil 生成,但如果调用服务时出现某种问题,我只能看到客户端呼叫您寻求支持并告诉您您的代理无法正常工作。现在,他们的说法可能不正确,但您很难证明这一点,因为您不知道他们在做什么。例如

      • 也许他们没有安装代理 DLL?
      • 可能存在一些权限问题?
      • 也许他们不知道自己在做什么(是的,我知道这永远不会发生。:))。
      • 也许他们一方的 .NET 升级影响了您的代理?
      • 在向他们发送新代理时,您甚至可能会遇到一些版本控制问题。

      如果您的客户不是那么精明,而不是尝试通过创建代理 DLL 来帮助他们,也许花一些时间和精力来帮助他们正确配置和使用您的服务会是更好的方法?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 2012-11-02
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多