WCF和传统ASP.NET Web之间有什么区别

时间:2009-06-11 13:46:32

标签: wcf web-services

我是WCF和Web服务的新手。 WCF带来了哪些改进?任何人都可以提供传统Web服务的并排示例以及使用WCF编写的同一个示例并指出差异和优势吗?


重复的问题 Moving ASP.net webservices to WCF

3 个答案:

答案 0 :(得分:5)

编辑:想想我找到了你在哪里寻找基于代码的基于代码的比较的答案,甚至更好的是来自MSDN:Comparing ASP.NET Web Services to WCF Based on Development

有几个相关的问题:

然而,您要求进行并排比较,在这种情况下,我认为Sam的Wcf vs ASMX博客文章更符合您的需求。

引用ad-verbatim(如果我将其留作链接,请告诉我):

  

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通过提供各种实例化选项(如Singleton,私有会话,每次调用)为您提供灵活性。
  •   
  • ASMX提供了互操作性的方式,但它不提供或保证端到端的安全性或可靠的通信。
  •   

答案 1 :(得分:3)

WCF的范围远远超过ASP.Net webservices。

  • WCF可以在任何应用程序中运行。 APS.Net webservices仅在IIS中运行。
  • WCF支持ReST,Remoting,SOAP,MSMQ等模型.ASP.Net仅支持SOAP
  • WCF更易于配置。
  • WCF支持更具说明性的编程方式。您可以使用更少的代码完成更多工作。

答案 2 :(得分:3)

ASP.NET Web服务就是这样。网页服务。它们基于SOAP / WSDL,仅向Web提供服务。

WCF服务提供了更灵活的框架。例如,根据服务的定义方式,它可以是IIS中托管的Web服务,它通过XML序列化其数据并使用REST模型......或者它可以是托管在其自己的进程中的远程Windows服务,通过二进制序列化其数据。所有这些都是使用WCF中的不同服务/数据合同来实现的。

简而言之......您可以非常轻松地使WCF服务看起来与.NET 2.0 Web服务几乎完全相同,但只需要做一点工作,您就可以做得更多。