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