【问题标题】:What is the difference between the Visual Studio Options: ASP.NET Web Service and WCF ServiceVisual Studio 选项有什么区别:ASP.NET Web 服务和 WCF 服务
【发布时间】:2010-10-20 21:24:35
【问题描述】:

我知道有两个选项可以用于 Web 服务......显然是 WCF 和 ASP.NET Web 服务。有什么不同?我最近才开始接触 WCF,过去对 Web 服务有一点了解,但我肯定不是专家。

【问题讨论】:

标签: c# asp.net wcf web-services asmx


【解决方案1】:

很容易知道它们的区别。

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

【讨论】:

  • 所以如果我正在开发一个网站,它有不同的层/层 - 数据、服务、网络 - 服务层是与数据层通信的 WCF 服务堆栈,并且在我的网络中层我想使用 jQuery 来完成诸如自动完成之类的事情,只使用最终调用 WCF 服务的 Web 服务就可以了吗?如果我想保护数据,它应该通过 HTTPS 吗?我的理解是否正确。 (我一般是 .net 的新手,以前做过 Java 的东西)
  • 为了让我的示例更清楚一点,我需要从 Web 客户端获取使用 AJAX 检索 JSON 的能力。我已经有一个 ASP.NET AJAX Web 层,与 WCF 层对话。我只希望浏览器与网络层对话。
【解决方案2】:

ASP.NET Web 服务是微软对 Web 服务的首次尝试。

WCF 取代了 ASP.NET Web 服务和 .NET 远程处理。 WCF 提供了一个通用的编程模型,使您能够执行这两种较旧的技术能够做的事情,并且包括对各种协议和安全模型的支持。

如果可以选择,请使用 WCF。

【讨论】:

    【解决方案3】:

    ASP.NET 网络服务还可以——但仅限于托管在 IIS 中的 HTTP,并且还有其他问题。

    WCF 支持更多的传输协议(各种方式的 HTTP、TCP、MSMQ 等),具有更丰富的安全模型(凭据、联合安全),并提供托管选项 - 在 Windows 应用程序或服务中自托管, 在 IIS 或 WAS 等中。

    简而言之:如果您现在开始 - 一定要学习 WCF!

    马克

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 2010-09-18
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2011-11-09
      • 1970-01-01
      相关资源
      最近更新 更多