Web服务--WCF与ASMX(“标准”)的区别

34

我正在开展一个新项目。选择WCF Web服务与传统的Web服务相比,有什么好处吗?

Visual Studio 提供两种模板。它们之间有何区别?有哪些优缺点?


9
WCF有非常陡峭的学习曲线,这一点毫无疑问。是的,你可以通过复制粘贴和填写空白来运行一个服务,但大多数开发人员需要数月时间才能理解所有配置和设置的实际作用。 - Sander
2
大多数开发人员不需要理解所有的配置,而且,这在 .NET 4.0 中已经发生了根本性的变化。 - John Saunders
我可以证明这是一个陡峭的学习曲线。WCF几乎像拜占庭式迷宫一样复杂。我已经学习了大约一个月,现在才开始理解它。有许多关于不同安全方法、不同类型数字证书和客户端/服务器验证的复杂性。有很多非常好的视频教程。可以在questpond.com上查看。我记不清ASMX是否也像这样令人痛苦,但WCF似乎确实非常强大,并且值得付出努力。 - Guru Josh
7个回答

33
什么是“常规老式网络服务”? ASMX服务,或者您也使用WSE吗? ASMX服务不自然地互操作,不支持WS- *规范,而且ASMX技术正在迅速老化。 WSE(Web Service Enhancements)服务确实增加了对WS- *的支持,并且可以实现互操作性,但是WCF旨在取代WSE,因此您应该花时间学习它。我认为,除非您的应用程序是快速进行的一次性操作,否则如果选择WCF,则会获得巨大的灵活性并最终拥有更好的设计。 WCF除了[WebMethod]属性之外还有一个学习曲线,但我认为这种学习曲线被夸大了,并且它比传统的ASMX服务功能更强大且具备未来性。
除非您的时间安排无法容忍学习曲线,否则学习WCF而不仅仅坚持使用ASP.NET Web服务将使您受益匪浅。应用程序只会变得越来越分布式和相互连接,而WCF是Microsoft平台上分布式计算的未来。 以下是两者之间的比较

9
自己完成所有工作的优点是:
  • 没有学习曲线
  • 非常灵活
WCF的优点是:
  • 长期来看省时间成本更低
  • 无需编程即可切换协议
WCF的一个缺点是:某些静态属性名称可能会非常长 ... 总之,WCF让你专注于编程,但你需要先学习它;-)

3

WCF的优势:您不需要一个Web服务器(如IIS),实际上您也不需要一个服务器操作系统。


2

我喜欢编写WCF服务的事实,因为它使得将服务与实现分离变得容易。您可以编写服务,然后在IIS、控制台应用程序或Windows服务中进行托管;您还可以通过HTTP、net TCP等方式与其通信。


1

对于您的服务实现和交互进行单元测试变得更加容易!


0

-2

根据我的经验

WCF

使用它非常啰嗦,与其他微软产品不太兼容,并且在微软以外的世界并不被广泛接受。

但我最大的问题是它不稳定,在某些情况下容易失败,并且需要在使用之前进行调整。

相反地

使用SOAP(也称为标准Web服务),它可行且易于操作,而且与其他系统兼容性广泛(Java-JAX无需任何修改即可接受)。

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


4
对于错误信息和未经证实的观点给出负面评价。如果你在提到 WCF“冗长”时指的是配置,那么你应该开始使用 .NET 4.0 或 4.5。如果你想让别人认真对待,“不兼容其他 Microsoft 产品”这个观点需要有依据。但是,将 WCF 与 SOAP 相对比会让你失去所有的信誉。 - John Saunders
@John Saunders,你在没有任何理由的情况下对我进行恶意攻击。唉,伙计。即使在net 4.0中,wcf仍然不够完善。无论如何,WCF是供应商锁定的。 - magallanes
1
你显然不知道你在说什么。“供应商锁定”是明显的无稽之谈。你可以通过提供事实而不是发泄来纠正我的观点。 - John Saunders
你可以以多种方式使用WCF:使用http/SOAP,您可以获得一个wsdl文件,自动为大多数技术生成客户端代码,如果您的服务应该是公共的,则非常方便。对于内部服务,net.tcp甚至MSMQ也是一种选择 - 如果您坚持这样做,您可以将其锁定。 - mbx
我可以用WCF做什么,SOAP做不到的? - magallanes

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