asp.net web 方法和 wcf 服务有啥区别?

Posted

技术标签:

【中文标题】asp.net web 方法和 wcf 服务有啥区别?【英文标题】:What is the difference between an asp.net web method and a wcf service?asp.net web 方法和 wcf 服务有什么区别? 【发布时间】:2010-09-18 00:45:56 【问题描述】:

我是 .Net 新手,不了解其中的区别。有人能指出我正确的方向吗?

【问题讨论】:

【参考方案1】:

ASP.NET Web 服务是为构建应用程序而开发的,这些应用程序使用基于 HTTP 的简单对象访问协议 (SOAP) 发送和接收消息。

WCF 用于使 .NET Framework 应用程序能够与其他软件实体交换消息。默认使用 SOAP,但消息可以是任何格式,并且可以使用任何传输协议进行传送。

您可以将 ASP.NET Web 服务视为 WCF 服务的子集。

Here 是比较两个框架的链接。

【讨论】:

【参考方案2】:

很容易知道它们的区别。

ASP.NET Web 方法被称为 ASMX [因为文件扩展名](请查看 4GuysFromRolla,他们有一个 good tutorial)

该技术使您可以将功能公开为 Web 服务,以便您可以从任何地方连接并使用它。但是... 您无法保护服务器和客户端之间的数据,您可以清楚地发送大文件并知道发生了什么等等...

[注意] 你可以使用证书来保护对 Web 服务的访问,但这很复杂,但通常在 ASMX 中我们使用用户名/密码。

在 WCF 中,您在 Web 服务方面处于不同的世界,这是 .NET 中公开服务的最佳技术(您能看到其中的区别吗... 服务 strong>! 不是 Web 服务),WCF 不需要 IIS 来运行,它可以作为系统服务在服务器上运行,使用控制台环境(如命令行)等,所以我们说WCF 是服务而不是 Web 服务。记住 ASMX 需要 IIS 才能运行。

使用 WCF,您可以使用 SSL 加密通信(要在 ASMX 中执行此操作,您需要使用 WSE - Web Services Enhancements),您可以安全地发送大文件(在 ASMX 中执行此操作您需要使用MTOM - 消息传输优化机制)。

只需更改一行代码即可设置传输首选项,安全性更高,等等 :)

希望您对此有一个更好的总体概述,但还有更多。

底线:要暴露不需要保护的 Web 服务,可以使用 ASMX,完全没问题,但如果需要以某种方式保护通信,请在 WCF 中进行!

链接:you can read here some performance comparative between the 2 services

【讨论】:

【参考方案3】:

它们是用于编写服务的两个不同框架。 WCF 通常更灵活,并为使用的协议、托管服务的方式以及各种安全选项提供可配置选项。 ASMX 提供基于 SOAP 的服务。一般WCF也比较多performant。一般来说,ASMX 更容易使用,而且学习曲线通常较少。

Here 是关于该主题的 MSDN 论坛讨论。 以下是ASMX 和WCF 的入门页面。

【讨论】:

【参考方案4】:

除了上述响应之外,还创建了 WCF 以替换 .NET 3.0 及更高版本中的 .NET Remoting。除了 SOAP、REST、POX 等各种格式的 Web 服务(例如 XML 和 JSON),WCF 还提供 MSMQ 和命名管道。如上所述,ASMX 仅提供基于 SOAP 的 XML Web 服务。

您需要深入研究.NET Remoting 以了解其他类型的通信协议。有关更多信息,您应该查看Pro C# 2008 and the .NET 3.5 Framework。这是一个很好的资源,您可以从以前的书籍中获取有关 .NET Remoting 和其他替换功能的章节。

【讨论】:

【参考方案5】:

这里有一个新的、很大的不同之处:Microsoft 现在将 ASMX Web 服务视为“传统”技术。见“XML Web Services Created Using ASP.NET and XML Web Service Clients”。

【讨论】:

+1 正如您之前在其他帖子中提到的,这是很重要的一点。 这篇文章的标题:“这个主题是特定于旧技术的。现在应该使用 Windows Communication Foundation (WCF) 创建 XML Web 服务和 XML Web 服务客户端。”【参考方案6】:

网络服务

    只能通过 HTTP 访问 在无状态环境下工作

WCF

WCF 很灵活,因为它的服务可以托管在不同类型的应用程序中。下面列出了托管 WCF 服务的几种常见方案:

IIS 是 自托管 托管的 Windows 服务

【讨论】:

【参考方案7】:

它们是两个不同的东西。 WCF 是一个更通用的框架,您可以通过它编写一种服务类型的组件并以多种方式部署它(甚至作为 Asp.Net Web 服务)。

这里有一个关于这个http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/的简短帖子

【讨论】:

【参考方案8】:

我遇到了同样的问题。

我发现Microsoft Windows Communication Foundation Step by Step 这本书真的很好。

如果您只是想使用 WCF 做传统的 Web 服务,那么该书的第 1 章将向您展示如何做到这一点(编写服务、测试、部署、使用服务)。

它是为 VS2005 编写的,但我使用的是 vs2008,发现它更容易。

WCF 还有很多内容,但这本书是一个好的开始。

【讨论】:

【参考方案9】:

Web 服务和 WCF 的主要区别如下。

Web Service:Web Service 是一种旨在通过 Internet 与其他应用程序直接交互的应用程序。

1) [WebService] 和 [WebMethod] 属性定义了一个 Web 服务和方法。 2) 只能通过 HTTP 访问。 3) 托管在 IIS 中。 4) 支持安全服务。 5) 不能多线程。 6) 仅使用 Soap 或 XML。 7) System.Xml.serialization 命名空间用于序列化

WCF:Windows Communication Foundation(代号 Indigo)是一个用于构建、配置和部署网络分布式服务的编程平台和运行时系统。

1) [ServiceContract] 和 [OperationContract] 属性定义了 Web 服务和方法。 2) 通过HTTP、TCP、MSMQ、P2P、命名管道访问 3) 托管在 IIS、自托管、WAS 和 Windows 服务中。 4) 可以通过服务行为类实现多线程。 5) System.Runtime.Serialization 命名空间用于序列化 6) 支持BasicHttpBinding、WSHttpBinding、WSDualHttpBinding等不同类型的绑定。 7) 支持安全服务、可靠消息传递、事务、AJAX 和 REST 支持

【讨论】:

以上是关于asp.net web 方法和 wcf 服务有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web 表单 - 如何异步调用 WCF 异步方法?

我应该通过 ASP.NET MVC 操作还是 WCF 公开 Web 方法?

WCF 服务与 ASP.NET Web Api

选择哪一个:ASP.NET MVC 还是 RESTful WCF?

在 .NET 中开发新的 RESTful Web 服务——我应该从哪里开始? ASP.NET-MVC,WCF?

ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?