应该是Web API vs asmx

时间:2012-07-25 05:06:31

标签: asp.net asp.net-mvc web-services asmx asp.net-web-api

我应该为我的两个简单API使用ASMX服务或ASP.NET Web API吗?

我想在ASP.NET MVC项目中创建两个简单的API。一个接受3个参数(currentUserIDDataTypeActionName)。它返回它们以及它们请求的数据的XML字符串。 API由客户端JavaScript代码使用。另一个API接收XML字符串,并使用服务器端的字符串对数据库执行操作。

3 个答案:

答案 0 :(得分:22)

我刚回答了一个相关的问题:

What is the future of ASP.NET MVC framework after releasing the asp.net Web API

基本上,Microsoft提供的用于开发Web服务的框架是:

  • ASMX。基于SOAP的XML服务。

  • WCF。基于SOAP的Web服务。这些服务是传统ASMX服务的演变,基本上他们专注于将服务本身与传输协议分开。这就是为什么您可以使用多个端点以及多个协议(TCP,HTTP,命名管道,MSMQ,HTTPS)公开相同服务的原因。这种灵活性伴随着配置问题。社区关于WCF的主要抱怨之一是繁琐而广泛的配置

  • WEB API。基于HTTP而不是SOAP。这个新API是一个用于创建服务的新框架。与其他两个前置者的主要区别在于,它基于HTTP而不是SOAP,因此您可以使用以下几种HTTP功能:

    • 它包含非常有意义和描述性的邮件标题 - 表示邮件正文内容类型的标题,解释如何缓存信息的标题,如何保护信息等。
    • 使用动词来定义动作(POST,PUT,DELETE ..)
    • 它包含可用于发送任何内容的正文
    • 它使用URI来识别信息路径(资源)和操作

    WEB API专注于编写服务以通过HTTP公开它们(目前仅在HTTP上)。如果要使用其他协议公开服务,则应考虑使用WCF。

    WEB API基于MVC(如果你想知道它基于MVC的原因,它们很简单)

      

    WCF Web API的另一个目标是整合已知的概念,这些概念可以帮助开发人员克服他们在WCF中遇到的一些缺点,例如巨大的配置,过度使用属性以及不支持测试的WCF基础架构。因此,Web API使用IoC,启用了配置约定,并试图提供更简单的配置环境。

         

    ASP.NET MVC基础架构优雅地处理HTTP请求和响应,并且支持易于创建的控制器,这似乎是创建这种新型服务的正确方法。

考虑以下几点,在WCF或WEB API之间进行选择

  
      
  • 如果您打算创建支持特殊方案的服务 - 单向消息传递,消息队列,双工通信等,那么您最好选择WCF
  •   
  • 如果要创建可在可用时使用快速传输通道的服务,例如TCP,命名管道,甚至UDP(在WCF 4.5中),并且您还希望在所有其他传输不可用时支持HTTP,则你最好使用WCF并使用基于SOAP的绑定和WebHttp绑定。
  •   
  • 如果您想通过HTTP创建面向资源的服务,可以使用HTTP的全部功能 - 使用ETag定义浏览器的缓存控制,版本控制和并发,传递各种内容类型,如图像,文档,HTML页面等,使用URI模板在您的回复中包含任务URI,然后新的Web API是您的最佳选择。
  •   
  • 如果你想创建一个多目标服务,既可以用作HTTP上的面向资源的服务,也可以用作TCP上的RPC式SOAP服务 - 请先与我联系,我会给你一些指示。< / LI>   

有关更详细的比较:

http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

答案 1 :(得分:0)

如果可能的话,我会在mvc4中使用Web Api控制器。您可以返回通用的可相关列表或模型,它会自动将数据输出到请求的任何格式,如xml或json。它非常棒。

答案 2 :(得分:0)

看起来你真的在使用Views做了很多事情,所以我觉得Web API在这一点上会更简洁。