WCF 和传统的 ASP.NET Web 有啥区别
Posted
技术标签:
【中文标题】WCF 和传统的 ASP.NET Web 有啥区别【英文标题】:What are the differences between WCF and traditional ASP.NET WebWCF 和传统的 ASP.NET Web 有什么区别 【发布时间】:2010-11-02 03:27:06 【问题描述】:总的来说,我是 WCF 和 Web 服务的新手。 WCF 带来了哪些改进?谁能给出一个传统 Web 服务和使用 WCF 编写的同一个 Web 服务的并排示例,并指出它们的区别和优势?
重复问题 Moving ASP.net webservices to WCF
【问题讨论】:
重复***.com/questions/406665/… 【参考方案1】:编辑:我想我在寻找基于代码的并排比较的地方找到了答案,甚至更好的是它来自 MSDN:Comparing ASP.NET Web Services to WCF Based on Development
有几个相关的问题:
Difference between aspnet web method and wcf webservice Benfits of using WCF Moving aspnet web services to wcf但是您要求进行并排比较,在这种情况下,我认为 Sam 的 Wcf vs ASMX 博客文章更符合您的需求。
逐字引用(让我知道我是否应该将其保留为链接):
WCF 与 ASMX
协议支持
WCF
HTTP TCP 命名管道 MSMQ 自定义 UDPASMX
仅 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 提供了互操作性的方式,但它不提供或保证端到端的安全性或可靠的通信。
【讨论】:
【参考方案2】:WCF 的范围比 ASP.Net Web 服务要广泛得多。
WCF 可以在任何应用程序中运行。 APS.Net 网络服务仅在 IIS 中运行。 WCF 支持 ReST、Remoting、SOAP、MSMQ 等模型。ASP.Net 仅支持 SOAP WCF 更易于配置。 WCF 支持更具声明性的编程方式。您可以用更少的代码完成更多工作。【讨论】:
WCF 的默认 http 绑定服务于 Soap 1.2 与 asmx 服务 Soap 1.1 实现。【参考方案3】:ASP.NET Web 服务几乎就是这样。网页服务。它们基于 SOAP/WSDL,仅向网络提供服务。
WCF 服务提供了一个更加灵活的框架。例如,根据服务的定义方式,它可以是托管在 IIS 中的 Web 服务,它通过 XML 序列化其数据并使用 REST 模型......或者它可以是托管在它自己的进程中的远程 Windows 服务,并且通过二进制序列化其数据。所有这些都是使用 WCF 中不同的服务/数据协定来实现的。
简而言之...您可以相当轻松地使 WCF 服务看起来与 .NET 2.0 Web 服务几乎相同,但只需稍加工作即可完成更多工作。
【讨论】:
以上是关于WCF 和传统的 ASP.NET Web 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
WCF => MVC 作为 ASP.NET WebServices => ASP.NET Web 应用
在 Azure Service Fabric 中,无状态 Web API 和 ASP.NET Core Web API 之间有啥区别?