7

我一直在开发一个完全基于 ajax(没有 POST)的单页 Web 应用程序,现在我正在使用 ASMX 作为 Web 服务,而它正在开发中。Web 服务使用 JSON 数据。对于该版本,我知道我需要升级到 WCF 或 WebAPI。

最终,我计划构建原生移动应用程序,这些应用程序将使用与 Web 应用程序相同的 Web 服务。在所有条件相同的情况下,如果我必须在两者之间进行选择,我应该选择哪个选项,以便 Web 服务可以与不同的客户端应用程序一起使用?

谢谢。

4

2 回答 2

8

如果您的应用程序设计为只能通过各种平台的移动设备访问,这意味着您必须为所有这些平台找到最简单的共同点。因此,换句话说,如果您关心互操作性,您将专注于一种所有平台都可以使用的独特通信技术。

JSON + REST 似乎是当今许多平台(当然包括移动平台)最常见的最简单的分母。如果这是您将实现的唯一通信技术,那么 WebAPI 似乎是显而易见的选择。

WCF 更可扩展,更可配置,你可以在不同的协议上插入不同的绑定、不同的编码,它实现了 SOAP、WS-*,它可以非常快(通过精心选择的绑定),你也可以用它做 JSON+REST ,但是您并不需要所有这些功能(由于所有这些功能,WCF 也可能非常复杂),您需要的似乎是无处不在和简单。鉴于您的要求,我会选择 WebAPI。

于 2013-01-26T09:05:03.617 回答
6

我使用 WCF 开发了一组 RESTful Web 服务,并且最近启动了一个用 ASP.NET Web API 替换 WCF 的项目。我的经验是 ASP.NET Web API 比 WCF 更容易学习和使用。我还可以给您几个选择 ASP.NET Web API 的理由:

  • WCF url 包含“.svc”扩展名。例如: http://localhost/MyRestService.svc/。这不应该对客户造成问题,但它很丑陋。.svc您可以通过使用 IIS URL 重写模块(请参阅此博客文章)摆脱扩展,但使用 ASP.NET Web API,您一开始就没有问题。

  • WCF 使用DataContractJsonSerializer,它生成的 JSON 可能会给客户端带来问题。具体示例包括日期字典。您可以更改 WCF 使用的序列化程序(请参阅此SO 问题),但 ASP.NET Web API 默认使用 JSON.NET,这是高度可配置的。

如果我今天开始创建一个新的 RESTful Web 服务,那么选择 ASP.NET Web API 而不是 WCF 将是一个简单的选择,因为这就是它的设计目的。

于 2013-01-26T22:02:16.327 回答