你的问题的答案基本上是肯定的。如果您 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 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
- 网络带宽问题考虑
Edit:作为对您的评论的回应,如果您使用 WCF/SOAP,您就可以使用 SOAP 支持的广泛功能。这包括事务、可靠消息传递、各种消息传递模式(单向、双工等)和 WS-Security 等。这些标准由OASIS标准机构 https://www.oasis-open.org/standards通常称为 WS-*。可以找到 WS-* 标准列表here http://en.wikipedia.org/wiki/List_of_web_service_specifications.
如果您使用的是 Web API/REST,则无法使用任何 WS-* 功能。但是,仍然可以使用 IIS 和 ASP.Net 中提供的标准身份验证技术来验证和授权对 RESTful 服务的访问。有关这方面的更多信息,请参阅以下链接:
http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/ http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/
http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/ http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/
以及其中一些博客帖子 http://leastprivilege.com/2012/03/.