我是新手,对.Net不太了解,不知道它们有何区别。能否有人指点一下?
我是新手,对.Net不太了解,不知道它们有何区别。能否有人指点一下?
ASP.NET Web服务是用于使用简单对象访问协议(SOAP)通过HTTP发送和接收消息的应用程序构建的。
WCF用于使.NET Framework应用程序与其他软件实体交换消息。默认情况下使用SOAP,但消息可以采用任何格式,并且可以使用任何传输协议传递。
您可以将ASP.NET Web服务视为WCF服务的子集。
这里是一个比较这两个框架的链接。
区别很容易知道。
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!
这里有一个新的、重要的不同之处:微软现在认为ASMX Web服务是“传统”的技术。请参见“使用ASP.NET和XML Web服务客户端创建的XML Web服务”。
Web服务
WCF
WCF非常灵活,因为它的服务可以托管在不同类型的应用程序中。以下列出了几种常见的托管WCF服务的场景:
以下是 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支持。
我曾经遇到过同样的问题。
我发现书籍Microsoft Windows Communication Foundation Step by Step非常好。
如果你只是想使用WCF来做传统的Web服务,那么该书的第一章将会向你展示如何完成这个过程(编写服务、测试、部署、使用服务)。
虽然该书是针对VS2005编写的,但我在使用VS2008时发现它甚至更容易上手。
当然,WCF还有很多其他方面需要学习,但这本书是一个不错的起点。
它们是两个完全不同的东西。WCF是一个更通用的框架,通过它你可以编写一种服务类型组件,并以多种方式部署它(甚至作为Asp.Net Web Service)。
这里有一个关于此的简短讨论http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/