asmx 到 WCF 或 Web API

Posted

技术标签:

【中文标题】asmx 到 WCF 或 Web API【英文标题】:asmx to WCF or Web API 【发布时间】:2012-04-27 16:29:48 【问题描述】:

我正在构建一个应用程序,目前我使用 ASMX 构建了一些 Web 服务。最后,应用程序将部署在 azure 上。 Web 服务非常简单,它们所做的只是调用 AppCode 文件夹中的一个类来处理所有工作。

将我的 Web 服务迁移到 WCF 或 Web API 会更好/更容易/更快/更高性能吗?

感谢您的建议。

PS:我想补充一点,Web 服务需要在 HTTPS 中运行。目前,他们使用 HTTP,因为我处于开发模式。

【问题讨论】:

我投票给 ServiceStack - servicestack.net 【参考方案1】:

单线:如果您已经有一个工作代码,并且将其转移到另一种技术有风险,则保留工作代码。

取决于谁在回答。

Web API 包含 HTTP,并为您提供 ASMX 和 WCF 无法实现的灵活性。如果您关心 HTTP、内容协商、媒体类型,并且需要从任何客户端(包括 AJAX)调用您的服务,那么 Web API。

如果您需要能够使用 WS* 安全标准(例如,使用 X509 证书、ADFS 等),可能会更改您的绑定,使用不同的绑定服务于不同的客户端、可扩展性等,请使用 WCF。

如果您已经有一个工作代码,并且您只关心 RPC,并且您的客户总是会使用 ASMX,那么请坚持使用 ASMX。

性能

没有基准,但我的直觉,按降序排列:Web API、ASMX、WCF

更简单

按降序排列:ASMX(因为你知道它)、Web API、WCF

更快的发展

如果你都知道,Web API 和 ASMX,然后是 WCF


PS:学习新技术是件好事。事情的发展方式(因为您已经迁移到 Azure)投资新技术很重要。

【讨论】:

嗨! WS 正在 ASMX 中工作,因为它们正在开发中。我想搬出 ASMX。感谢您提到的安全注意事项;我需要让它们在 HTTPS 中工作。 @frenchie 在这种情况下,我会选择 Web API。 ASMX 服务通过 HTTPS 在 Azure 上运行良好。您只需要添加端点并将其分配给您的证书。我没有投票赞成在生产中使用 ASMX,只是为了让您知道它可以工作。 @Aliostad 我已经在读你的书了。但是有朋友问我:好吧,我也可以用 asmx 返回 json,那么除了自托管和内容协商之外, webapi 有什么好处......?

以上是关于asmx 到 WCF 或 Web API的主要内容,如果未能解决你的问题,请参考以下文章

选择啥? .net 3.5 中的 ASMX Web 服务或 WCF?

Web 服务——WCF 与 ASMX(“标准”)

WCF 服务而不是 ASMX Web 服务?

不同的 WSDL ASMX、WCF Web 服务

像标准 ASMX Web 服务一样查询 WCF

项目中使用WCF替换asmx Web service总结