【发布时间】:2010-10-20 21:24:35
【问题描述】:
我知道有两个选项可以用于 Web 服务......显然是 WCF 和 ASP.NET Web 服务。有什么不同?我最近才开始接触 WCF,过去对 Web 服务有一点了解,但我肯定不是专家。
【问题讨论】:
标签: c# asp.net wcf web-services asmx
我知道有两个选项可以用于 Web 服务......显然是 WCF 和 ASP.NET Web 服务。有什么不同?我最近才开始接触 WCF,过去对 Web 服务有一点了解,但我肯定不是专家。
【问题讨论】:
标签: c# asp.net wcf web-services asmx
很容易知道它们的区别。
ASP.NET Web 方法被称为 ASMX [因为文件扩展名](请查看 4GuysFromRolla,他们有一个 good tutorial)
这项技术使您可以将方法公开为 Web 服务,以便您可以从任何地方连接它(到 WS)并使用它(方法)。但是... 您无法保护服务器和客户端之间的数据,例如,您可以以清除模式发送大文件等...
[注意] 您可以使用证书来保护对 Web 服务的访问,但这很痛苦并且相当复杂,通常在 ASMX 中我们使用用户名/密码来授予对方法的访问权限(再次......纯文本!)
在 WCF 中,您处于关于 Web 服务的不同世界,这是 .NET(迄今为止)中公开服务的最佳技术(您能看到其中的区别吗.. . 服务!不是 Web 服务),WCF 不需要 IIS 来运行,它可以在服务器上作为系统服务运行,使用控制台环境(如命令行)、TCP/IP 模式等,所以我们说 WCF 是 Service,而不是 Web Service。请记住,ASMX 需要 IIS 才能运行,并且只能在 Web 服务器中运行。
使用 WCF,您可以使用 SSL 来加密通信(在 ASMX 中,您需要使用 WSE - Web 服务增强功能)并且它很容易实现,您可以发送大文件并且安全(要在 ASMX 中做到这一点,您需要使用 MTOM - 消息传输优化机制)。
您可以只更改一行代码来设置传输首选项,或者如果您愿意,甚至可以更改 XML 配置文件,安全性要高得多,等等 :)
希望您对此有一个更好的总体概述,但还有更多。
底线:要暴露不需要保护的 Web 服务,可以使用 ASMX,完全没问题,但如果需要以某种方式保护通信,请在 WCF 中进行!
链接:you can read here some performance comparative between the 2 services
【讨论】:
ASP.NET Web 服务是微软对 Web 服务的首次尝试。
WCF 取代了 ASP.NET Web 服务和 .NET 远程处理。 WCF 提供了一个通用的编程模型,使您能够执行这两种较旧的技术能够做的事情,并且包括对各种协议和安全模型的支持。
如果可以选择,请使用 WCF。
【讨论】:
ASP.NET 网络服务还可以——但仅限于托管在 IIS 中的 HTTP,并且还有其他问题。
WCF 支持更多的传输协议(各种方式的 HTTP、TCP、MSMQ 等),具有更丰富的安全模型(凭据、联合安全),并提供托管选项 - 在 Windows 应用程序或服务中自托管, 在 IIS 或 WAS 等中。
简而言之:如果您现在开始 - 一定要学习 WCF!
马克
【讨论】: