asp.net Web方法和wcf服务有什么区别?

时间:2008-10-19 20:34:38

标签: asp.net wcf web-services asmx

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

9 个答案:

答案 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更易于使用,并且通常具有较少的学习曲线。

Here是关于该主题的MSDN论坛讨论。 以下是ASMXWCF的入门页面。

答案 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)

网络服务

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

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

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

答案 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支持