WCF与Web API和本机移动设备

时间:2013-01-23 17:46:42

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

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

最终,我计划构建本机移动应用程序,这些应用程序将使用与Web应用程序相同的Web服务。一切都是平等的,如果我必须在两者之间做出选择,我应该选择哪个选项,以便Web服务可以使用不同的客户端应用程序?

感谢。

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:6)

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

  • WCF网址包含'.svc'扩展名。例如:http://localhost/MyRestService.svc/。这不应该导致客户端出现问题,但这很难看。您可以使用IIS URL重写模块(参见this blog post)删除.svc扩展名,但使用ASP.NET Web API,您首先没有问题。

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

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