WCF与ASP .Net Web API

Alw*_*wyn 93 wcf asp.net-mvc-4 asp.net-web-api

使用每种技术的优缺点是什么?

WCF Web Api现已合并到Asp.net Asp.net web api现在支持自托管.

我仍然想象如果我想为相同的操作公开多个协议模式,我仍然倾向于WCF,或者Mvc端点也可以这样做吗?

新的Asp.Net web api也暴露了Wsdl吗?如果不是,客户如何找出他们可以使用的操作?

可以说,Mvc的最佳特性是模型绑定器.WCF的等效性有多强?

那么有人能告诉我Asp.net web api带来哪些优势?WCF似乎绝对是更强大/可扩展的选择,imo.关于Mvc Web Api对WCF模型的唯一要求可能是易于开发,但这意味着如果它最终成为严重的设计限制则蹲下.

小智 72

首先,我建议你阅读我关于这个问题的帖子: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-两美分上最subject.aspx

关于您的WSDL问题 - 由于WebApi不使用SOAP,因此它不需要WSDL,也不会导出WSDL.您可以使用超媒体返回带有可能活动URL列表的资源(将其视为自描述资源)

  • 这是一篇非常好的写作.我见过的最好的一个.但我现在比以往更加困惑.WebApi增加了很多,但是无法公开其他端点似乎非常严格.如果你有一个可以使用soap的客户端,他们现在将被迫构建动作并在soap可以为它们生成整个上下文时手动解析结果.您还可以将它们锁定在更高级的Soap功能中,例如可靠的会话和Acid transaction ......叹息. (6认同)
  • @Alwyn - 我认为你提到的所有事实都是真实的,因此不应该混淆你,而是帮助你做出决定 - 网页API有自己的优势,但如果你的服务需要从多个端点包括其他协议公开,或者您非常需要客户端自动生成功能或soap高级功能 - 这些可能会考虑为什么更喜欢WCF而不是Web API (2认同)

Jun*_*r M 15

选择取决于我们想做什么.

  1. ASP.NET Web API是一个仅通过HTTP构建非基于SOAP的服务的框架 - 因此使用此框架的可用传输协议不多.
  2. WCF/Windows Communication Foundation是一个交换基于SOAP的消息的框架 - 这里我们使用了很多传输协议:HTTP,TCP,命名管道,MSMQ等......

我不确定哪一个在数据量方面有更好的性能,可能是WCF,因为我们可以使用低协议.任何评论都表示赞赏.

  • 没有冒犯,但HTTP只是一个**应用程序层**协议.它对**传输层**协议的使用没有固有的限制. (2认同)

Gre*_*mer 8

WCF Web API主要关注REST实现.如果您正在设置REST实现,那么标准WCF位在后面会有点痛苦.如果您正在设置RESTful服务,您会发现WCF Web API是一种更好的体验.如果您正在设置SOAP服务,那么WCF Web API不是您最好的朋友,您最好将WCF用于您的服务.

  • 是的,配置是一种痛苦,但它是一次性设置成本.完成后,您几乎可以将行为/端点复制并粘贴到另一个服务.大多数情况下,您只需使用WebGet标记新操作即可.另一方面,如果你有一个想要使用Soap + Wsdl的客户端,它只是一个配置更改而不是代码+部署+ QA +其余的.那么Mvc Web Api如何更好? (2认同)