ASMX与WCF

时间:2009-08-04 20:18:02

标签: wcf web-services asmx biztalk

我需要一些与此主题相关的方向;也许我错过了显而易见的事。

我没有看到绑定到HTTP的WCF和强类型的Web服务之间的对比。为什么这会有所不同?我同意在ASMX与WCF以及过多的微软术语中存在一些特别与XmlSerializer相关的开发细微差别。没有这些;我只看到了平行线

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

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

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

有人能告诉我光明,让我摆脱痛苦吗? :))

3 个答案:

答案 0 :(得分:13)

好吧,如果你将讨论减少到只有HTTP,那么WCF仍然有一些优于ASMX的优势:

  • 越来越多的安全设置(使用传输或邮件安全的能力)
  • 更灵活 - 可以在WCF中配置和调整更多内容,无论是配置文件还是代码
  • ASMX Web服务只能存在于IIS中 - IIS是必需的;您可以在控制台应用程序或Windows NT服务中自行托管您的WCF服务
  • 明确关注在WCF中使用服务和数据合同可以实现更清晰的界面和更好的关注点分离(更好的代码,最后)
  • 支持可靠的消息传递和事务支持(甚至通过HTTP)

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

Rick Strahl在他的blog post

中非常好地表达了这一点

我认为即使您坚持使用纯HTTP和SOAP,使用WCF也可能是一个好主意,因为通过使用WCF创建服务,您可以稍后决定使用WAS发布此相同服务还提供更高性能的TCP / IP传输。或者可能会要求您提供WS - 协议的一些高级功能,如事务,附件,会话管理,加密等。通过使用WCF,您可以构建服务,以便将来可以轻松移动其他协议 - 其中一些甚至可能在今天都不存在。当然,未来会出现新技术,WCF会通过其抽象层和通用API对您进行一些保护。*

马克

答案 1 :(得分:2)

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

答案 2 :(得分:1)

两种技术之间的另一个显着区别是,微软现在认为ASMX Web服务和XML Serializer都是“遗留技术”,并且不再修复它们中的错误。