2

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

最佳托马斯

4

1 回答 1

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-两分钱的主题.aspx

顺便说一句,您选择 SOAP 还是 REST 取决于您的具体情况。一些一般准则如下:

有利于 SOAP 服务的因素:

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

支持 RESTful 服务的因素:

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

编辑: 响应您的评论,如果您使用 WCF/SOAP,您可以使用 SOAP 支持的广泛功能。这包括事务、可靠消息传递、各种消息传递模式(单向、双工等)和 WS-Security。这些标准由OASIS 标准机构维护,通常称为 WS-*。可以在此处找到 WS-* 标准的列表。

如果您使用 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/

以及其中一些博客帖子

于 2012-11-23T17:43:24.033 回答