WCF与ASP .Net Web API


93

使用每种技术的利弊是什么?

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

我仍然想像一下,如果我想为同一操作公开多个协议架构,我还是会倾向于WCF,或者Mvc端点也可以这样做吗?

新的Asp.Net Web API还会公开Wsdl吗?如果没有,客户将如何确定他们可以进行哪些操作?

可以说Mvc的最佳功能是modelbinder。WCF是否等效?

那么有人可以告诉我Asp.net Web API带来什么好处吗?WCF似乎绝大多数是imo。Mvc Web Api在WCF模型上唯一具有的优势可能是易于开发,但这意味着如果最终成为道路上的严重设计限制,则必须蹲下。


15
我觉得这个问题的标题有些误导。标题为“ MVC 4 vs Wcf Web Api”,但问题似乎更多地在于WCF vs ASP .Net Web API。从标题开始,我认为所比较的是标准MVC 4框架(控制器,模型,视图)与ASP .Net Web API框架。有人发现这个标题有误导性吗?
BruceHill 2013年

Answers:


72

首先,建议您阅读有关该主题的文章:http : //blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-在主题上两分钱

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


6
这是一个非常非常好的写作。我见过的最好的一个。但是我现在比以往更加困惑。WebApi增加了很多,但是无法公开其他端点似乎非常有限制性。如果您有一个可以使用肥皂的客户端,那么当肥皂可能为其生成整个上下文时,他们现在将被迫构建操作并手动解析结果。您还将把它们锁定在更高级的Soap功能之外,例如可靠的会话和Acid事务...。
Alwyn 2012年

2
@Alwyn-我认为您提到的所有事实都是真实的,因此不应使您感到困惑,而应该帮助您做出决定-Web API具有自己的优势,但是如果您的服务需要从包括其他协议在内的多个端点公开,或者你有客户端的自动生成功能或肥皂先进功能的强烈需求-这可能是考虑为什么喜欢WCF通过Web API
BornToCode

@BornToCode:客户端代码可以使用WebAPI自动生成。您可以使用WebAPI代码生成一个庞大的json文件。该json文件随后可被诸如swagger-codegen之类的代码生成器用来以大量目标语言生成客户端代码。
无意中留空了

@unintentionallyleftblank-恕我直言,与Web API相比,通过WCF自动生成客户端代码更加“用户友好”。
BornToCode '18

15

选择取决于我们要做什么。

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

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


2
毫无疑问,HTTP只是应用程序层协议。它有什么没有固有的限制,传输层可以使用的协议。
smwikipedia

8

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


2
是的,配置是一件痛苦的事,但这是一次性的设置成本。完成后,您几乎可以将行为/端点复制并粘贴到另一个服务。大多数情况下,您只需要使用WebGet标记新操作即可。另一方面,如果您曾经获得过要使用Soap + Wsdl的客户端,那么与代码+部署+ QA +其余操作相比,这仅仅是配置更改。那么Mvc Web Api有什么更好的呢?
Alwyn 2012年

1
如果您已经熟悉WCF,则可以继续使用。除了我提到的内容外,WCF Web API中还对REST进行了一些内部改进(我前面没有这个列表),但两者都可以使用,如果您有大量的内容,我不会花数周的时间进行重构工作服务,特别是 因为思维方式有所转变。对于以后的工作,我将考虑使用WCF Web API。但是我使用WCF Web API已经有一段时间了,所以我可能会有偏见。
格雷戈里·比默

0

将WCF用于Intranet / B2B站点n用于B2C / C2C / Internet站点的Web API ... SOAP / XML仍然是企业内部通信的标准,不会消失!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.