【问题标题】:ASMX versus WCFASMX 与 WCF
【发布时间】:2009-08-04 20:18:01
【问题描述】:

我需要一些与这个主题相关的方向;也许我错过了明显的。

我没有看到绑定到 HTTP 的 WCF 和强类型 Web 服务之间的对比。为什么会有所不同??我同意在 ASMX 与 WCF 中存在一些特别与 XmlSerializer 相关的开发细微差别以及大量 Microsoft 术语。缺少这些;我只看到相似之处

DataContract=WSDL 类型 ServiceContract=WSDL(又名服务定义) OperationContract=WebMethod

在操作上,我了解 WCF 的绑定可能很多,而不是锁定到 HTTP,这可能涉及繁重的构造和拆除。但是对于松散耦合,它都是 Web 服务。

还有其他操作上的差异吗?

谁能给我光明,让我摆脱痛苦? :))

【问题讨论】:

  • “强类型 ASMX”是什么意思?
  • 是的...“强类型 ASMX”也让我感到困惑。他们不都是“强类型”吗?

标签: wcf web-services asmx biztalk


【解决方案1】:

好吧,如果你只讨论 HTTP,那么 WCF 相对于 ASMX 仍有许多优势:

  • 更多更好的安全设置(使用传输或消息安全的能力)
  • 更大的灵活性 - 可以在 WCF 中配置和调整更多内容,无论是在配置文件还是代码中
  • ASMX Web 服务只能存在于 IIS 内部 - IIS 是必备要求;您可以在控制台应用或 Windows NT 服务中自行托管 WCF 服务
  • 在 WCF 中使用服务和数据协定的明确重点使得界面更加简洁,关注点分离更加出色(最终代码更好)
  • 支持可靠的消息传递和事务支持(甚至通过 HTTP)

简而言之:尽管当您将 WCF 限制为仅使用 HTTP 时差异可能会更小,但我仍然认为它是优越的,如果您今天可以选择开始新的东西,请务必使用 WCF 而不是 ASMX!

Rick Strahl 在他的blog post 中很好地说明了这一点:

我认为将 WCF 用于任何新服务可能是一个好主意,即使您坚持使用纯 HTTP 和 SOAP,因为通过使用 WCF 创建服务,您可以稍后决定使用 WAS 和还提供更高性能的 TCP/IP 传输。或者,您可能会被要求提供 WS- 协议的一些高级特性,例如事务、附件、会话管理、加密等。通过使用 WCF,您正在构建面向未来的服务,这样您就可以轻松地迁移直到其他协议——其中一些在今天甚至可能不存在。未来肯定会出现新技术,而 WCF 会通过其抽象层和通用 API 在一定程度上保护您。*

马克

【讨论】:

  • 马克,感谢您的总结;很抱歉,我没有注意到这件事
【解决方案2】:

对于 ASMX Web 服务的消费者来说,另一点是,哪个平台将使用 Web 服务必须实现 SOAP 堆栈。如果您的目标是广泛使用,WCF 更可取,它将允许您以更通用的方式公开 WS。

【讨论】:

    【解决方案3】:

    这两种技术的另一大区别是,Microsoft 现在将 ASMX Web 服务和 XML Serializer 都视为“遗留技术”,不再修复其中的错误。

    【讨论】:

    • 您能否提供一个链接来支持这一断言,即它们是“遗留”且不再受支持?
    • ASMX 是一项遗留技术,不应用于新开发。 WCF 应该用于 Web 服务客户端和服务器的所有新开发。一个提示:微软已经在 MSDN 上停用了ASMX Forum
    猜你喜欢
    • 2010-09-05
    • 2010-12-06
    • 1970-01-01
    • 2012-01-03
    • 2012-06-23
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多