14

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

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

4

3 回答 3

25

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

ASP.NET Web API 发布后 ASP.NET MVC 框架的未来是什么

基本上,微软提供的开发 Web 服务的框架有:

  • ASMX。基于 SOAP 的 XML 服务。

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

  • 网页 API。基于不在 SOAP 中的 HTTP。这个新的 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 全部功能的面向资源的服务——使用 ETags 定义浏览器的缓存控制、版本控制和并发,传递各种内容类型,如图像、文档、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

于 2012-07-25T05:21:34.270 回答
1

看来您确实对 Views 做了很多工作,所以我认为 Web API 在这一点上会是更简洁的解决方案。

于 2012-07-25T05:18:14.247 回答
0

如果可能,我会在 mvc4 中使用 Web Api 控制器。您可以返回一个通用的可枚举列表或模型,它会自动将数据输出为请求的任何格式,例如 xml 或 json。它非常惊人。

于 2012-07-25T05:13:52.387 回答