它应该是WebAPI还是asmx

Mat*_*att 14 asp.net asp.net-mvc web-services asmx asp.net-web-api

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

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

Jup*_*aol 23

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

在发布asp.net Web API之后,ASP.NET MVC框架的未来是什么?

基本上,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服务 - 请先与我联系,我会给你一些指示.

有关更详细的比较:

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