【问题标题】:WCF vs WebAPI and native mobile devicesWCF 与 WebAPI 和本机移动设备
【发布时间】:2013-01-23 17:46:41
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: asp.net wcf asp.net-web-api


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

        李>
      • WCF 使用 DataContractJsonSerializer,它生成的 JSON 可能会给客户端带来问题。具体例子包括datesdictionaries。您可以更改 WCF 使用的序列化程序(参见 SO question),但 ASP.NET Web API 默认使用 JSON.NET,这是高度可配置的。

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

      【讨论】:

      • 第一个原因:这只是你的观点,我个人认为它不丑也不漂亮:)。第二个原因:好!我几乎忘记了 DataContractJsonSerializer 有一些自己的惊喜,我们只是在玩了一段时间后才发现,比如这个:How do you handle Infinity in JSON generated in .NET
      猜你喜欢
      • 2012-10-11
      • 2011-01-23
      • 2015-09-01
      • 2012-07-02
      • 1970-01-01
      • 2017-07-22
      • 2023-03-15
      • 1970-01-01
      • 2018-01-22
      相关资源
      最近更新 更多