【发布时间】:2010-09-18 00:45:56
【问题描述】:
我是 .Net 新手,不了解其中的区别。有人能指出我正确的方向吗?
【问题讨论】:
标签: asp.net wcf web-services asmx
我是 .Net 新手,不了解其中的区别。有人能指出我正确的方向吗?
【问题讨论】:
标签: asp.net wcf web-services asmx
ASP.NET Web 服务是为构建应用程序而开发的,这些应用程序使用基于 HTTP 的简单对象访问协议 (SOAP) 发送和接收消息。
WCF 用于使 .NET Framework 应用程序能够与其他软件实体交换消息。默认使用 SOAP,但消息可以是任何格式,并且可以使用任何传输协议进行传送。
您可以将 ASP.NET Web 服务视为 WCF 服务的子集。
Here 是比较两个框架的链接。
【讨论】:
很容易知道它们的区别。
ASP.NET Web 方法被称为 ASMX [因为文件扩展名](请查看 4GuysFromRolla,他们有一个 good tutorial)
该技术使您可以将功能公开为 Web 服务,以便您可以从任何地方连接并使用它。但是... 您无法保护服务器和客户端之间的数据,您可以清楚地发送大文件并知道发生了什么等等...
[注意] 你可以使用证书来保护对 Web 服务的访问,但这很复杂,但通常在 ASMX 中我们使用用户名/密码。
在 WCF 中,您在 Web 服务方面处于不同的世界,这是 .NET 中公开服务的最佳技术(您能看到其中的区别吗... 服务 strong>! 不是 Web 服务),WCF 不需要 IIS 来运行,它可以作为系统服务在服务器上运行,使用控制台环境(如命令行)等,所以我们说WCF 是服务而不是 Web 服务。记住 ASMX 需要 IIS 才能运行。
使用 WCF,您可以使用 SSL 加密通信(要在 ASMX 中执行此操作,您需要使用 WSE - Web Services Enhancements),您可以安全地发送大文件(在 ASMX 中执行此操作您需要使用MTOM - 消息传输优化机制)。
只需更改一行代码即可设置传输首选项,安全性更高,等等 :)
希望您对此有一个更好的总体概述,但还有更多。
底线:要暴露不需要保护的 Web 服务,可以使用 ASMX,完全没问题,但如果需要以某种方式保护通信,请在 WCF 中进行!
链接:you can read here some performance comparative between the 2 services
【讨论】:
它们是用于编写服务的两个不同框架。 WCF 通常更灵活,并为使用的协议、托管服务的方式以及各种安全选项提供可配置选项。 ASMX 提供基于 SOAP 的服务。一般WCF也比较多performant。一般来说,ASMX 更容易使用,而且学习曲线通常较少。
【讨论】:
除了上述响应之外,还创建了 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 和其他替换功能的章节。
【讨论】:
这里有一个新的、很大的不同之处:Microsoft 现在将 ASMX Web 服务视为“传统”技术。见“XML Web Services Created Using ASP.NET and XML Web Service Clients”。
【讨论】:
网络服务
WCF
WCF 很灵活,因为它的服务可以托管在不同类型的应用程序中。下面列出了托管 WCF 服务的几种常见方案:
【讨论】:
它们是两个不同的东西。 WCF 是一个更通用的框架,您可以通过它编写一种服务类型的组件并以多种方式部署它(甚至作为 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 章将向您展示如何做到这一点(编写服务、测试、部署、使用服务)。
它是为 VS2005 编写的,但我使用的是 vs2008,发现它更容易。
WCF 还有很多内容,但这本书是一个好的开始。
【讨论】:
Web 服务和 WCF 的主要区别如下。
Web Service:Web Service 是一种旨在通过 Internet 与其他应用程序直接交互的应用程序。
1) [WebService] 和 [WebMethod] 属性定义了一个 Web 服务和方法。
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 支持
【讨论】: