WCF和ASP.NET Web API:两者的好处?

Pet*_*nks 9 .net asp.net rest wcf asp.net-web-api

我即将开始一个项目,我们有一个后端服务来进行冗长的处理,以便我们的ASP.NET网站可以自由地做更快的请求.因此,我一直在阅读WCF和Web API等服务,以了解他们的工作.由于这种后端服务实际上将由几个彼此通信的服务组成,并且不会公开给我们的客户,因此WCF似乎是这种情况的理想技术.

但经过大量的研究后,我仍然对WCF和Web API之间的好处和差异感到困惑.一般来说,似乎:

  • 如果您需要公共和/或RESTful API,那么Web API是最好的
  • WCF可以支持比HTTP更多的传输,因此您可以对它们进行更多的控制
  • 由于WCF的附加功能/复杂性,Web API开发似乎比WCF更容易

但也许我的问题归结为以下几点:

  1. 为什么REST服务会更有益?一个完整的WCF服务是否会成为公共API的好主意?或者,Web API无法提供WCF服务可以提供的任何内容吗?
  2. 相反,如果我有许多内部服务需要相互通信并且乐于使用HTTP作为传输,那么Web API是否会突然成为可行的选择?

Jup*_*aol 10

我回答了几个相关的问题:

作为额外资源,我建议您阅读:

http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

如果您想了解有关REST的更多信息,请查看Martin Fowler的这篇文章

总结一下:

据我所知,这两种技术都是由Microsoft的同一团队开发的,WCF不会停产,它仍然是一个选项(例如,如果你想提高服务的性能,你可以公开它们)通过TCP或命名管道).未来显然是Web API

  • WCF用于处理SOAP

  • Web API构建为使用HTTP

为了做出正确的选择:

  • 如果您打算创建支持特殊方案的服务 - 单向消息传递,消息队列,双工通信等,那么您最好选择WCF
  • 如果您想创建可用的快速传输通道的服务,例如TCP,命名管道,甚至UDP(在WCF 4.5中),并且您还希望在所有其他传输不可用时支持HTTP,那么您就是最好使用WCF并使用基于SOAP的绑定和WebHttp绑定.
  • 如果您想通过HTTP创建面向资源的服务,可以使用HTTP的全部功能 - 使用ETag定义浏览器的缓存控制,版本控制和并发,传递各种内容类型,如图像,文档,HTML页面等,使用URI模板要在您的回复中包含任务URI,那么新的Web API是您的最佳选择.
  • 如果你想创建一个多目标服务,既可以用作HTTP上面向资源的服务,也可以用作TCP上的RPC式SOAP服务 - 请先与我联系,我会给你一些指示.