Asp.net WCF vs WebAPI和本机移动设备

Asp.net WCF vs WebAPI和本机移动设备,asp.net,wcf,asp.net-web-api,Asp.net,Wcf,Asp.net Web Api,我一直在开发一个完全基于ajax的单页web应用程序,现在我正在开发ASMX的web服务。web服务使用JSON数据。对于这个版本,我知道我需要升级到WCF或WebAPI 最终,我计划构建本机移动应用程序,这些应用程序将与web应用程序使用相同的web服务。在所有条件相同的情况下,如果我必须在两者之间进行选择,我应该选择哪一个选项,以便web服务可以与不同的客户端应用程序一起工作 谢谢。如果您的应用程序被设计为只能由不同平台的移动设备访问,这意味着您必须找到所有这些平台的共同点。所以,换句话说,

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

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


谢谢。

如果您的应用程序被设计为只能由不同平台的移动设备访问,这意味着您必须找到所有这些平台的共同点。所以,换句话说,如果互操作性是您关心的问题,那么您将关注一种所有平台都可以使用的独特通信技术

JSON+REST似乎是当今许多平台的共同点,当然包括移动平台。如果这是您将实现的唯一通信技术,那么WebAPI似乎是显而易见的选择


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

我使用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重写模块来删除.svc扩展名,请参见,但是使用ASP.NET Web API,您首先不会遇到问题

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


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

第一个原因:这只是你的观点,我个人认为它既不丑陋也不漂亮:。第二个理由:很好!我几乎忘记了DataContractJsonSerializer本身也有一些惊喜,我们只是在玩了一段时间后才发现,比如: