Web服务 – WCF与ASMX(“标准”)
我正在开发一个新项目。 使用WCF Web服务通过常规的旧时尚Web服务有什么好处?
Visual Studio提供了两个模板。 有什么区别? 优点和缺点?
什么是“正规的老式networking服务”? 一个ASMX服务,还是你使用WSE? ASMX服务本身并不具有互操作性,不支持WS- *规范,ASMX是一种非常快速老化的技术。 WSE(Web服务增强)服务增加了对WS- *的支持,并且可以互操作,但是WCF意味着replaceWSE,所以你应该花时间学习它。 我会说,除非你的应用程序是一个快速的肮脏的一次性,否则你将获得巨大的灵活性,如果你selectWCF,将得到一个更好的devise。 WCF 确实拥有超越[WebMethod]属性的学习曲线,但我认为学习曲线过于夸张,而且与传统的ASMX服务相比,它的指数级更强大,而且前途更好。
除非你的时间线根本无法容忍学习曲线,否则你将自学习WCF而不是仅仅使用ASP.NET Web服务。 应用程序将只会继续变得越来越分散和相互关联,WCF是微软平台上分布式计算的未来。
这是两者之间的比较 。
自己做的一切优点是:
- 没有学习曲线
- 非常灵活
WCF的优点是:
- 在较长时间内花费更less的时间
- 切换协议,无需编程
WCF的缺点:一些静态属性名称可能很长 …
总结一下:WCF让你专注于编程,但是你需要先学习它;-)
临WCF:你不需要一个networking服务器(即IIS)。 你其实不需要服务器操作系统。
我喜欢这样一个事实:编写WCF服务可以很容易地将您的服务与实现分开。 您可以编写服务,然后将其托pipe在IIS,控制台应用程序或Windows服务中; 你也可以通过HTTP,networkingTCP等进行通信。
你的服务植入和交互unit testing更容易做!
如果你的项目使用的是框架4.0,为什么不尝试WebApi,这很容易理解,并使用约定configuration。
它是用超高速接口构build应用程序的一个很好的方法
从MS上看video,从WCF数据服务演变而来。
http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api
在我的经验中
WCF
与它一起工作是荒谬的,它与其他微软产品并不完全兼容,当然,它在微软世界之外并不被广泛接受。
但是我的主要问题是它不稳定,趋于失败(在某些情况下),需要调整才能使用。
代替
SOAP(aka标准Web服务),它工作,很容易工作,它是广泛兼容的(Java-JAX接受它没有任何修改)。
在SOAP中添加身份validation可能有点棘手,但并非不可能。