应该是 WebAPI 还是 asmx

2024-04-25

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

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


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

发布asp.net Web API后ASP.NET MVC框架的未来是什么 https://stackoverflow.com/q/11621550/1268570

基本上,微软提供的用于开发Web Services的框架有:

  • ASMX。基于 SOAP 的 XML 服务。

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

  • 网络应用程序接口。基于 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 http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应该是 WebAPI 还是 asmx 的相关文章

随机推荐