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

.net Web服务——WCF与ASMX(“标准”),.net,wcf,web-services,visual-studio,asmx,.net,Wcf,Web Services,Visual Studio,Asmx,我正在做一个新项目。与常规的旧式web服务相比,使用WCF web服务有什么好处吗 VisualStudio为这两者提供了模板。有什么区别?利与弊?独自一人的好处是: 没有学习曲线 非常灵活 WCF的优点是: 从长远来看,花费的时间更少 无需编程的交换协议 WCF的一个缺点是:一些静态属性名 总而言之:WCF可以让您专注于编程,但您需要先学习它;-) 我喜欢这样一个事实:编写WCF服务可以很容易地将您的服务从实现中分离出来。您可以编写服务,然后将其托管在IIS、控制台应用程序或Windo

我正在做一个新项目。与常规的旧式web服务相比,使用WCF web服务有什么好处吗


VisualStudio为这两者提供了模板。有什么区别?利与弊?

独自一人的好处是:

  • 没有学习曲线
  • 非常灵活
WCF的优点是:

  • 从长远来看,花费的时间更少
  • 无需编程的交换协议
WCF的一个缺点是:一些静态属性名


总而言之:WCF可以让您专注于编程,但您需要先学习它;-)

我喜欢这样一个事实:编写WCF服务可以很容易地将您的服务从实现中分离出来。您可以编写服务,然后将其托管在IIS、控制台应用程序或Windows服务中;您还可以通过HTTP、net TCP等与它对话。

什么是“常规的老式web服务?”是ASMX服务,还是您也在使用WSE?ASMX服务不是自然可互操作的,不支持WS-*规范,而且ASMX是一种老化非常快的技术。WSE(Web服务增强)服务确实增加了对WS-*的支持,并且可以使其具有互操作性,但WCF旨在取代WSE,因此您应该花时间学习它。我想说的是,除非您的应用程序是一个快速而肮脏的一次性应用程序,否则如果您选择WCF,您将获得巨大的灵活性并最终获得更好的设计。WCF确实有一个超越[WebMethod]属性的学习曲线,但在我看来,学习曲线被过度夸大了,而且它比传统的ASMX服务具有指数级的强大性和经得起未来考验的能力

除非您的时间线无法忍受学习曲线,否则您将在学习WCF时帮自己一个大忙,而不仅仅是坚持使用ASP.NET Web服务。应用程序将继续变得越来越分散和相互连接,WCF是微软平台上分布式计算的未来


两者之间。

Pro for WCF:您不需要web服务器(即IIS)。实际上,您不需要服务器操作系统。

对您的服务实现和交互进行单元测试更容易

以我的经验

WCF

使用它是荒谬的冗长,它与其他微软产品不太兼容,当然,它在微软世界之外也没有被广泛接受

但我的主要问题是它不稳定,有失败的趋势(在某些情况下),需要在使用前对其进行调整

相反

SOAP(又名标准Webservice),它可以工作,易于工作,并且具有广泛的兼容性(JavaJAX无需任何修改即可接受它)


在SOAP中添加身份验证可能有点棘手,但并非不可能。

如果您的项目使用的是framework 4.0,为什么不尝试WebApi呢?它很容易理解,并且使用约定而不是配置

这是一种使用超高速接口构建应用程序的好方法

看看微软的入门视频,它是从WCF数据服务演变而来的


WCF的学习曲线非常大,请不要搞错。是的,通过复制粘贴和填充空白,你可以让服务运行得不太糟糕,但大多数开发人员需要几个月才能理解所有配置和设置的实际功能。大多数开发人员不需要了解所有配置,而且,这在.NET4.0中发生了根本性的变化。我可以保证这是一个陡峭的学习曲线。WCF几乎是拜占庭式的。我已经研究了大约一个月了,我才开始了解它。不同的安全方法、不同类型的数字证书和客户机/服务器验证有很多复杂性。有很多非常好的视频教程。请访问questpond.com。我不记得ASMX有那么令人痛心,但WCF确实看起来很强大,值得付出努力。-1错误信息和未经证实的观点。我只能假设当您说WCF是“详细的”时您正在谈论配置,在这种情况下,您应该开始使用.NET4.0或4.5。如果你想被认真对待,“与其他微软产品不兼容”应该被证实。“但是你把WCF和肥皂做对比,你就失去了所有的可信度。”约翰·桑德斯,所以你无缘无故地欺骗我。羞怯的家伙。不,即使在Net4.0中,wcf仍然是半成品。无论如何,WCF是供应商锁定的。你显然不知道你在说什么。“供应商锁定”显然是胡说八道。你可以通过陈述事实而不是吹毛求疵来纠正我的观点。你可以在许多方面使用WCF:通过http/SOAP,你可以得到一个wsdl,用大多数技术自动生成客户端代码,如果你的服务应该是公共的,这是很整洁的。对于内部服务,net.tcp甚至MSMQ都是一个选项-如果您坚持这样做,您可以锁定自己。我可以用WCF做什么,而用SOAP做不到?。