ASP.NET 中的 Web 服务
Web 服务是可通过标准 Web 协议访问的可编程应用程序逻辑。这些 Web 协议之一是简单对象访问协议 (SOAP)。 SOAP 是 W3C 提交的一份说明(截至 2000 年 5 月),它使用基于标准的技术(用于数据描述的 XML 和用于传输的 HTTP)来编码和传输应用程序数据。
Web 服务的消费者不需要了解用于实现服务的平台、对象模型或编程语言;他们只需要了解如何发送和接收 SOAP 消息(HTTP 和 XML)。
WCF 服务
Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。使用 WCF,您可以将数据作为异步消息从一个服务终结点发送到另一个服务终结点。服务端点可以是 IIS 托管的持续可用服务的一部分,也可以是应用程序中托管的服务。端点可以是从服务端点请求数据的服务的客户端。消息可以像 XML 发送的单个字符或单词一样简单,也可以像二进制数据流一样复杂。
在什么情况下必须使用 WCF
WCF 的特点
- 服务导向。
- 互操作性。
- 多种消息模式。
- 服务元数据。
- 数据合同。
- 安全性。
- 多种传输和编码。
- 可靠和排队的消息。
- 持久消息。
- 交易。
- AJAX 和 REST 支持。
- 可扩展性。
ASP.NET 中的 Web Service 与 WCF Service 的区别
WCF 是 Microsoft 早期所有 Web 服务技术的替代品。它的功能也远远超过传统意义上的“网络服务”。
WCF“Web 服务”是通过 WCF 实现的更广泛远程通信的一部分。您将在 WCF 中获得比通过传统 ASMX 更高程度的灵活性和可移植性,因为 WCF 从头开始设计,总结了 Microsoft 提供的所有不同的分布式编程基础结构。 WCF 中的端点可以通过 SOAP/XML 与通过 TCP/二进制文件进行通信一样容易,并且更改此介质只需一个配置文件 mod。理论上,这可以减少移植或更改业务需求、目标等时所需的新代码量。
ASMX 比 WCF 更早,并且任何 ASMX 可以做到的事情都可以 WCF(以及更多)。基本上,您可以将 WCF 视为试图将在 Microsoft 世界中让两个应用程序进行通信的所有不同方式逻辑地组合在一起; ASMX 只是众多方式中的一种,因此现在归入 WCF 功能的保护伞下。
Web 服务只能通过 HTTP 访问,它可以在无状态环境中工作,其中 WCF 很灵活,因为它的服务可以托管在不同类型的应用程序中。托管 WCF 服务的常见方案是 IIS、WAS、自托管、托管 Windows 服务。
主要区别在于 Web 服务使用 XmlSerializer。但是 WCF 使用 DataContractSerializer,与 XmlSerializer 相比,它的性能更好。
XmlSerializer 将 .NET 类型序列化为 XML 的关键问题
- 只有
Public 字段或 .NET 类型的属性可以转换为 XML。
- 仅限实现
IEnumerable 接口的类。
- 实现了
IDictionary接口的类,比如Hash table,不能序列化。
DataContractSerializer 和 XMLSerializer 的重要区别
-
DataContractSerializer 设计的一个实际好处是性能优于 Xmlserializer。
- XML 序列化不指示该类型的哪些字段或属性被序列化为 XML,而
DataCotractSerializer。
- 明确显示哪些字段或属性被序列化为 XML。
-
DataContractSerializer 可以将HashTable 转换为 XML。
http://www.codeproject.com/Articles/139787/What-s-the-Difference-between-WCF-and-Web-Services