如果我可以使用ASP.net Web API,是否需要WCF?

时间:2012-11-23 16:42:58

标签: wcf asp.net-web-api

今天我读了很多关于ASP.net Web API的内容。我是否理解正确,如果我需要一个只需要HTTP作为传输的WebService,我可以使用ASP.net API而不需要WCF? 到目前为止,看起来Web API比WCF更容易使用。

最佳

托马斯

1 个答案:

答案 0 :(得分:4)

你的问题的答案基本上是肯定的。如果你a)只想使用HTTP,b)希望你的内容以XML或JSON形式返回,c)想要使用RESTful API而d)不需要任何高级消息传递功能,那么web API是你最好的选择。正如您所指出的,它比WCF更容易使用。

创建Web服务时,您有两个基本选项:基于SOAP的服务或RESTful API。如果您使用的是基于SOAP的服务,则应使用WCF。如果您使用的是RESTful服务,则应使用Web API。您可以在此博文中看到有关此内容的进一步讨论: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx

顺便说一句,无论您选择SOAP还是REST,都取决于您的具体情况。一些一般性指导原则如下:

有利于SOAP服务的因素:

  • 你只是服务的消费者,或者有限的宇宙 消费者
  • 高级功能,例如交易,WS-Security, 需要可靠的消息传递等
  • 服务必须通过HTTP之外的其他传输公开,例如TCP,MSMQ,命名管道等。
  • 要公开的功能不容易映射到实体或集合上的CRUD操作
  • 您需要支持复杂类型的强类型
  • 网络带宽问题不是问题

有利于RESTful服务的因素:

  • 服务必须由大量客户(即互联网)使用
  • 高级功能,例如交易,WS-Security,可靠消息传递等,不需要
  • 只接受通过HTTP公开的服务
  • 功能可轻松映射到实体或集合上的CRUD操作
  • 您需要支持其他媒体类型,例如JSON或YAML
  • 网络带宽问题

修改 在回应您的评论时,如果您使用WCF / SOAP,则可以使用SOAP支持的各种功能。这包括事务,可靠消息传递,各种消息传递模式(单向,双工等)和WS-Security。这些标准由the OASIS standard body维护,通常称为WS- *。可以找到WS- *标准列表here

如果您使用的是Web API / REST,则无法使用任何WS- *功能。但是,仍然可以使用IIS和ASP.Net中提供的标准身份验证技术对RESTful服务进行身份验证和授权访问。有关此内容的更多信息,请参阅以下链接:

http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/

http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/

以及其中一些blog postings