WCF与ASPX WebMethods与ASMX WebMethods的比较

7
意图是创建一组可重用的Web服务。这些服务主要与后端数据库交互,创建、检索和处理数据。
我们想要公开服务,以便人们可以使用它们来创建数据混搭和其他应用程序。
最终用户是网页,可以在我们的域内或域外。对于域外的页面,我们计划发布小部件,配置后可检索和显示数据。
一个要求——应用程序在处理用户数量时应极具可扩展性。
我们的代码库是.NET,我们正在研究ASPX WebMethods(或ASHX)、ASMX WebMethods和WCF(开始阅读有关WCF的资料)。
就安全/访问而言,在所有三个方案中都可以维护SessionID、成员身份。 WCF似乎有点复杂。我无法立即看出为什么当我们可以使用ASPX中的WebMethod(稍加修改)完成所有操作时,还需要ASMX。
此外,假设使用ASP.NET MVC2,我可能也能够为这些WebMethod获得干净的URL。
问题
哪种方案在性能和可扩展性方面最有效?选择WCF或ASMX的原因是什么?
感谢您花时间阅读本帖,并为我新手提出了简单的问题而道歉。
编辑:我有点明白WCF是正确的选择。为了理解技术的发展,如果有人能够阐明为什么ASMX WebMethod与ASPX WebMethod不同,当可以使用两者完成类似的任务(除了发现)时。ASPX WebMethods可用于以其他格式(纯文本、JSON)返回数据。此外,似乎也可以使用ASHX构建RESTful服务。再次对幼稚问题道歉。
3个回答

9
你应该使用WCF来开发.Net中的Web服务。WCF高度可配置,具有许多安全选项、传输协议、序列化、扩展等选项,原始性能也显著提高。此外,WCF正在积极开发中,版本3.5和4中正在添加许多新功能。还有变体,如WCF数据服务和WCF RIA服务。WCF 4.0还具有更好的REST和JSON支持,可以直接在ASP.Net / JQuery中使用。

我一直在想使用WCF的目的是什么,你的回答让我改变了看法。很高兴看到Jquery得到如此多的支持。 - Ives.me
JQuery的支持将会进一步提升。您已经可以获取WCF Web API预发布版本。http://wcf.codeplex.com/wikipage?title=WCF%20jQuery - softveda
ASMX页面同样支持JSON。http://encosia.com/asmx-and-json-common-mistakes-and-misconceptions/ - mattmc3

3

ASMX 被认为是过时的技术,已被 WCF 取代。因此,如果您要开始新的开发工作并需要暴露可重用服务,WCF 是正确的选择。


3
你是否有一个实际的资源可以引用,证明你所说 ASMX 已经被弃用? - mattmc3
1
.NET 3.5 WSDL.exe工具文档链接:(http://msdn.microsoft.com/zh-cn/library/7h3ystb6(VS.90).aspx)。请注意,“本主题针对的是一个遗留技术。现在应该使用Windows Communication Foundation (WCF)来创建XML Web服务和XML Web服务客户端。” - dana

1

我不一定不同意之前的回答。但是从不同的角度来看,WCF 配置起来比较棘手。它需要在你的配置文件中设置绑定、端点、数据包大小和许多令人困惑的参数,并且有许多序列化/反序列化问题被报告。此外,WCF 是一项相对较新的技术(因此仍然容易出现 bug 和需要打补丁的情况)。 客户端生成的 [Reference.cs] 文件可能会有不必要的接口,WSDL 中公开的每个公共属性客户端类都会生成与 LINQ to SQL 或 Entity Framework 使用的相同的观察者模式(OnChanged、OnChanging 等),因此这会给客户端代码增加很多冗余,与传统的 SOAP Web 客户端方式相比。 我的建议是,如果您不使用 TCP 远程调用或者不需要远程更改的双向通知机制,这些都是 WCF 的非常酷的特性,那么您就不需要使用它。


2
-1 您的信息已经过时。除其他外,WCF自2006年以来已经推出。您还可以轻松安排不生成INotifyPropertyChanged,它与远程更改无关。 - John Saunders
无论如何,你都不应该通过WCF传递领域模型。 - Neil Hosey

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