56

我是 .Net 的新手,不明白其中的区别。有人可以指出我正确的方向吗?

4

9 回答 9

43

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

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

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

是比较两个框架的链接。

于 2008-10-19T20:45:36.607 回答
29

很容易知道这些差异。

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

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

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

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

使用 WCF,您可以使用 SSL 加密通信(要在 ASMX 中执行此操作,您需要使用WSE - Web 服务增强功能),您可以安全地发送大文件(要在 ASMX 中执行此操作,您需要使用MTOM - 消息传输优化机制)。

您只需更改一行代码即可设置传输首选项,安全性要高得多,等等 :)

希望您对此有一个更好的总体概述,但还有更多。

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

链接您可以在此处阅读这两种服务之间的一些性能比较

于 2008-10-19T21:15:02.570 回答
9

它们是用于编写服务的两种不同框架。WCF 通常更灵活,并为使用的协议、托管服务的方式和各种安全选项提供可配置选项。ASMX 提供基于 SOAP 的服务。通常 WCF 的性能也更高。一般来说,ASMX 更易于使用,并且学习曲线通常较少。

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

于 2008-10-19T20:38:49.150 回答
7

除了上述响应之外,还创建了 WCF 以替换 .NET 3.0 及更高版本中的 .NET Remoting。除了 SOAP、REST、POX 等各种格式的 Web 服务(例如 XML 和 JSON),WCF 还提供 MSMQ 和命名管道。如上所述,ASMX 仅提供基于 SOAP 的 XML Web 服务。

对于其他类型的通信协议,您需要深入研究.NET Remoting 。有关其他信息,您应该查看Pro C# 2008 和 .NET 3.5 Framework。这是一个很好的资源,您可以从以前的书籍中获得有关 .NET Remoting 和其他替换功能的章节。

于 2008-10-19T21:18:50.690 回答
5

这是一个新的、很大的区别:微软现在认为 ASMX Web 服务是“遗留”技术。请参阅“使用 ASP.NET 和 XML Web 服务客户端创建的 XML Web 服务”。

于 2009-07-18T05:41:55.100 回答
2

网页服务

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

WCF

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

  • IIS
  • 曾是
  • 自托管
  • 托管 Windows 服务
于 2010-06-15T09:43:34.030 回答
1

它们是两种不同的东西。WCF 是一个更通用的框架,您可以通过它编写一个服务类型组件并以多种方式部署它(甚至作为 Asp.Net Web 服务)。

这是关于此http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/的简短主题

于 2008-10-19T20:45:53.877 回答
1

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

Web 服务:Web 服务是一种旨在通过 Internet 与其他应用程序直接交互的应用程序。

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

于 2014-04-12T08:47:07.367 回答
1

我有同样的问题。

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

如果你只是想使用 WCF 做传统的 web 服务,那么该书的第 1 章将向你展示如何做到这一点(编写服务、测试、部署、使用服务)。

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

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

于 2009-06-21T01:26:36.447 回答