【发布时间】:2010-11-02 03:27:06
【问题描述】:
总的来说,我是 WCF 和 Web 服务的新手。 WCF 带来了哪些改进?谁能给出一个传统 Web 服务和使用 WCF 编写的同一个 Web 服务的并排示例,并指出它们的区别和优势?
【问题讨论】:
标签: wcf web-services
总的来说,我是 WCF 和 Web 服务的新手。 WCF 带来了哪些改进?谁能给出一个传统 Web 服务和使用 WCF 编写的同一个 Web 服务的并排示例,并指出它们的区别和优势?
【问题讨论】:
标签: wcf web-services
编辑:我想我在寻找基于代码的并排比较的地方找到了答案,甚至更好的是它来自 MSDN:Comparing ASP.NET Web Services to WCF Based on Development
有几个相关的问题:
但是您要求进行并排比较,在这种情况下,我认为 Sam 的 Wcf vs ASMX 博客文章更符合您的需求。
逐字引用(让我知道我是否应该将其保留为链接):
WCF 与 ASMX
协议支持
WCF
- HTTP
- TCP
- 命名管道
- MSMQ
- 自定义
- UDP
ASMX
- 仅 HTTP
托管
ASMX
- 只能使用 IIS 上的 HttpRuntime 托管。
WCF
- WCF 组件可以托管在 .NET 3.0 中的任何类型的环境中,例如控制台应用程序、Windows 应用程序或 IIS。
- WCF 服务被称为“服务”而不是 Web 服务,因为您可以在没有 Web 服务器的情况下托管服务。
- 自托管服务使您可以灵活地使用 HTTP 以外的传输方式。
WCF 向后兼容性
- WCF 的目的是为分布式应用程序提供统一的编程模型。
- 向后兼容性
- WCF 采用现有技术堆栈的所有功能,而不依赖其中任何一个。
- 使用这些早期技术构建的应用程序将继续在安装了 WCF 的系统上正常运行。
- 现有应用程序可以使用 WCF 进行升级
- 新的 WCF 事务应用程序将与基于 System.Transactions 构建的现有事务应用程序一起使用
WCF 和 ASMX 集成
- WCF 可以使用 WS-* 或 HTTP 绑定与 ASMX 页面进行通信
ASMX 的局限性:
- ASMX 页面不会告诉您如何通过传输传递它以及如何使用特定类型的安全性。这是 WCF 显着增强的功能。
- ASMX 与 HTTP 运行时紧密耦合,并且依赖 IIS 来托管它。 WCF 可以由任何能够承载 .NET Framework 3.0 的 Windows 进程承载。
- ASMX 服务在每次调用的基础上进行实例化,而 WCF 通过提供各种实例化选项(例如单例、私人会话、每次调用)为您提供了灵活性。
- ASMX 提供了互操作性的方式,但它不提供或保证端到端的安全性或可靠的通信。
【讨论】:
WCF 的范围比 ASP.Net Web 服务要广泛得多。
【讨论】:
ASP.NET Web 服务几乎就是这样。网页服务。它们基于 SOAP/WSDL,仅向网络提供服务。
WCF 服务提供了一个更加灵活的框架。例如,根据服务的定义方式,它可以是托管在 IIS 中的 Web 服务,它通过 XML 序列化其数据并使用 REST 模型......或者它可以是托管在它自己的进程中的远程 Windows 服务,并且通过二进制序列化其数据。所有这些都是使用 WCF 中不同的服务/数据协定来实现的。
简而言之...您可以相当轻松地使 WCF 服务看起来与 .NET 2.0 Web 服务几乎相同,但只需稍加工作即可完成更多工作。
【讨论】: