我是.Net的新手并不了解其中的差异。有人能指出我正确的方向吗?
答案 0 :(得分:43)
ASP.NET Web服务是为构建通过HTTP使用简单对象访问协议(SOAP)发送和接收消息的应用程序而开发的。
WCF用于启用.NET Framework应用程序与其他软件实体交换消息。默认情况下使用SOAP,但消息可以采用任何格式,并使用任何传输协议传送。
您可以将ASP.NET Web服务视为WCF服务的子集。
Here是比较两个框架的链接。
答案 1 :(得分:28)
很容易知道差异。
ASP.NET Web方法被称为ASMX [由于文件扩展名](请查看4GuysFromRolla,它们有good tutorial)
该技术使您将功能公开为Web服务,因此您可以从任何地方连接并使用它。但是...... 你无法保护服务器和客户端之间的数据,你可以清楚地发送大文件,知道发生了什么等等......
[注意]您可以使用证书保护对Web服务的访问,但它很复杂,但通常在ASMX中我们使用username / passsword。
在WCF中,您处于Web服务的不同世界,这是.NET中用于公开服务的最佳技术(您能看到差异...... 服务!不 Web服务),WCF不需要运行IIS,它可以作为系统服务在服务器上运行,使用控制台环境(如命令行)等,所以我们说WCF是服务而非Web服务。请记住,ASMX需要运行IIS。使用WCF,您可以使用SSL加密通信(要在ASMX中执行此操作,您需要使用 WSE - Web服务增强功能),您可以安全地发送大文件(在ASMX中执行此操作)您需要使用 MTOM - 消息传输优化机制)。
您可以设置传输首选项只需更改一行代码,安全性更高等等:)
希望您对此有更好的总体概述,但还有更多。
底线:要公开您不需要保护的Web服务,您可以使用ASMX,完全没问题,但如果您需要以某种方式保护通信,请在WCF中执行此操作!
链接:you can read here some performance comparative between the 2 services
答案 2 :(得分:9)
它们是用于编写服务的两个不同框架。 WCF通常更灵活,并为使用的协议,托管服务的方式和各种安全选项提供可配置选项。 ASMX提供基于SOAP的服务。通常WCF也更performant。一般而言,ASMX更易于使用,并且通常具有较少的学习曲线。
答案 3 :(得分:7)
除了上述响应之外,还创建了WCF以取代.NET 3.0及更高版本中的.NET Remoting。除了各种格式的SOAP,REST,POX等Web服务(例如XML和JSON)之外,WCF还提供MSMQ和命名管道。如上所述,ASMX仅提供基于SOAP的XML Web服务。
对于其他类型的通信协议,您需要深入研究.NET Remoting。有关其他信息,请查看Pro C# 2008 and the .NET 3.5 Framework。这是一个很好的资源,您可以从以前的书籍中获取涵盖.NET Remoting和其他替换功能的章节。
答案 4 :(得分:4)
这是一个新的,重大的差异:微软现在认为ASMX Web服务是“遗留”技术。请参阅“XML Web Services Created Using ASP.NET and XML Web Service Clients”。
答案 5 :(得分:2)
网络服务
WCF
WCF非常灵活,因为它的服务可以托管在不同类型的应用程序中。以下列出了托管WCF服务的几种常见方案:
答案 6 :(得分:1)
它们是两个不同的东西。 WCF是一个更通用的框架,通过它您可以编写一个服务类型组件并以多种方式部署它(即使是作为Asp.Net Web服务)。
以下是关于此http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/
的简短帖子答案 7 :(得分:1)
我遇到了同样的问题。
我发现这本书Microsoft Windows Communication Foundation Step by Step非常好。
如果只是希望使用WCF进行传统的Web服务,那么该书的第1章将向您展示如何做到这一点(编写服务,测试,部署,使用服务)。 / p>
它是为VS2005编写的,但我使用的是vs2008,发现它更容易。
WCF还有很多,但这本书是一个好的开始。
答案 8 :(得分:1)
Web服务和WCF之间的主要差异如下所示。
Web服务:Web服务是一种旨在通过互联网直接与其他应用程序交互的应用程序。
1)[WebService]和[WebMethod]属性定义了一个Web服务和方法
2)只能通过HTTP访问
3)在IIS中托管
4)支持安全服务
5)不能多线程。
6)仅使用肥皂或XML
7)System.Xml.serialization名称空间用于序列化
WCF :Windows Communication Foundation(代号为Indigo)是一个编程平台和运行时系统,用于构建,配置和部署网络分布式服务。
1)[ServiceContract]和[OperationContract]属性定义了Web服务和方法
2)通过HTTP,TCP,MSMQ,P2P,命名管道访问
3)在IIS,自托管,WAS和Windows服务中托管
4)可以通过服务行为类进行多线程
5)System.Runtime.Serialization命名空间用于序列化
6)支持不同类型的绑定,如BasicHttpBinding,WSHttpBinding,WSDualHttpBinding等。
7)支持安全服务,可靠的消息传递,事务,AJAX和REST支持