2012-11-23 86 views
2

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

最佳 托马斯

回答

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 - 安全, 可靠的消息传递等是必需的
  • 服务必须暴露在HTTP以外的其他传输,如TCP,MSMQ,命名管道等
  • 功能可以暴露不容易映射到CRUD操作的实体或者集合
  • 您需要为复杂类型的强类型
  • 网络带宽问题不是一个问题,有利于RESTful的

因素支持服务:

  • 服务必须由大量客户(即互联网)
  • 先进的功能,如交易,WS-安全,可靠的消息传递等,不要求
  • 接受的服务只能通过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的。

+0

您发现REST缺少WS-Security。这对实现具有认证/授权的API的目标有多大影响? – Thomas

+0

根据您的评论,我在帖子中添加了一些信息。如果您使用的是Web API/REST,则不能使用任何WS- *功能,因为这是特定于SOAP的。但是,您可以使用IIS/ASP.Net中提供的其他技术对Web API服务进行身份验证和授权 –

+0

非常感谢,非常有帮助。我认为对于我的应用程序来说Web API就足够了,同时,由于我们的应用程序的流量很大,我认为Web AIP会更好地执行。 – Thomas

相关问题