目的是创建一组人们可以重用的Web服务。这些服务主要与后端数据库交互,创建,检索和处理数据。
我们希望公开服务,以便人们可以使用它来创建数据mashup和其他应用程序。
最终用户是可以在我们的域内或域外的网页。对于域外的页面,我们计划发布可配置为检索和显示数据的小部件。
一个要求 - 应用程序在其可以处理的用户数量方面应该具有极高的可扩展性。
我们的代码库是.net,我们正在研究ASPX webmethods(或ASHX),ASMX webmethods和WCF(开始阅读WCF)。
在安全性/访问方面,我发现维护sessionid,会员资格在这三个方面都是可行的。 WCF似乎有点复杂。当我们在aspx中使用web方法完成所有操作时(我稍微调整一下),我无法立即看到asmx的值。
另外,假设使用ASP.NET MVC2,我也可以为这些web方法获取干净的URL。
问题
哪个在性能和可伸缩性方面最有效? 我应该选择WCF还是ASMX的任何理由?
感谢您抽出宝贵时间阅读这篇文章,并为我刚接触.net的天真问题道歉。
编辑我有点明白WCF是要走的路。只是为了理解这些技术的发展,如果有人可以说明为什么aspx webmethod与asmx不同,当两者都能完成类似的事情(除了发现之外)之外,这将是一件好事。可以使aspx webmethods以其他格式(明文,json)返回数据。此外,我们似乎可以使用ashx构建restful服务。再次为天真的问题道歉。
答案 0 :(得分:9)
您应该使用WCF在.Net中开发Web服务。 WCF具有高度可配置性,具有许多安全性,传输协议,序列化,扩展等选项。Raw performance也明显更高。此外,WCF正在积极开发,并且在版本3.5和版本4中添加了许多新功能。还有诸如WCF数据服务和WCF RIA服务之类的变体。 WCF 4.0还有更好的REST和JSON支持,您可以直接在ASP.Net / JQuery中使用。
答案 1 :(得分:3)
ASMX被视为已弃用的技术,由WCF取代。因此,如果您要开始需要公开可重用服务的新开发项目,那么WCF就是您的选择。
答案 2 :(得分:1)
我不一定不同意之前的回答。但是,从不同的角度来看,WFC配置起来很棘手。它需要配置文件中的绑定,端点,数据包大小,大量混淆参数等,并且报告了许多序列化/反序列化问题。此外,WCF是一项相对较新的技术(因此仍然需要使用错误和补丁)。 客户端生成的[Reference.cs]文件可能具有不需要的接口,并且在WSDL中公开的每个公共属性客户端类都使用LINQ to SQL或Entity Framework使用的相同观察者模式生成(OnChanged,OnChanging等),因此这会添加与传统的SOAP Web客户端方式相比,客户端代码有很多不足。 我的建议,如果您不使用远程TCP远程处理或者您不需要远程更改的双向通知机制 - 所有这些都是WCF的非常酷的功能 - 您不需要使用它。