asp.net web method和wcf服务之间有什么区别?

58

我是新手,对.Net不太了解,不知道它们有何区别。能否有人指点一下?

9个回答

43

ASP.NET Web服务是用于使用简单对象访问协议(SOAP)通过HTTP发送和接收消息的应用程序构建的。

WCF用于使.NET Framework应用程序与其他软件实体交换消息。默认情况下使用SOAP,但消息可以采用任何格式,并且可以使用任何传输协议传递。

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

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


30

区别很容易知道。

ASP.NET Web Method被称为ASMX [因为文件扩展名] (关于这个,可以查看4GuysFromRolla,他们有一个好教程),使用这种技术可以将函数公开为Web服务,从而可以连接到任何地方并使用它。但是...你无法保护服务器和客户端之间的数据,你可以清晰地发送大文件并知道发生了什么等等...

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

在WCF中,您处于有关Web服务的不同世界,这是.NET中最好的技术来公开服务(您能看到区别...服务!不是Web服务),WCF不需要IIS运行,它可以作为系统服务在服务器上运行,使用控制台环境(如命令行),等等,因此我们说WCF是一种服务而不是Web服务。请记住,ASMX需要IIS来运行。

使用WCF,您可以使用SSL加密通信(要在ASMX中执行此操作,需要使用WSE - Web Services Enhancements),您可以发送大文件并进行安全传输(要在ASMX中执行此操作,需要使用MTOM - Message Transmission Optimization Mechanism)。

您只需更改一行代码即可设置传输偏好设置,安全性更高等等:)

希望您能通过这个获得更好的概述,但还有更多内容。

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

链接: 您可以在此阅读有关两项服务之间性能比较的信息


9
它们是用于编写服务的两个不同框架。WCF通常更加灵活,提供可配置选项来选择使用哪些协议、如何托管服务以及各种安全选项。ASMX提供基于SOAP的服务。一般而言,WCF也更具有性能优势。总体上,ASMX更易于使用,通常学习曲线较低。 这里是有关此主题的MSDN论坛讨论。 以下是ASMXWCF的入门页面。

7
除了上述的回应,WCF被创建来取代.NET 3.0及以上版本中的.NET Remoting。除了SOAP、REST、POX等各种格式的Web服务(例如XML和JSON),WCF还提供MSMQ和Named Pipes。如上所述,ASMX仅提供基于SOAP的XML Web服务。
您需要深入了解.NET Remoting以获取其他类型的通信协议。有关更多信息,您应该查看Pro C#2008和.NET 3.5 Framework。这是一个很好的资源,您可以从之前的书籍中获取覆盖.NET Remoting和其他替换功能的章节。

5

1
+1 正如你之前在其他帖子中提到的,这是一个重要的观点。 - RichardOD
本主题特定于传统技术。现在应使用Windows Communication Foundation(WCF)创建XML Web服务和XML Web服务客户端。 - Simon_Weaver

2

Web服务

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

WCF

WCF非常灵活,因为它的服务可以托管在不同类型的应用程序中。以下列出了几种常见的托管WCF服务的场景:

  • IIS
  • WAS
  • 自托管
  • 托管Windows服务

1

以下是 Web service 和 WCF 之间的主要区别:

Web Service:Web Service 是一种旨在通过互联网直接与其他应用程序交互的应用程序。

1)[WebService] 和 [WebMethod] 属性定义了 Web Service 和方法。
2)只能通过 HTTP 访问。
3)托管在 IIS 中。
4)支持安全服务。
5)不能多线程。
6)仅使用 Soap 或 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支持。


1

我曾经遇到过同样的问题。

我发现书籍Microsoft Windows Communication Foundation Step by Step非常好。

如果你只是想使用WCF来做传统的Web服务,那么该书的第一章将会向你展示如何完成这个过程(编写服务、测试、部署、使用服务)。

虽然该书是针对VS2005编写的,但我在使用VS2008时发现它甚至更容易上手。

当然,WCF还有很多其他方面需要学习,但这本书是一个不错的起点。


1

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