.NET 4.0仍然支持asmx吗?

10
  1. 我在VS2010中打开了我的.NET 2.0 ASMX webservice,并升级到.NET4.0。如果我不将代码更改为WCF格式,仅运行我的ASMX,我是否仍然可以在.NET 4.0下运行旧的ASMX服务?这样行得通吗?
  2. 我的web.config文件也有WSE设置,会发生什么情况?
  3. WCF/net4.0不支持附件,我需要将我的asmx webmethod更改为在body中返回数据集,这样行得通吗?
  4. 我尝试在.NET 4.0中使用数据集作为附件来运行现有的asmx服务,结果它可以正常工作?
  5. 我可以看到在.NET 2010中可以添加asmx文件?它们仍然被支持吗?

为什么问题#4是一个问题?“我尝试了一些东西,它起作用了”是一个陈述。为什么问题#5是一个问题?如果你可以在.Net 2010中添加它们,那么它们是被支持的。 - user47589
@ Yodaj007,.net 4.0已经取代了WS/WSE,转而使用WCF。这对我来说意味着没有asmx和附件(我可能理解有误)。但是,将.net2.0 VS2005项目迁移到VS2010 .net4.0后,它可以像原来一样工作(使用WSE和附件),这就是令人困惑的地方。 - Gauls
"附件"今天几乎没什么人支持。相反,使用WCF支持的MTOM。 - John Saunders
3个回答

13

是的,你也可以在.NET 4.0中使用ASMX。


引用Dave Ward在他在Encosia上发表的评论回复中的话题名为ASMX and JSON – Common mistakes and misconceptions

我认为WCF在能够利用其优势的情况下非常棒,比如当你可以使用tcpBinding模式时。然而,WCF的复杂性使得它很难被认真考虑用于简单的AJAX回调功能,因为已经存在更好的针对性更强、更成熟的解决方案。

即使在.NET 4中,ASMX也绝不会被弃用或过时。这实际上是我将要在本系列中涵盖的误解之一。


这是否意味着我可以继续使用现有的ASMX文件,因为它将数据集作为附件传递,到目前为止,在我的开发环境中我没有遇到任何错误。我有什么遗漏吗? - Gauls
如果Ward先生认为创建一个.NET 4.0的WCF服务很复杂,那么他可能从未尝试过。相反,灵活性只有在需要使用它时才会显现出来。 - John Saunders
@JohnSaunders: :) 必须承认,与 ASMX 相比,WCF 相当复杂。但是它非常强大。 - naveen
@andreapier "微软官方并没有废弃 WCF 或 ASMX,也没有将其淘汰。您仍然可以使用最新版本的 Visual Studio 添加它们。" (https://forums.asp.net/post/6249811.aspx)但是另一方面,ASMX Web 服务依赖于 .Net Framework 4.5,并且“正如之前宣布的那样,自2016年1月12日起,微软将不再为 .NET 4、4.5 和 4.5.1 框架提供安全更新、技术支持或热修复”(https://devblogs.microsoft.com/dotnet/support-ending-for-the-net-framework-4-4-5-and-4-5-1/)。 - Göran Roseen
1
目前Microsoft推荐使用gRPC(Protobuf)代替ASMX或WCF。 - rfcdejong
显示剩余2条评论

3

ASMX Web Services属于.NET框架生命周期的一部分。.NET框架4.0和4.5支持ASMX Web Services。微软建议不要再使用ASMX创建新代码,正如之前的答案所指出的那样。


2
引用自Microsoft

本主题针对传统技术。现在应使用Windows Communication Foundation创建XML Web服务和XML Web服务客户端。

请根据自己的理解决定其含义。
WCF完全取代了ASMX Web服务。那些抱怨WCF复杂性的人没有认真看待它。尝试创建一个新的WCF服务并查看模板创建的“hello world”服务中实际的代码,你会发现它与ASMX模板创建的只有一个操作相比稍微复杂一些,因为它包含了两个操作。
然而,请不要误解WSE。它已经过时了。尽快停止使用它,并且不要使用WSE开发任何新代码。
不要让任何人说服你什么都没变,确实发生了变化。ASMX已被一种更好、更强大和更灵活的东西所取代。

1
抱怨WCF复杂性的人没有注意到。请阅读上面标记为已回答的帖子。 - Karlth
1
@karith,使用WCF和“添加服务引用”通过http或https访问简单的SOAP服务非常容易。在WCF中创建这样的服务也非常容易,因为默认设置会为您处理配置。 - John Saunders
@Karlth 我认为现在掌握稍微复杂一些的服务平台技术,与一年后被困在过时、陈旧且不受支持的平台之间的权衡是明显的。此外,那是2011年的事了。WCF简化了创建服务和客户端的过程。 - TSmith
@TSmith 我认为这取决于你的舒适度。如果你使用 ASMX Web Services 并且它们能够正常工作,最好继续使用它们并花时间解决软件本应解决的问题,而不是花时间追逐新事物。用户不会在意,技术上也99.9%的情况下不会有任何影响。 - Karlth
1
@Karlth 不是因为你“熟悉”而继续使用 ASMX 就更好。如果每个人都“舒适”,那么为什么不继续使用 .Net 1.0 呢?WCF 不是一个耀眼的新东西。它已经存在了14年(在发帖时已经5年了)。 WSE 已被微软标记为过时(9年没有更新)。 微软表示,如果您需要构建基于 SOAP 的服务,并且正在使用 .Net 3.0 或更高版本,请勿使用 ASMX,而要使用 WCF。您的 ASMX 服务平台将落后,并面临安全风险,无法支持 Web 服务技术领域的变化。 - TSmith
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接