一个asp.net web方法和一个wcf服务有什么区别?

我是.Net新手,不了解其中的差别。 有人能指出我正确的方向吗?

开发ASP.NET Web服务是为了构build使用HTTP上的简单对象访问协议(SOAP)发送和接收消息的应用程序。

WCF用于使.NET Framework应用程序能够与其他软件实体交换消息。 SOAP是默认使用的,但是消息可以是任何格式,并且可以使用任何传输协议传送。

您可以将ASP.NET Web服务视为WCF服务的子集。

这是一个比较两个框架的链接。

知道这些差异是相当容易的。

ASP.NET Web方法被称为ASMX [因为文件扩展名](检查4GuysFromRolla这个,他们有一个很好的教程 )

该技术使您可以将function公开为Web服务,以便您可以随处连接并使用它。 但是… 你不能保护服务器和客户端之间的数据,你可以发送大文件清楚,知道发生了什么,等等…

[注意]您可以使用证书来保护对Web服务的访问,但这很复杂,但通常在ASMX中我们使用用户名/密码。

在WCF中,您处于与Web服务不同的世界中,并且这是.NET中揭示服务的最好技术( 您能看到差别… 服务 !而不是Web服务 ),WCF不需要IIS来运行它可以作为系统服务在服务器上运行,使用控制台环境(如命令行)等,所以我们说WCF是一个服务而不是Web服务。 记住ASMX需要运行IIS。

使用WCF你可以使用SSL来encryption通信(在ASMX中你需要使用WSE -Web服务增强function),你可以发送大文件并安全地(在ASMX中这样做,你需要使用MTOM – 消息传输优化机制)。

你可以设置传输偏好只是改变一行代码,安全性要高得多,等等:)

希望你能得到一个更好的总体概况,但还有更多。

底线:要公开您不需要保护的Web服务,您可以使用ASMX,完全没有问题,但是如果您需要以某种方式保护通信,请在WCF中执行!

链接 : 你可以在这里阅读2个服务之间的一些性能比较

他们是写作服务的两种不同的框架。 WCF通常更加灵活,并为使用的协议,服务托pipe方式和各种安全选项提供了可configuration的选项。 ASMX提供基于SOAP的服务。 通常WCF也是更高性能的 。 一般而言,ASMX更容易使用,通常学习曲线较less。

这是一个关于这个主题的MSDN论坛讨论。 这里是ASMX和WCF的入门页面。

除了上面的回复之外,还创build了WCF来replace.NET 3.0及更高版本中的.NET Remoting。 除了各种格式(如XML和JSON)的SOAP,REST,POX等Web服务外,WCF还提供MSMQ和命名pipe道。 如上所述,ASMX仅提供基于SOAP的XML Web服务。

您需要深入研究.NET Remoting以获取其他types的通信协议。 有关其他信息,您应该检查Pro C#2008和.NET 3.5框架 。 这是一个很好的资源,你可以从以前的书中find涵盖.NET Remoting和其他替代function的章节。

这是一个新的重大差异:微软现在认为ASMXnetworking服务是“传统”技术。 请参阅“ 使用ASP.NET和XML Web服务客户端创build的XML Web服务 ”。

网页服务

  1. 它只能通过HTTP访问
  2. 它在无状态的环境中工作

WCF

WCF是灵活的,因为它的服务可以托pipe在不同types的应用程序中。 以下列出了托pipeWCF服务的几种常见scheme:

  • IIS
  • WAS
  • 自托pipe
  • 托pipeWindows服务

他们是两个不同的东西在一起。 WCF是一个更通用的框架,通过它可以编写一个服务types组件,并以多种方式进行部署(即使是Asp.Net Web服务)。

这里有一个关于这个http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/

我有同样的问题。

我发现“ Microsoft Windows Communication Foundation Step by Step ”一书非常好。

如果您只是想使用WCF来完成传统的Web服务,那么本书的第1章将向您展示如何完成这项工作(编写服务,testing,部署和使用服务)。

它的编写VS2005,但我使用vs2008,发现它更容易。

WCF还有很多,但是这本书是一个很好的开始。

下面列出了Web服务和WCF之间的主要区别。

Web服务 :Web服务是一种应用程序,旨在通过互联网直接与其他应用程序进行交互。

1)[WebService]和[WebMethod]属性定义了一个Web服务和方法。
2)它只能通过HTTP访问。
3)在IIS中托pipe。
4)支持安全服务。
5)不能multithreading。
6)只使用肥皂或XML。
7)System.Xml.serialization名称空间用于序列化

WCF :Windows Communication Foundation(代号Indigo)是用于构build,configuration和部署networking分布式服务的编程平台和运行时系统。

1)[ServiceContract]和[OperationContract]属性定义了一个Web服务和方法。
2)通过HTTP,TCP,MSMQ,P2P,命名pipe道访问
3)托pipe在IIS,自托pipe,WAS和Windows服务。
4)可以通过服务行为类multithreading。
5)System.Runtime.Serialization命名空间用于序列化
6)支持不同types的绑定,如BasicHttpBinding,WSHttpBinding,WSDualHttpBinding等
7)支持安全服务,可靠的消息传递,交易,AJAX和REST支持