我是 .Net 的新手,不明白其中的区别。有人可以指出我正确的方向吗?
9 回答
ASP.NET Web 服务是为构建应用程序而开发的,这些应用程序使用基于 HTTP 的简单对象访问协议 (SOAP) 发送和接收消息。
WCF 用于使 .NET Framework 应用程序能够与其他软件实体交换消息。默认情况下使用 SOAP,但消息可以采用任何格式,并且可以使用任何传输协议进行传送。
您可以将 ASP.NET Web 服务视为 WCF 服务的子集。
这是比较两个框架的链接。
很容易知道这些差异。
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中进行!
它们是用于编写服务的两种不同框架。WCF 通常更灵活,并为使用的协议、托管服务的方式和各种安全选项提供可配置选项。ASMX 提供基于 SOAP 的服务。通常 WCF 的性能也更高。一般来说,ASMX 更易于使用,并且学习曲线通常较少。
除了上述响应之外,还创建了 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 和其他替换功能的章节。
这是一个新的、很大的区别:微软现在认为 ASMX Web 服务是“遗留”技术。请参阅“使用 ASP.NET 和 XML Web 服务客户端创建的 XML Web 服务”。
网页服务
- 只能通过 HTTP 访问
- 它在无状态环境中工作
WCF
WCF 很灵活,因为它的服务可以托管在不同类型的应用程序中。下面列出了托管 WCF 服务的几种常见方案:
- IIS
- 曾是
- 自托管
- 托管 Windows 服务
它们是两种不同的东西。WCF 是一个更通用的框架,您可以通过它编写一个服务类型组件并以多种方式部署它(甚至作为 Asp.Net Web 服务)。
这是关于此http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/的简短主题
下面列出了 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 支持
我有同样的问题。
我发现Microsoft Windows Communication Foundation Step by Step这本书非常好。
如果你只是想使用 WCF 做传统的 web 服务,那么该书的第 1 章将向你展示如何做到这一点(编写服务、测试、部署、使用服务)。
它是为 VS2005 编写的,但我使用的是 vs2008,发现它更容易。
WCF 还有很多其他内容,但这本书是一个好的开始。