【问题标题】:Convincing Management to use WCF说服管理层使用 WCF
【发布时间】:2011-02-02 03:53:15
【问题描述】:

我问了另一个问题,说我无法在新的 Web 服务项目中使用 WCF,并且发现它似乎是在可扩展性和安全性方面使用的技术。

我的问题很简单:

我如何说服管理层(和开发人员)转而使用 WCF 而不是其他 Web 服务技术 (ASMX/CFC)? 他们不会关心比较类型之间(尤其是关于 ASMX),简单来说就是可以获得什么。

【问题讨论】:

  • @Slaks - 一个原因是对旧技术的信任,另一个大问题是安全问题。
  • 开发人员的一个卖点是能够抽象出使用特定传输协议的具体细节。 WCF 可用于命名管道、TCP、MSMQ 或 HTTP。
  • 让它们具有安全性 - WCF 具有更多安全选项(如证书、联合安全性),因此在涉及安全问题时更加“面向未来”。另外 - 微软很快就会不支持 ASMX ......新项目的好选择??

标签: .net wcf architecture


【解决方案1】:

Plain-vanilla ASMX 根本不支持 WS-Security 或任何其他 WS-* 扩展。为了实现这些,您需要使用 Microsoft 的 Web 服务增强 (WSE)。

WSE 是 Microsoft 匆忙实施的一种保留解决方案,以满足 .NET Web 服务符合 WS-* 规范的需求。 WCF 不仅仅是一个升级,它是一个完全的替代。因此,WSE(以及随后的 ASMX,如果您想使用 WS-* 协议)正式不受支持的产品。

那么 - 您的管理层是否想使用官方不支持的产品开始一个新项目?

以下是 WSE 无法提供的所有功能:

  • 技术支持。也许 Stack Overflow 上的某个人可以帮助你,但微软不能。

  • 错误修复。 WSE 3.0(最后发布的版本)的 Visual Studio 集成在 Visual Studio 2008 中不起作用。如果您运行的是 Vista x64 或 Windows 7,它在 Visual Studio 2005 中也不起作用。

  • 新功能。 WCF 提供了性能改进、REST 协议、消息队列、基于 TCP/命名管道的二进制序列化、WCF 数据服务(基于 Web 服务的 Linq)以及大量新机会。您将永远使用 WSE/ASMX 获得这些。

  • Active Directory 集成。哦,当然,它在 WSE 中使用 kerberos 断言“有效”——非常非常糟糕。 WCF 很容易与 Active Directory 集成,因此默认情况下以这种方式进行保护。

  • 故障合同。 WSE/ASMX 中的异常处理是残酷的,所有东西都以SoapException 或ResponseProcessingException 的形式出现。使用 WCF,您实际上可以将强类型异常(故障)发回给客户端。

  • 回调合约。想要在客户端开始一些长时间运行的操作并从服务器收到完成/状态更新的通知?艰难 - 希望你喜欢编写轮询循环。

  • 与新技术的互操作性。有时,您可以让 WSE 3 服务与 WCF 或 Java 服务对话,但有一些麻烦,但不一定反过来。如果您使用的是 3.0 之前的 WSE 版本,请忘记它。相比之下,WCF 只需进行一些简单的配置更改即可支持 Azure 和 MSMQ。

使用 ASMX/WSE 启动新项目相当于在 .NET 1.1 框架上启动新项目。在编写第一行代码之前,您的产品将是“遗留产品”。

如果您的管理层理解“遗留技术”一词,我怀疑他们理解,您可能想稍微抛开一下。也“过时”。也“不受支持”。

我想,WCF 已经存在 4 年了。这对于在野外发现任何严重问题来说已经绰绰有余了。没有任何理由不相信它是一种技术。

而事实上,WSE 3 是在 2005 年底发布的,所以它比 WCF 早不了多少!相信 5 年前的技术而不相信 4 年前的技术是不合逻辑的 - 尤其是当对 5 年前的技术在 2 年前停止支持时。

【讨论】:

    【解决方案2】:

    好处确实取决于您的具体情况,但总的来说,有很多。

    WCF 从一开始就是为处理服务而设计的,并且以非常干净的方式进行。它解决了其他技术的许多缺点。主要区别在于 WCF 带来的灵活性。

    例如,使用 ASMX 或 WCF 提供 RESTful 服务非常容易。但是,如果您以后需要添加 SOAP、转换、更复杂的身份验证、与富客户端的一些异步通信等 - 您可以轻松地重新配置和调整 WCF 服务应用程序以适应。使用以前的技术,你会被困在重新架构或重写。


    作为对您关于安全性的评论的回应,我建议您在 MSDN 上也阅读有关 WCF's Security Model 的信息。它实际上远远优于所有旧的 Windows 服务架构技术,所以如果安全是重点,那么 WCF 绝对是要走的路。

    如果您要处理多个身份验证源,则尤其如此。 WCF 身份验证模型基于标准,但可扩展。实现可通过多种身份验证形式访问的安全服务要简单得多,尤其是在您需要与其他身份验证服务集成时。

    【讨论】:

    • 在 ASMX 中做 RESTful 服务非常困难...如果没有更多扩展,不支持 HTTP GET 和 JSON,根本不支持 Atom 和 OData (AFAIK),多格式方法几乎是不可能的。
    • 好吧,如果没有合适的工具和扩展,这很困难——但这是一个很好探索的空间,现在有了合适的库也不算太糟糕。不过,我认为 WCF 更容易。
    【解决方案3】:

    Microsoft 现在将 ASMX 视为“传统技术”。询问您的管理层,开始使用旧技术是否是个好主意。

    【讨论】:

      【解决方案4】:

      如果不至少间接比较这两种类型,你就无法真正说明有什么好处 - 否则你没有关于改进的基线。

      一般来说,WCF 会为您提供以下内容:

      • 不限于 SOAP。这可以使服务更易于使用,并且性能更高。这可能是我作为 ASP.net 开发人员心目中最重要的事情。

      • 性能。 WCF 可以更快。

      • 任何东西都可以托管 WCF 服务,因此您不仅限于 IIS。为您的架构提供更大的灵活性。

      您可以做的最好的事情是阅读有关它的 MSDN 文档,因为 Microsoft 正在大力推动 WCF 而不是 ASMX,并且围绕这些优势提供了大量文档。 Start here: Differences Between ASMX and WCF Services.

      【讨论】:

        【解决方案5】:

        WCF 提供 SOA -

        • 保证消息传递
        • 交易
        • 序列化为二进制
        • 互操作性
        • 可扩展性

        对我来说最大的好处是:交付和交易的可靠性。

        坚持使用久经考验且广为人知的技术可能是最佳选择 - 对于我们的开发人员以及推广、支持等而言,任何新技术都会有一个学习曲线。

        WCF 更好,更好,但在考虑任何新技术或方法时永远不要忘记上述内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-01
          相关资源
          最近更新 更多